Blog
Over the past decade, I felt the need to write down a few things about working with code. I hope you find something useful here.

Using Phoenix with React and Inertia
Getting the best of both worlds; Phoenix's productivity, and React's ecosystem

My experience with Phoenix LiveView
Some takeaways from my time with Phoenix LiveView

Separate Session Tokens in Phoenix
Update the generated phx.gen.auth code to use a separate session token table

Books I read in 2024
My annual list of books read.

Elixir: Import, Require, Use or Alias?
Clarifying the difference between different directives in Elixir.

The full-stack framework discourse
JavaScript, Laravel, Rails, influencers & you

My impressions of Effect-TS
Working with Effect-TS, a powerful library for building applications in TypeScript

Books I read in 2023
The list you've been waiting for

Books I read in 2022
Some notes on the 13 books I read in 2022

Rewriting my blog with Next.js
How I moved this website from Gatsby to Next.js

Using RxJS with React
Co-locating business logic in React with RxJS

Improving component's re-render performance
Making components re-render faster by pre-computing our data

How I interview people
And how I want to be interviewed

Modern PHP
While I wasn’t paying attention, PHP got quite good

Nominal types in TypeScript
Improving our type-safety with fine-grained types

Crypto & the fear of missing out
You can go on without me

The state of this blog
Some history and thoughts on a possible migration

When not to use React Query
Or when component level fetching becomes problematic

Working remotely
Reflecting on remote work, the good and the bad things

All company chat should be in public
How to make remote work a lot better, with a bit of an effort

Ditching manual releases with Changesets
Hassle free versioning & changelog management with Changesets

How I load my web fonts in Gatsby
Preloading self-hosted web fonts, for greater performance

Working with images in Gatsby
Utilizing the latest, more flexible, and straightforward API

What is a Front-end Developer anyway?
JavaScript has shaken things up and we refuse to acknowledge it

Separating server cache & application state with React Query
UI state, ephemeral data & React Query

When to use optimistic updates in your application
Reduce the number of spinners in your application by utilizing optimistic updates

Following the hype in web development
The new things, the right things, and developer entertainment

My quest for digital minimalism II
Taking proper action against distractions & procrastination

When to quit & when to stick
My takeaways after reading 'The Dip' by Seth Godin

Avoiding props drilling with Context
Sensible state management with Context & Hooks

Setting up Pi-hole
Blocking all ads in my local network

The impostor syndrome
The irrational fear of being exposed as a fraud

My quest for digital minimalism
Decluttering my digital life from all the nonsense