Fresh Reads
Source desk · Blog
Sandro Maglione
283 entries in the archiveNewest: Oct 7, 2026Official site
- TypeScript
Events: the most accurate representation of state
If you are looking for the one solution for your state management problems, the answer is events. Testable, reusable, composable state, all achieved from a rather simple abstraction.
Programming Languages and Games
What's the best language? If you have been coding for a long time, this question becomes less and less relevant. What about a language for game dev? Verse, Rust, C#, TypeScript?
Declarative, compile-time and runtime
How is that a declarative API is safer, more composable, and performant? It all has to do with types, API design, and the magic of the master behind the scenes, also called a runtime.
Type safe Game Development, is it possible?
My struggle with game development and type safety continues. It all hinges on a simple question: is it possible for a single indie developer to implement a complex game in less time with the help of types?
Creative Constraints
I 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.
Growth, Challenge, Complexity and Meaning
I don't enjoy learning for learning's sake. I am always looking for the right level of challenge, complexity, and meaning. That's the origin of all my projects. Here is how it works.
What's behind a type safe API
Type safety is ideal in user-land. But internal library code cannot always have the privilege of full type safety. That's when you see 'as any' popup in TypeScript.
Good and bad APIs: IndexedDB
The web has its own database: IndexedDB. But, it's API is so bad everyone stays away from it. But, other solutions are not ready yet. So, I am working on making IndexedDB better with Effect.
In praise of Personal Projects
When the web is littered by AI and a lot of claims and not much action, a simple way to stand out is a personal project. Just for you, perfect level of challenge and fun, the best showcase of your skills.
Being a speaker at the Effect Days
I was in Livorno last week for the second edition of the Effect Days. This time as a speaker. But it all started way before that. 1 year ago, 6 months before, and countless revisions coming up to my 10 minutes on stage.
My journey before and after Effect
They tell of stories of a far away past where apps where not type-safe, and the only reasonable solution was fp-ts and TaskEither everywhere, with no documentation to help. Then the Effect came, and it all went for good, up to the Effect Days of today.
Lessons from implementing a sync engine
I implemented a sync engine for the web: local-first, syncing with CRDTs, with auth and migrations included. I learned a few lessons along the (long) path. This is what you should know.
More apps should be local-first
Some apps are made to be local, but currently close to none really are. The tech stack for local apps is already here, and this is how I am using it to build my vision for local-first.
Software complexity, engineering, and AI
Software becomes complex when multiple systems need to communicate. That's the art of software engineering. AI can't code all for you, but it's a great assistant if prompted right.
The Power to Indie Creators
The output you can create solo is about to skyrocket. AI unlocks massive scale and leverage for each individual. This is how the landscape is about to change for creative people.
Personal Software
We are entering an era where everyone can develop his own personal software. Local, private, fast, only for you and your small community. This trend will skyrocket with better AI and local-first.
Frontend, Local-First, Sync Engines
Web APIs empower the client to be more than just UI. This leads to local-first and sync engines, while also raising the bar for developers. Your role as frontend developer is about to change.
Structured Goals
I 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.
Goals as creative constraints
Mastery is the result of structured creative explorations compounding over time. A framework for setting goals creates constraints where results can flourish. Here is how I do it.
Software that does not break is type-safe
Software engineering is the art of implementing solid and resilient apps. The building block of robust software is type safety. This is how you type safety makes apps bug-free
The Rules of the Game
A 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 (原神).
AI changed how I search and research
With AI search changes. AI becomes the default for a general research and open discussion. But it's not all AI. Other tools can be used depending on your requirements. This is what I do.
Greatness takes time
Time doesn't wait. It's the intrinsic cost of anything on your journey to mastery. Since time is a limited currency, greatness is only possible in a small set of skills. But you need to get started.
Making money in collaboration with your users
The goal of any business is to keep playing the game. The game of offering an awesome service for the user. Profit is necessary to reach this goal. What options exists to turn a profit without disrupting your user experience?