Skip to content

Writing

Long-form articles, every newsletter issue, and an archive of older articles.

Articles

  1. Complete introduction to using Effect in TypescriptComplete introduction to using Effect in Typescript: why using Effect, what is the Effect type, how to use it, and what are the main modules of Effect.
  2. Creative ConstraintsI have so many ideas, so many interesting topics to explore. How exciting. Where do I start? Let's think, think, think, complete freedom. Yeah, but no action. If that's you, you need less freedom, not more. Constraints.
  3. Structured GoalsI never failed a goal after breaking it down into small, daily, actionable steps. There is a formula behind reaching goals. They can be structured, planned. And it invariably works, every time the same.
  4. The Rules of the GameA game is a set of constraints that guide you towards a meaningful destination. What constraints? Turns out video games can teach us some lessons. In this case, the game is Genshin Impact (原神).
  5. The 4 PillarsYour healthy is in your control. It anchors on 4 pillars: sleep, hydration, diet, physical activity. Taking care of these 4 is in your direct control and your responsibility. Some notes on how.
  6. The 6 growth stages of ideasI picture the process of refining ideas in 6 growth stages. The more an idea is refined, the more confidence you have on applying it in a variety of situations.
  7. useState, useReducer and State machines for state managementImplement a form using useState, useReducer, and state machines with XState. Understand the differences and tradeoffs of state machines for state management.
  8. State machines will save you from useStateuseState is easy to use and learn. But it's definitely not ideal for complex state management. This is how state machines and XState will save your project.
  9. NextJs Authentication with Effect and React 19Implement authentication in nextjs using Effect: dependency injection, configuration variables, cookies service, middleware, everything composable and testable.
  10. Why using Effect in Typescript: refactoring example and benefitsWhy should I use Effect? What benefit does Effect provide? What are some real world examples of using Effect? Learn how to use Effect to refactor a real world example from plain Typescript.
  11. Scale complexity in software applicationsA new paradigm to scale complexity in software applications: use types to define errors and dependencies, and use the compiler to guide the implementation and unlock local reasoning.
  12. State machines and Actors in XState v5Learn how to implement a state machine using actors in XState v5, how to organize the code for context, input, events, and actions, and how to invoke and use actors in a state machine.

Newsletter

2026

  1. What should you do when code becomes free#152
  2. How I am automating my job#151
  3. Effect state machines, just like XState#150
  4. State machines and effect#149
  5. Open source when you have AI#148
  6. Writing when you have AI#147
  7. API design for agents#146
  8. Library development with agents#145
  9. Bringing State Machines in effect#144
  10. The second AI coding revolution#143
  11. How I am keeping up with AI#142
  12. Expand your vision, not your time#141
  13. How much is left to implement?#140
  14. XState v6 Alpha#139
  15. AI code with loops and subagents#138
  16. Do you write code manually, or wait?#137
  17. Strategies to review AI code#136
  18. Do you really understand your codebase?#135
  19. How to run 20 agents at the time#134
  20. Do technical articles matter anymore?#133
  21. Components take care of themselves#132
  22. Effect-ification end to end#131
  23. Custom linting rules to guide AI code#130
  24. Time off screen#129
  25. The Ultimate AI coding guide#128
  26. Get started with IndexedDb in Effect#127
  27. What makes AI write great code#126
  28. You are the bottleneck of AI#125
  29. Stop AI from taking control of your code#124
  30. Keep up the pace with AI#123
  31. Underused XState patterns and benefits#122
  32. My Effect v4 beta migrations#121
  33. Software Engineering when you have AI#120
  34. Effect, AI and Orchestration#119
  35. Intention as the seed of improvement#118
  36. The cycle of improvement#117
  37. Streaming AI with Effect#116
  38. Effect API on Cloudflare#115
  39. Effect to the rescue#114

2025

  1. Major releases in 2026#113
  2. A few Effect modules and how I use them#112
  3. The Dance of Precision and Speed#111
  4. XState at its Extreme#110
  5. How to prevent AI messing with your code#109
  6. Software Architect#108
  7. Full stack with Effect and AI#107
  8. How to write maintainable code with AI#106
  9. Counting time#105
  10. The Client stack for 2026#104
  11. Effect AI SDK: A lesson in composing programs#103
  12. Walking your code with AI#102
  13. Release fest: Effect, XState, Next, Drizzle#101
  14. Special #100: past and future#100
  15. Power creep and mastery#99
  16. Creative power and uncertainty#98
  17. A solution for your problems#97
  18. Long term skills#96
  19. How to guarantee failure#95
  20. Turning Pro#94
  21. Start: The Nature of Hard#93
  22. Time investment: How it works#92
  23. Principles of Uncertainty and Time#91
  24. Constraints of time, cost, scope#90
  25. Little Ways Code Works#89
  26. Development speed how to#88
  27. Frontend, Drag & Drop, AI and XState#87
  28. Safety with types: Best practices#86
  29. How I use statecharts in production#85
  30. Why everyone is talking about Effect (second edition)#84
  31. My top 3 picks from localfirstconf 2025#83
  32. Your friendly introduction to local-first#82
  33. Events: the most accurate representation of state#81
  34. Programming Languages and Games#80
  35. Declarative, compile-time and runtime#79
  36. Type safe Game Development, is it possible?#78
  37. Growth, Challenge, Complexity and Meaning#77
  38. What's behind a type safe API#76
  39. Good and bad APIs: IndexedDB#75
  40. In praise of Personal Projects#74
  41. Being a speaker at the Effect Days#73
  42. My journey before and after Effect#72
  43. Lessons from implementing a sync engine#71
  44. More apps should be local-first#70
  45. Software complexity, engineering, and AI#69
  46. The Power to Indie Creators#68
  47. Personal Software#67
  48. Frontend, Local-First, Sync Engines#66
  49. Goals as creative constraints#65
  50. Software that does not break is type-safe#64
  51. AI changed how I search and research#63
  52. Making money in collaboration with your users#62
  53. Ideas to start building more apps in 2025#61

2024

  1. Everything that happened in 2024 (and beyond)#60
  2. Writing 101 for developers#59
  3. Programming literacy: learn new languages and paradigms#58
  4. Entity Component System to make game dev fun again#57
  5. Game dev, functional programming, and Entity Component System#56
  6. The database is coming to the client#55
  7. My top 3 skills to learn as a software developer#54
  8. Event sourcing, local-first, and distributed state#53
  9. Coding for fun (and only later for profit)#52
  10. Building a type-safe bridge between client and server#51
  11. Best practices for writing code you won't regret#50
  12. A new golden era for tooling on the web#49
  13. Open source will make you a better programmer#48
  14. My struggle with data storage for web apps#47
  15. Waiting for a breakthrough: Client, server, and local-first#46
  16. Meta skills of a professional software developer#45
  17. The State of Local-First#44
  18. Everything is a state management problem#43
  19. Error handling is key: here is how to do it (well)#42
  20. The story of why I made an Effect course (out now!)#41
  21. State management that scales with state machines#40
  22. The origin of bad code, and how to fix it#39
  23. How (and why) I became obsessed with type safety#38
  24. How I built a new platform with all the latest libraries#37
  25. What I learned about writing technical articles on the web#36
  26. How to achieve type safety from client to server#35
  27. State management in React is a solved problem#34
  28. My experience at the biggest React conference worldwide#33
  29. Building blocks of any Frontend app#32
  30. What is Local-First?#31
  31. Server components: Closing the gap between frontend and backend#30
  32. My vision for the perfect coding tutorial#29
  33. The future of building web apps is here#28
  34. Everything, anything, everywhere with Typescript#27
  35. Why everyone is talking about Effect#26
  36. Core principles for software that scales (in practice)#25
  37. Frameworks and libraries I use for my web and mobile projects#24
  38. Architecture and libraries to implement a web app#23
  39. How I got into Functional Programming#22
  40. Advanced Dart to build Effect: fpdart v2#21
  41. How maintaining an Open Source project looks like#20
  42. Effect systems: Functional Programming to the next level#19
  43. How I learn a library by reading code#18
  44. Effect Days: The beginning of a new era#17
  45. 4 Principles for all programming languages#16
  46. Actors and State Machines will solve State Management#15
  47. I built a framework: M(e)nimal static site generator#14
  48. How I build a cross-platform app: zero to release#13
  49. Under-engineering: less dependencies, more features and performance#12
  50. What State Management is all about (in practice)#11
  51. Contribute to Open Source: complete process step by step#10
  52. How I learn a new library (when documentation is not enough)#9

2023

  1. How to create a State Management library#8
  2. State management with XState State Machines and Effect#7
  3. What I learned making a game in 2 days#6
  4. Learn Functional Programming with OCaml#5
  5. CLI application with Functional Programming using fpdart#4
  6. Effect + NextJs + ConvertKit: the future of Typescript#3
  7. Timeless programming: learn not a language, learn the principles#2
  8. 2 skills for the 100 years - Writing and coding#1
Archive118 older articles, 2020–2025. Kept for reference; some content is out of date.

2025

  1. Greatness takes time
  2. Game Economy: Challenge and Reward
  3. How games make money: fairness and gacha

2024

  1. The Reality of life as a Game
  2. Wizard Mastery
  3. Notes on writing a 100k fiction novel draft
  4. 5 days habits reset retreat
  5. 心が折れる
  6. Going about learning something
  7. Come to life
  8. Extend and advance
  9. Pawn Raising
  10. How to compile and run MDX in React
  11. Build and publish an npx command to npm with Typescript
  12. Macros, Static Metaprogramming, and Primary Constructors in Dart and Flutter
  13. How to build a complete Flutter app: step by step example
  14. Create a blog with Effect, NextJs and MDX
  15. Flutter State Management: Riverpod, Bloc, Signals, GetX
  16. How to implement a data structure in Typescript

2023

  1. How to implement State Machines and Statecharts in dart and Flutter
  2. Getting started with XState and Effect - Audio Player
  3. Making Games with Flutter - Getting started using flame
  4. Getting started with OCaml and Functional Programming
  5. How to implement a Dart CLI using fpdart
  6. How to test a Typescript app using vitest and msw
  7. How to implement a Custom Newsletter form with ConvertKit and Effect
  8. Covariant, Contravariant, and Invariant in Typescript
  9. How "this" works in Typescript
  10. How to model a Typescript app using Effect: docgen
  11. Japanese Kanji with Furigana parser in Typescript
  12. How to execute an Android intent in Flutter
  13. Testing fpdart code using mocktail | Fpdart and Riverpod Functional Programming in Flutter
  14. How creating a Game in a week looks like
  15. Complete Platformer Game Camera Setup
  16. Pixel art Platformer level design - Full Guide
  17. How to implement a State Machine in Godot
  18. Pixel Art Game Tileset made easier
  19. How to create a Pixel Art Tileset - Complete Guide
  20. Business logic with fpdart and the Do notation | Fpdart and Riverpod Functional Programming in Flutter
  21. Pixel art Character Animations guide
  22. How to implement Top-down Grid Movement in Godot
  23. Pixel art eyes design - Techniques and styles
  24. Top-down game Pixel art - Design and Animations
  25. How to use fpdart and riverpod in Flutter | Fpdart and Riverpod Functional Programming in Flutter
  26. Getting started with fpdart and Functional programming in dart
  27. The History of fpdart | Functional programming in Dart
  28. Godot game engine introduction for beginners
  29. Infinite HTML canvas with zoom and pan
  30. Getting started with Pixel Art - A beginner perspective
  31. The meaning of a Personal Project
  32. From fp-ts to effect-ts: How to guide
  33. Dependencies and Errors in Functional Programming | Fpdart and Riverpod Functional Programming in Flutter
  34. Game rendering loop using HTML canvas and Typescript
  35. Data model and Storage interface | Fpdart and Riverpod Functional Programming in Flutter
  36. Project objectives and configuration | Fpdart and Riverpod Functional Programming in Flutter
  37. Trie | Data structure implementation in Typescript
  38. Records and Pattern Matching in dart - Complete Guide
  39. Supabase functions in dart - Complete Guide
  40. Type validation in dart

2022

  1. Open Meteo API - Functional programming with fpdart (Part 2)
  2. Flutter Supabase Functional Programming with fpdart
  3. Flutter Supabase Database - Complete tutorial
  4. Users sign up and Row Level Security - Supabase Database tutorial
  5. Either - Error Handling in Functional Programming
  6. Open Meteo API - Functional programming with fpdart (Part 1)
  7. Future & Task: asynchronous Functional Programming
  8. Option type and Null Safety in dart
  9. Local Storage Database with Typescript
  10. Flutter Supabase Authentication - Complete tutorial
  11. How to make API requests with validation in fpdart
  12. zod and newtype-ts | Full type-safety in Typescript
  13. How to implement Dependency Injection in Flutter
  14. How to setup Routing in a Flutter app
  15. How to use Environmental Variables in Flutter
  16. The Joy and Curse of Game Development
  17. isNotNullable - Check if a variable is not nullable in Typescript
  18. Why Open Source libraries are missing documentation
  19. How to add a Dynamic Sitemap to your NextJs Blog
  20. How to create a Blog with Contentlayer and NextJs
  21. How to use TaskEither in fpdart
  22. How to map an Either to a Future in fpdart
  23. Form data validation hook with fp-ts and functional programming
  24. Pure function to shuffle an array in Typescript using fp-ts
  25. Pure function to update elements in array that are equal in Typescript

2021

  1. useDebounceUpdate - Running an effect after a timeout
  2. useCounterSelection - Increment and Decrement number with fp-ts
  3. Collecting payments using Stripe Elements – Subscription with Supabase and Stripe Billing | Part 3
  4. Create a NextJs project with Typescript, ESLint, Prettier and TailwindCSS
  5. Loops using fold – Practical Functional Programming | Part 4
  6. Immutability – Practical Functional Programming | Part 3
  7. Pure Functions - Practical Functional Programming | Part 2
  8. Static Metaprogramming in Dart and Flutter: macro_prototype overview
  9. Redux with Typescript for State Management
  10. Practical Functional Programming - Find repeated characters | Part 1
  11. Unlimited resources, limited attention
  12. Chain functions using Option type - Functional Programming
  13. Functional Programming Option type - Introduction
  14. Pure Functional app in Flutter - Pokemon app using fpdart and Functional Programming
  15. 5 Lessons from Functional Programming in Scala, By Paul Chiusano and Runar Bjarnason
  16. How to use fpdart Functional Programming in your Dart and Flutter app
  17. Fpdart, Functional Programming in Dart and Flutter
  18. Maybe | Practical Functional Programming
  19. Stripe Billing Tutorial: Products, Prices, and Webhook – Subscription with Supabase and Stripe Billing | Part 2
  20. Supabase Authentication and create Stripe customer - Subscription with Supabase and Stripe Billing | Part 1
  21. Flutter Supabase Authentication

2020

  1. Setup Typescript with NuxtJs
  2. Auto-generate usecase classes from your repository - Clean Architecture Flutter
  3. The key to consistency
  4. My first-time pure functional programming
  5. The time to write has come
  6. How To Use Tween | Learn All About Flutter Animations – Part 2
  7. Overcome Your Endurance Limits | Endure, by Alex Hutchinson
  8. AnimationController and setState | Learn All About Flutter Animations - Part 1
  9. Reaching Real Success | The Third Door, by Alex Banayan
  10. How to develop a Flutter package | Flutter Tutorial
  11. Guide To The Startup World | Lost and Founder, by Rand Fishkin
  12. Netflix before you knew it | That Will Never Work, by Marc Randolph
  13. Step Progress Indicator | Flutter package tutorial