Wayne Gakuo's Avatar

Wayne Gakuo

@waynegakuo.bsky.social

Frontend Engineer | GDE for Angular | Lead for Angular Kenya | Lead for GDG Pwani

433 Followers  |  41 Following  |  3 Posts  |  Joined: 04.07.2023
Posts Following

Posts by Wayne Gakuo (@waynegakuo.bsky.social)

Amazing group of people to be with. All my amazing friends in a single picture  @laforge_toma @prodromouf maina and @wayne_gakuo  #googleconnectberlin

Amazing group of people to be with. All my amazing friends in a single picture @laforge_toma @prodromouf maina and @wayne_gakuo #googleconnectberlin

Amazing group of people to be with. All my amazing friends in a single picture
@laforge_toma @prodromouf maina and @wayne_gakuo
#googleconnectberlin

26.06.2025 07:42 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Preview
Angular’s httpResource: Reactive Data Fetching with Signals Angular v19.2 introduced httpResource, a new experimental API poised to redefine how we handle HTTP data retrieval. By integrating directly…

Angular's httpResource: Reactive Data Fetching with Signals
paul-chesa.medium.com/angulars-htt...

13.06.2025 09:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Build A Full-Stack Application With AnalogJS You’ve probably heard the Vue crowd singing praises about Nuxt, and the React folks wouldn’t dare...

Build A Full-Stack Application With AnalogJS #angular

02.05.2025 14:14 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

πŸ—“οΈ The #IntelliJIDEAConf 2025 agenda is here! Explore sessions on Java, Kotlin, AI, Spring Boot, Gradle, and more. Get ready to learn from the best!
Register now and plan your experience πŸ‘‰ jb.gg/t5ytt9

23.04.2025 08:01 β€” πŸ‘ 17    πŸ” 10    πŸ’¬ 0    πŸ“Œ 0
Post image

🐒 In a few hours I’ll be speaking at the @angular-community.bsky.social Meetup series on testing β€” and yes, the official theme is Turtle Power!

I’m covering:
βœ”οΈ Basics
βœ”οΈ Async
βœ”οΈ Mocks & fakes

πŸ’₯ Cover by ChatGPT might be overkill, but I stand by the tests πŸ˜„
πŸ”— angularcommunity.net/events

21.04.2025 13:24 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
GΜΆoΜΆoΜΆgΜΆlΜΆeΜΆr̢… ex-Googler. Β· April 10, 2025 My role at Google was eliminated.

GΜΆoΜΆoΜΆgΜΆlΜΆeΜΆr̢… ex-Googler.

nerdy.dev/ex-googler

11.04.2025 18:05 β€” πŸ‘ 1643    πŸ” 181    πŸ’¬ 493    πŸ“Œ 82
Preview
Seamless data fetching with httpResource Fantastic new APIs are coming to Angular. Two years ago, we proposed making Angular a reactive web framework powered by signals. Since…

The new experimental httpResource API is here and ready for you to check out.

Big thanks to @jeanmeche.com for his contributions to this feature.

Learn more here πŸ‘‰ blog.angular.dev/seamless-dat...

07.03.2025 16:02 β€” πŸ‘ 24    πŸ” 5    πŸ’¬ 0    πŸ“Œ 1
Preview
Seamless data fetching with httpResource Photo by Jamie Street on Unsplash Fantastic new APIs are coming to Angular. Two years ago, we proposed making Angular a reactive web framework powered by signals. Since then, the team has shipped a number of signal-based features in the framework: reactive primitives like signal & computed, reactive inputs including model, signal queries, bidirectional RxJS conversion utilities, and migration tooling. We have a solid foundation for reactivity in Angular. Now, we’re ready to begin the next phase of the reactivity journey: the world of asynchronous state. In v19 we shipped the experimental resource() API for developers to try out in advance of the dedicated RFC. The resource API makes it possible to expose results of asynchronous operations as signals. For most applications, developers make HTTP requests for the data their applications need. We recognize this and have built a new API to help facilitate this primary use case β€” introducing httpResource πŸŽ‰.HttpResource httpResource is built on top of the resource primitive and uses HttpClient as loader. It acts as a frontend for @angular/common/http. It makes HTTP requests through the Angular HTTP stack, including interceptors. As the underlying stack remains the same, testing will rely on the same tools. Here we are defining an httpResource with currentUserId as a reactive parameter.currentUserId = getCurrentUserId(); // returns a signal user = httpResource(() => `/api/user/${currentUserId()}`); // A reactive function as argument By default, an httpResource will perform a GET request and return an unknown typed JSON response. It is important to note that httpResource differs from the HttpClient as it initiates the request eagerly (unlike the HttpClient Observable-based requests which must be subscribed). Like resource, it configures a reactive request. If any of the source signals in the request computation change, a new HTTP request will be made. For more advanced requests, it is possible to define a request object similar to HttpClientβ€˜s request.user = httpResource(() => ({ url: '/api/user/${currentUserId()', method: 'GET', headers: { 'X-Special': 'true', }, params: { 'fast': 'yes', }, reportProgress: true, withCredentials: true, transferCache: true, })); While the resource pattern is meant only for retrieving asynchronous data, httpResource will allow any request method (like POST in the previous example). This still doesn’t mean that you should be using httpResource to change data on the server. For instance, if you need to submit form data, use the HttpClient methods. An httpResource will return and parse the response as JSON but it is possible to use it for other return types. The API has multiple dedicated methods available for other response types:httpResource.text(() => ({ … })); // returns a text in value() httpResource.blob(() => ({ … })); // returns a Blob object in value() httpResource.arrayBuffer(() => ({ … })); // returns an ArrayBuffer in value()Shape of an HttpResource An httpResource , similar to other `resource`, exposes several signals:value() β€” which contains the result of the http request (when successful) and is programmatically overwritablestatus() β€” with the status of the resource (idle, loading, error etc)error() β€” with the request error / parsing errorisLoading() β€” which is true while the request is pending It also includes dedicated signals for metadata about the response:​​headers() β€” with the response’s headersstatusCode() β€” with the response’s status codeprogress() β€” with the progress of the request (if required in the request object) These new signals streamline the writing of requests by exposing this useful information without requiring a specific argument like for the HttpClient to request the HttpResponse.Embracing the Ecosystem for Type Safety When performing http requests we often want to ensure that the data we receive conforms the shape that we expect. This is commonly known as schema validation. In the JavaScript ecosystem we often reach out for battle-tested libraries like Zod or Valibot for schema validation. The httpResource offers direct integration for those libraries by using the parse parameter. The returned type of this parse function will provide the type to the resource itself, ensuring type safety alongside the schema validation. The following example uses Zod to parse and validate the response from the StarWars API. The resource is then typed the same as the output type of the Zod’s parsing.export class AppComponent { id = signal(1); swPersonResource = httpResource( () => `https://swapi.dev/api/people/${this.id()}`, { parse: starWarsPersonSchema.parse } ); } const starWarsPersonSchema = z.object({ name: z.string(), height: z.number({ coerce: true }), edited: z.string().datetime(), films: z.array(z.string()), }); Demo on StackblitzExperimental API The httpResource is available as a part of the Angular v19.2 release. This is an experimental API and is not ready for production because the shape of this API can still change before it is promoted to stable. With that in mind, we would love for you to try out the API and let us know what you think. You can learn more about this API, resource and more in the RFC on GitHub. Thank you for being a part of the Angular community and we look forward to continuing the reactivity journey together. Happy coding! Seamless data fetching with httpResource was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.

Seamless data fetching with httpResource

08.03.2025 05:00 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Post image

Hey!

Please join me in celebrating reaching the 20K subscriber milestone! Yay! πŸŽ‰

Thanks to you for watching my angular content!

08.03.2025 19:08 β€” πŸ‘ 65    πŸ” 3    πŸ’¬ 5    πŸ“Œ 0

Movie you’ve watched more than 6 times, gifs only

22.02.2025 07:37 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Movie you’ve watched more than 6 times, gifs only

22.02.2025 07:26 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1
Post image Post image Post image Post image

✨Heads up! Observables are shipping natively to a browser near you soon!

Huge thank you and congrats to @domfarolino.com ❀️

I've helped / worked on / watched this through different standards bodies for more than 10 years now. ☠️

(I'm going to have a lot of work now to adapt RxJS to this πŸ˜…)

21.02.2025 22:58 β€” πŸ‘ 214    πŸ” 48    πŸ’¬ 13    πŸ“Œ 4
Preview
RxSignals: The most powerful synergy in the history of Angular Let’s explore why Signals allow us to move state management out of RxJS, letting it focus primarily on event-driven tasks.

RxSignals: The most powerful synergy in the history of Angular medium.com/coreteq/rxsi...

22.02.2025 05:00 β€” πŸ‘ 9    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Post image

I just asked @vscode.dev copilot to improve an @angular.dev component and the first thing it did was replace signal input APIs with decorators, new control flow syntax with directive-based control flow syntax. Stunned, I asked it why, here is the response. What do you think #angular developers?

11.02.2025 21:32 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 7    πŸ“Œ 0
Post image

And @thealexlichter.com on stage next to talk about Vue

13.02.2025 18:47 β€” πŸ‘ 13    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Preview
Deprecation of real-time GitHub Actions workflow job events in Slack and Microsoft Teams apps Β· GitHub Changelog Deprecation of real-time GitHub Actions workflow job events in Slack and Microsoft Teams apps

Deprecation of real-time GitHub Actions workflow job events in Slack and Microsoft Teams apps - GitHub Changelog search.app/WaLzWXNJxide...

04.02.2025 05:00 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Angular: The Documentary [OFFICIAL TRAILER]
YouTube video by Honeypot Angular: The Documentary [OFFICIAL TRAILER]

Big news! The new trailer for the Angular documentary is here. Created by @stefankingham.bsky.social and Guillermo LΓ³pez, learn more about the history of Angular from the people who were there πŸ”₯

The video will go live on February 4th. Don't miss it!
www.youtube.com/watch?v=nONH...

24.01.2025 18:25 β€” πŸ‘ 84    πŸ” 24    πŸ’¬ 0    πŸ“Œ 0

We are looking at a possible date of 5th July 2025 in Nairobi, Kenya.

14.01.2025 19:09 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

Neck deep into #firebase genkit and have been able to do some basic RAG with local vector embeddings (still fuzzy with the correct terminology), I guess the difficulty part for me is forming the correct mental models but also not very good at following docs and got to do it my own way.

16.11.2024 20:56 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

If you have feedback for NgOptimizedImage, this poll is a great way to get it on our radar. Would be particularly interested in anything missing that would help folks migrate: https://twitter.com/angular/status/1678516387432771585?s=20

10.07.2023 22:14 β€” πŸ‘ 7    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0