Blog
I write about things I learn, things I find interesting, and things I think you might find interesting.
![Cover of 'Books I read in 2022'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1670237368/blog-images/covers/books-2022.jpg)
Books I read in 2022
Some notes on the 13 books I read in 2022
![Cover of 'Rewriting my blog with Next.js'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667896248/blog-images/covers/gatsby-to-next.jpg)
Rewriting my blog with Next.js
How I moved this website from Gatsby to Next.js
![Cover of 'Using RxJS with React'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667896493/blog-images/covers/rxjs-react.jpg)
Using RxJS with React
Co-locating business logic in React with RxJS
![Cover of 'Improving component's re-render performance'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229281/blog-images/covers/improving-rerender-performance.jpg)
Improving component's re-render performance
Making components re-render faster by pre-computing our data
![Cover of 'How I interview people'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229274/blog-images/covers/how-i-interview-people.jpg)
How I interview people
And how I want to be interviewed
![Cover of 'Modern PHP'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229279/blog-images/covers/modern-php.jpg)
Modern PHP
While I wasn't paying attention, PHP got quite good
![Cover of 'Nominal types in TypeScript'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229276/blog-images/covers/nominal-types.jpg)
Nominal types in TypeScript
Improving our type-safety with fine-grained types
![Cover of 'Crypto & the fear of missing out'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229274/blog-images/covers/crypto-fomo.jpg)
Crypto & the fear of missing out
You can go on without me
![Cover of 'The state of this blog'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229281/blog-images/covers/state-of-blog.jpg)
The state of this blog
Some history and thoughts on a possible migration
![Cover of 'Working remotely'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229275/blog-images/covers/remote-work.jpg)
Working remotely
Reflecting on remote work, the good and the bad things
![Cover of 'When not to use React Query'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229278/blog-images/covers/when-not-to-use-react-query.jpg)
When not to use React Query
Or when component level fetching becomes problematic
![Cover of 'All company chat should be in public'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229277/blog-images/covers/chat-in-public.jpg)
All company chat should be in public
How to make remote work a lot better, with a bit of an effort
![Cover of 'Ditching manual releases with Changesets'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229276/blog-images/covers/using-changesets.jpg)
Ditching manual releases with Changesets
Hassle free versioning & changelog management with Changesets
![Cover of 'How I load my web fonts in Gatsby'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229279/blog-images/covers/how-i-load-fonts.jpg)
How I load my web fonts in Gatsby
Preloading self-hosted web fonts, for greater performance
![Cover of 'Working with images in Gatsby'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229279/blog-images/covers/gatsby-images.jpg)
Working with images in Gatsby
Utilizing the latest, more flexible, and straightforward API
![Cover of 'What is a Front-end Developer anyway?'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229276/blog-images/covers/what-is-a-front-end-developer-anyway.jpg)
What is a Front-end Developer anyway?
JavaScript has shaken things up and we refuse to acknowledge it
![Cover of 'Separating server cache & application state with React Query'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229278/blog-images/covers/data-fetching-with-react-query.jpg)
Separating server cache & application state with React Query
UI state, ephemeral data & React Query
![Cover of 'When to use optimistic updates in your application'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229275/blog-images/covers/optimistic-updates.jpg)
When to use optimistic updates in your application
Reduce the number of spinners in your application by utilizing optimistic updates
![Cover of 'Following the hype in web development'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229281/blog-images/covers/following-the-hype.jpg)
Following the hype in web development
The new things, the right things, and developer entertainment
![Cover of 'My quest for digital minimalism II'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229279/blog-images/covers/quest-for-digital-minimalism-2-action.jpg)
My quest for digital minimalism II
Taking proper action against distractions & procrastination
![Cover of 'When to quit & when to stick'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229276/blog-images/covers/the-dip.jpg)
When to quit & when to stick
My takeaways after reading 'The Dip' by Seth Godin
![Cover of 'Avoiding props drilling with Context'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229280/blog-images/covers/avoiding-props-drilling.jpg)
Avoiding props drilling with Context
Sensible state management with Context & Hooks
![Cover of 'Setting up Pi-hole'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229281/blog-images/covers/pi-hole.jpg)
Setting up Pi-hole
Blocking all ads in my local network
![Cover of 'The impostor syndrome'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229278/blog-images/covers/the-impostor-syndrome.jpg)
The impostor syndrome
The irrational fear of being exposed as a fraud
![Cover of 'My quest for digital minimalism'](https://res.cloudinary.com/ds9pd4ywd/image/upload/f_webp%2cw_828%2cq_90/v1667229278/blog-images/covers/quest-for-digital-minimalism.jpg)
My quest for digital minimalism
Decluttering my digital life from all the nonsense