<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sandro Maglione]]></title><description><![CDATA[All the articles and newsletter issues up-to-date from sandromaglione.com]]></description><link>https://www.sandromaglione.com</link><image><url>https://www.sandromaglione.com/static/images/icon.png</url><title>Sandro Maglione</title><link>https://www.sandromaglione.com</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 12 May 2026 10:50:20 GMT</lastBuildDate><atom:link href="https://www.sandromaglione.com/feed" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><managingEditor><![CDATA[Sandro Maglione]]></managingEditor><webMaster><![CDATA[Sandro Maglione]]></webMaster><item><title><![CDATA[Complete introduction to using Effect in Typescript]]></title><description><![CDATA[Complete 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.]]></description><link>https://www.sandromaglione.com/articles/complete-introduction-to-using-effect-in-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/complete-introduction-to-using-effect-in-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creative Constraints]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/articles/creative-constraints</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/creative-constraints</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 25 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Structured Goals]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/articles/structured-goals</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/structured-goals</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Rules of the Game]]></title><description><![CDATA[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 (原神).]]></description><link>https://www.sandromaglione.com/articles/the-rules-of-the-game</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-rules-of-the-game</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Greatness takes time]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/articles/greatness-takes-time</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/greatness-takes-time</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Game Economy: Challenge and Reward]]></title><description><![CDATA[How do you balance an economy in games, society, and your personal life? The principles are the same. A game economy is a model to understand the allocation of resources and time investments.]]></description><link>https://www.sandromaglione.com/articles/game-economy-challenge-and-reward</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/game-economy-challenge-and-reward</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How games make money: fairness and gacha]]></title><description><![CDATA[Games are businesses. It's in the interest of both producer and player to find a fair accord to sustain the game long-term. What options exist to make money with a game without disrupting the player experience?]]></description><link>https://www.sandromaglione.com/articles/how-games-make-money-fairness-and-gacha</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-games-make-money-fairness-and-gacha</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 4 Pillars]]></title><description><![CDATA[Your 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.]]></description><link>https://www.sandromaglione.com/articles/the-4-pillars</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-4-pillars</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Reality of life as a Game]]></title><description><![CDATA[Life shares all the elements of the most interesting games. Games originate from real life. But there is a key difference: life is slower and more restrictive. Can you turn life into a videogame?]]></description><link>https://www.sandromaglione.com/articles/the-reality-of-life-as-a-game</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-reality-of-life-as-a-game</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 27 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Wizard Mastery]]></title><description><![CDATA[Most wizards try to learn as many spell as possible. You should fear those that don't need to do that.]]></description><link>https://www.sandromaglione.com/articles/wizard-mastery</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/wizard-mastery</guid><category><![CDATA[stories]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 24 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Notes on writing a 100k fiction novel draft]]></title><description><![CDATA[I wrote the first draft of my first fiction novel. It took me 82 days, 162 hours, 2 hours every day, for a final draft of 100'000 words. This is what I learned.]]></description><link>https://www.sandromaglione.com/articles/notes-on-writing-a-100k-fiction-novel-draft</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/notes-on-writing-a-100k-fiction-novel-draft</guid><category><![CDATA[stories]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 23 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Local-first vs Sync engines]]></title><description><![CDATA[...]]></description><link>https://www.sandromaglione.com/articles/local-first-vs-sync-engines</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/local-first-vs-sync-engines</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 08 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Notes on local first]]></title><description><![CDATA[Some notes on the theory and practice of local-first apps. Everything that you should consider, with links to resources for each topic, including example implementation strategies.]]></description><link>https://www.sandromaglione.com/articles/notes-on-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/notes-on-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 26 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 days habits reset retreat]]></title><description><![CDATA[Productivity is often found in consistent daily effort. Over time daily habits tend to accumulate and become obsolete. A 5 days retreat is a practice that forces you to revisit your actions and goals.]]></description><link>https://www.sandromaglione.com/articles/5-days-habits-reset-retreat</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/5-days-habits-reset-retreat</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 23 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[心が折れる]]></title><description><![CDATA[Kokoro ga oreru is a Japanese word that means 'broken spirit'. It's a vivid expression of what it means to lose your willpower. Stories are the best way to depict this sensation.]]></description><link>https://www.sandromaglione.com/articles/kokoro-ga-oreru</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/kokoro-ga-oreru</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 20 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The 6 growth stages of ideas]]></title><description><![CDATA[I 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.]]></description><link>https://www.sandromaglione.com/articles/the-6-growth-stages-of-ideas</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-6-growth-stages-of-ideas</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Going about learning something]]></title><description><![CDATA[Discover the hidden dangers of excessive research. Why practice-first is the key to effective learning and how mindless exploration can fuel your intuition.]]></description><link>https://www.sandromaglione.com/articles/going-about-learning-something</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/going-about-learning-something</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Come to life]]></title><description><![CDATA[Imagine ordinary objects have come to life. How would your life be different? What would your new friends say about you? Let's play it from the start, the start of a new day.]]></description><link>https://www.sandromaglione.com/articles/come-to-life</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/come-to-life</guid><category><![CDATA[stories]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Extend and advance]]></title><description><![CDATA[The life of a king in the enjoyment of everyday life. No pressure, no judgment, only a straight path. The path of a warrior. Strive, reflect, accrue wisdom. Repeat.]]></description><link>https://www.sandromaglione.com/articles/extend-and-advance</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/extend-and-advance</guid><category><![CDATA[stories]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pawn Raising]]></title><description><![CDATA[A warrior's strength is based on the rules of chess. A Queen can wipe out an entire army, a bishop can kill a legion, rooks, a battalion. While a pawn is lucky if he can kill 14 men. You are a mere pawn, what do you think you can do?]]></description><link>https://www.sandromaglione.com/articles/pawn-raising</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pawn-raising</guid><category><![CDATA[stories]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[useState, useReducer and State machines for state management]]></title><description><![CDATA[Implement a form using useState, useReducer, and state machines with XState. Understand the differences and tradeoffs of state machines for state management.]]></description><link>https://www.sandromaglione.com/articles/use-state-use-reducer-and-state-machines-for-state-management</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/use-state-use-reducer-and-state-machines-for-state-management</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 22 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[State machines will save you from useState]]></title><description><![CDATA[useState 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.]]></description><link>https://www.sandromaglione.com/articles/state-machines-will-save-you-from-use-state</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/state-machines-will-save-you-from-use-state</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[NextJs Authentication with Effect and React 19]]></title><description><![CDATA[Implement authentication in nextjs using Effect: dependency injection, configuration variables, cookies service, middleware, everything composable and testable.]]></description><link>https://www.sandromaglione.com/articles/next-js-authentication-with-effect-and-react-19</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/next-js-authentication-with-effect-and-react-19</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to compile and run MDX in React]]></title><description><![CDATA[Custom integration of the mdx compiler to compile and run mdx content as a React components, with full control on the mdx integration and plugins.]]></description><link>https://www.sandromaglione.com/articles/how-to-compile-and-run-mdx-in-react</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-compile-and-run-mdx-in-react</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 27 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why using Effect in Typescript: refactoring example and benefits]]></title><description><![CDATA[Why 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.]]></description><link>https://www.sandromaglione.com/articles/typescript-code-with-and-without-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/typescript-code-with-and-without-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Scale complexity in software applications]]></title><description><![CDATA[A 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.]]></description><link>https://www.sandromaglione.com/articles/scale-complexity-in-software-applications</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/scale-complexity-in-software-applications</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[State machines and Actors in XState v5]]></title><description><![CDATA[Learn 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.]]></description><link>https://www.sandromaglione.com/articles/state-machines-and-actors-in-xstate-v5</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/state-machines-and-actors-in-xstate-v5</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 14 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with XState and Effect - Audio Player]]></title><description><![CDATA[Learn how to use XState and Effect to implement an audio player in react: stately visual editor to define the state machine, actions implemented using Effect, and use the machine in a react component.]]></description><link>https://www.sandromaglione.com/articles/getting-started-with-xstate-and-effect-audio-player</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/getting-started-with-xstate-and-effect-audio-player</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 20 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Build and publish an npx command to npm with Typescript]]></title><description><![CDATA[Learn how to implement a custom script with Typescript and publish it as an npx command on npm: write script, package.json configuration, bundle code, release on npm.]]></description><link>https://www.sandromaglione.com/articles/build-and-publish-an-npx-command-to-npm-with-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/build-and-publish-an-npx-command-to-npm-with-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Static Metaprogramming in Dart and Flutter: macro_prototype overview]]></title><description><![CDATA[Static Metaprogramming in dart and flutter is coming. Learn about the macro prototype and how to use metaprogramming in dart and flutter.]]></description><link>https://www.sandromaglione.com/articles/dart-flutter-static-metaprogramming-macro-prototype</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/dart-flutter-static-metaprogramming-macro-prototype</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 13 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Macros, Static Metaprogramming, and Primary Constructors in Dart and Flutter]]></title><description><![CDATA[Some new features are coming to the dart programming language: static metaprogramming and primary constructors. Learn how macros, static metaprogramming, and primary constructors work, why they matter, and how to use them.]]></description><link>https://www.sandromaglione.com/articles/macros-static-metaprogramming-and-primary-constructors-in-dart-and-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/macros-static-metaprogramming-and-primary-constructors-in-dart-and-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 01 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to build a complete Flutter app: step by step example]]></title><description><![CDATA[Learn how to create a Flutter app with the most common features: routing, navigation, data models, data storage, dependency injection, error handling, state management, and Flutter widgets.]]></description><link>https://www.sandromaglione.com/articles/how-to-build-a-complete-flutter-app-step-by-step-example</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-build-a-complete-flutter-app-step-by-step-example</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 31 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create a blog with Effect, NextJs and MDX]]></title><description><![CDATA[Learn how to create your personal blog using Effect, NextJs, and MDX. Store local mdx articles, collect them using Effect, and create the article page in react using NextJs.]]></description><link>https://www.sandromaglione.com/articles/create-blog-with-effect-nextjs-and-mdx</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/create-blog-with-effect-nextjs-and-mdx</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Flutter State Management: Riverpod, Bloc, Signals, GetX]]></title><description><![CDATA[State management in flutter using riverpod, bloc, signals, getX: how to install them, how to define the state, how to use them in your flutter app, and their pros and cons.]]></description><link>https://www.sandromaglione.com/articles/flutter-state-management-riverpod-bloc-signals-getx</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/flutter-state-management-riverpod-bloc-signals-getx</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement a data structure in Typescript]]></title><description><![CDATA[Learn how to implement a data structure with typescript: performance, stack safety, immutability, how to make it iterable, inspectable, how to add equality and refinement.]]></description><link>https://www.sandromaglione.com/articles/how-to-implement-a-data-structure-in-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-implement-a-data-structure-in-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement State Machines and Statecharts in dart and Flutter]]></title><description><![CDATA[Implement State Machines and Statecharts in dart and flutter: how to model a state machine, how to use generics to make the machine type-safe, and how to extend the state machine to make it a statechart.]]></description><link>https://www.sandromaglione.com/articles/how-to-implement-state-machines-and-statecharts-in-dart-and-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-implement-state-machines-and-statecharts-in-dart-and-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 27 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making Games with Flutter - Getting started using flame]]></title><description><![CDATA[Create games in Flutter. Learn how to develop games in Flutter using the flame package: how to setup flame, how it works, and how to create your first game.]]></description><link>https://www.sandromaglione.com/articles/making-games-with-flutter-getting-started-using-flame</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/making-games-with-flutter-getting-started-using-flame</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with OCaml and Functional Programming]]></title><description><![CDATA[Get started writing functional programming code using the OCaml programming language: install OCaml, create a new project using dune, learn how to write functional programming code.]]></description><link>https://www.sandromaglione.com/articles/getting-started-with-ocaml-and-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/getting-started-with-ocaml-and-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement a Custom Newsletter form with ConvertKit and Effect]]></title><description><![CDATA[Learn how to use Effect and Typescript to perform a request to subscribe a user to your newsletter on ConvertKit]]></description><link>https://www.sandromaglione.com/articles/how-to-implement-a-custom-newsletter-form-with-convertkit-and-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-implement-a-custom-newsletter-form-with-convertkit-and-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 23 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement a Dart CLI using fpdart]]></title><description><![CDATA[Learn how to implement a CLI application in dart: what a CLI app is, how to create a CLI using the dart programming language, how to organize and implement a CLI using fpdart.]]></description><link>https://www.sandromaglione.com/articles/how-to-implement-a-dart-cli-using-fpdart</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-implement-a-dart-cli-using-fpdart</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to test a Typescript app using vitest and msw]]></title><description><![CDATA[Learn how to use vitest and msw (Mock Service Worker) to test a typescript app: intercept HTTP request, mock response, define and organize all tests.]]></description><link>https://www.sandromaglione.com/articles/how-to-test-typescript-app-using-vitest-and-msw</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-test-typescript-app-using-vitest-and-msw</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 24 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Covariant, Contravariant, and Invariant in Typescript]]></title><description><![CDATA[Learn how variance works in Typescript with concrete example: Covariant, Contravariant, Invariant, and Bivariant. Learn also how variance is related to composition and assignability.]]></description><link>https://www.sandromaglione.com/articles/covariant-contravariant-and-invariant-in-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/covariant-contravariant-and-invariant-in-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 27 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How "this" works in Typescript]]></title><description><![CDATA[Learn how the "this" keyword works in Typescript. You can use "this" in any Typescript interface to reference the interface itself, and this allows to encode Higher-Kinded Types in Typescript.]]></description><link>https://www.sandromaglione.com/articles/how-this-works-in-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-this-works-in-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 19 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to model a Typescript app using Effect: docgen]]></title><description><![CDATA[Learn how to read and understand any project written using the Effect library. Step by step overview of the docgen library written using Effect.]]></description><link>https://www.sandromaglione.com/articles/how-to-model-typescript-app-with-effect-docgen</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-model-typescript-app-with-effect-docgen</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Oct 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Japanese Kanji with Furigana parser in Typescript]]></title><description><![CDATA[Code snippet of a parser for Japanese Kanji with Furigana characters, written in Typescript. The function extracts kanji, furigana, and kana characters from a string, verifying the correct formatting of the input.]]></description><link>https://www.sandromaglione.com/articles/japanese-kanji-with-furigana-typescript-parser</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/japanese-kanji-with-furigana-typescript-parser</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 02 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to execute an Android intent in Flutter]]></title><description><![CDATA[Learn how to implement and execute a platform-specific functionality directly inside your Flutter app. Create an Android intent, write some Kotlin code to read the intent, and forward the intent value to Flutter by using a MethodChannel.]]></description><link>https://www.sandromaglione.com/articles/how-to-execute-an-android-intent-in-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-execute-an-android-intent-in-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 01 Sep 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Testing fpdart code using mocktail | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn how to test an app written using functional programming and fpdart. Learn how functional programming makes testing easier, and how to use the mocktail package to create mocks and test your app in all situations.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-6</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-6</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 29 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How creating a Game in a week looks like]]></title><description><![CDATA[I made a game in a week. Learn how to create a game in a week, where to start, how to plan, how to organize the implementation, what problems you will encounter, and how to make sure you complete everything in time for the final deadline.]]></description><link>https://www.sandromaglione.com/articles/how-creating-a-game-in-a-week-looks-like</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-creating-a-game-in-a-week-looks-like</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 27 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Business logic with fpdart and the Do notation | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn how to implement the business logic of any dart and flutter application using fpdart. Learn how to use the ReaderTask type and the new Do notation in fpdart.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-5</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-5</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 10 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement a State Machine in Godot]]></title><description><![CDATA[Learn what a state machine is and how to implement a complete state machine in Godot. Learn how to organize nodes for a state machine, how to define each state, and how to implement transitions and parameters.]]></description><link>https://www.sandromaglione.com/articles/how-to-implement-state-machine-pattern-in-godot</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-implement-state-machine-pattern-in-godot</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 12 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement Top-down Grid Movement in Godot]]></title><description><![CDATA[Step by step guide on how to implement a tile-based movement on a grid for a top-down game in Godot. We learn how to set up a Godot project for pixel art sprites and tiles, how to use TileMap and TileSet, and how to move and animated the player.]]></description><link>https://www.sandromaglione.com/articles/top-down-grid-movement-in-godot-game-engine</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/top-down-grid-movement-in-godot-game-engine</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Complete Platformer Game Camera Setup]]></title><description><![CDATA[Learn how to implement a complete camera movement for every platformer game. Learn all the common strategies used to implement the camera movement, how they work, their limitations, and what is the ideal setup for every platformer game]]></description><link>https://www.sandromaglione.com/articles/complete-platformer-game-camera-setup</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/complete-platformer-game-camera-setup</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 18 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pixel art Platformer level design - Full Guide]]></title><description><![CDATA[Learn how to plan, design, and create a professional pixel art platformer level. Learn the different layers that compose a platformer level and the rules and principles to make your level design stand out.]]></description><link>https://www.sandromaglione.com/articles/pixel-art-platformer-level-design-full-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pixel-art-platformer-level-design-full-guide</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 17 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pixel Art Game Tileset made easier]]></title><description><![CDATA[Learn a new and unique strategy to design a complete tileset for your pixel art game faster and better: use smaller tiles, each unique and with multiple variations, used to build all kinds of levels and environments.]]></description><link>https://www.sandromaglione.com/articles/pixel-art-game-tileset-made-easier</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pixel-art-game-tileset-made-easier</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 12 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to create a Pixel Art Tileset - Complete Guide]]></title><description><![CDATA[Complete guide on how to create a pixel art tileset: learn how to design a new tileset, how many tiles are necessary, and some common strategies to make your tileset stand out.]]></description><link>https://www.sandromaglione.com/articles/how-to-create-a-pixel-art-tileset-complete-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-create-a-pixel-art-tileset-complete-guide</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 11 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pixel art Character Animations guide]]></title><description><![CDATA[Learn how to create and animate your own pixel art character for your personal game. Learn the principles of animations step by step with an example of idle, walking, jumping, attacking, and climbing animation.]]></description><link>https://www.sandromaglione.com/articles/pixel-art-character-animations-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pixel-art-character-animations-guide</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 05 Aug 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use fpdart and riverpod in Flutter | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn how to take advantage of both fpdart and riverpod in your application. Learn how to use the ReaderTask type from fpdart and how to define a riverpod provider that executes code written using fpdart and functional programming.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-4</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-4</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 28 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with Pixel Art - A beginner perspective]]></title><description><![CDATA[I recently started my journey into pixel art. After watching many tutorials and reading countless articles and guides, I share my learnings and insights into the art of pixel images.]]></description><link>https://www.sandromaglione.com/articles/getting-started-with-pixel-art</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/getting-started-with-pixel-art</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 12 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pixel art eyes design - Techniques and styles]]></title><description><![CDATA[Learn and study different styles and designs for pixel art eyes at different resolutions (8x8, 16x16, 32x32, 64x64). Explore limitations and strategies to give more personality to the eyes of your character design in pixel art.]]></description><link>https://www.sandromaglione.com/articles/pixel-art-eyes-techniques-and-styles</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pixel-art-eyes-techniques-and-styles</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Top-down game Pixel art - Design and Animations]]></title><description><![CDATA[Overview of different styles and designs for pixel art sprites in a top-down game. Learn the most common strategies and tips on how to create and animate your own sprite in a top-down game.]]></description><link>https://www.sandromaglione.com/articles/pixel-art-top-down-game-sprite-design-and-animation</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pixel-art-top-down-game-sprite-design-and-animation</guid><category><![CDATA[pixel-art]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 31 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with fpdart and Functional programming in dart]]></title><description><![CDATA[Complete guide on how to get started with fpdart and functional programming in dart and flutter. Learn all the types provided by fpdart, how they work, and how to use them.]]></description><link>https://www.sandromaglione.com/articles/getting-started-with-fpdart-v1-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/getting-started-with-fpdart-v1-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The History of fpdart | Functional programming in Dart]]></title><description><![CDATA[fpdart today is the standard solution for functional programming in dart. Learn the history of how fpdart came to be. From the early days of dart v1 and the dartz package, the growing interest in functional programming, and the innovation that fpdart brought to the community.]]></description><link>https://www.sandromaglione.com/articles/the-history-of-fpdart-functional-programming-in-dart</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-history-of-fpdart-functional-programming-in-dart</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Godot game engine introduction for beginners]]></title><description><![CDATA[I finally tried the Godot game engine for the first time after years of Unity. I share some of the lessons I learned building my first project, explaining how to implement a 2d top-down game using all the features provided by Godot.]]></description><link>https://www.sandromaglione.com/articles/introduction-to-godot-game-engine-beginner</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/introduction-to-godot-game-engine-beginner</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 16 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Infinite HTML canvas with zoom and pan]]></title><description><![CDATA[Simulate an infinite html canvas in typescript by using math to map the real coordinates to new virtual values. Implement zooming and panning effect by listening to touch events on mobile.]]></description><link>https://www.sandromaglione.com/articles/infinite-canvas-html-with-zoom-and-pan</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/infinite-canvas-html-with-zoom-and-pan</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 13 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[The meaning of a Personal Project]]></title><description><![CDATA[Start from nothing, an idea, a spark of excitement. Experience the up and downs, from no knowledge, pure vision, to something that can stand on its own, something to share. And then look back, you are different than before, better.]]></description><link>https://www.sandromaglione.com/articles/the-meaning-of-a-personal-project</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-meaning-of-a-personal-project</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 03 Jul 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[From fp-ts to effect-ts: How to guide]]></title><description><![CDATA[I recently migrated my personal blog from fp-ts to effect-ts. I share what are the main changes, how the structure of the app changes, and what are the advantages of effect-ts over fp-ts.]]></description><link>https://www.sandromaglione.com/articles/from-fp-ts-to-effect-ts-migration-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/from-fp-ts-to-effect-ts-migration-guide</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Dependencies and Errors in Functional Programming | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn how to define and use dependencies and errors in functional programming with fpdart: dependency injection, Either type, records, pattern matching, and using ReaderTaskEither to put all together.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-3</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-3</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 22 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Game rendering loop using HTML canvas and Typescript]]></title><description><![CDATA[Learn how to implement an animation/game rendering loop for animated simulations, simple games, and algorithm visualizations, all running on the web using typescript, HTML canvas, and requestAnimationFrame.]]></description><link>https://www.sandromaglione.com/articles/game-rendering-loop-in-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/game-rendering-loop-in-typescript</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 15 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Data model and Storage interface | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn how to define a complete immutable data class in dart and flutter, why using immutable classes, how immutability makes your code better, and how to define a abstraction for your API.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-2</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-2</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 13 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Project objectives and configuration | Fpdart and Riverpod Functional Programming in Flutter]]></title><description><![CDATA[Learn what it is means to built a safe, maintainable, and testable flutter app by using fpdart, riverpod, setting up linting and installing dependencies.]]></description><link>https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-1</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-riverpod-functional-programming-flutter-part-1</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 06 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Trie | Data structure implementation in Typescript]]></title><description><![CDATA[Implementation of the Trie data structure using Typescript / Javascript. Build a Trie from a list of words and efficiently search and add new words.]]></description><link>https://www.sandromaglione.com/articles/trie-data-structure-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/trie-data-structure-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 05 Jun 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Step Progress Indicator | Flutter package tutorial]]></title><description><![CDATA[Flutter tutorial on how to use the step progress indicator widget package. Learn how to use all the the attributes and parameters from examples and images.]]></description><link>https://www.sandromaglione.com/articles/step-progress-indicator-flutter-package-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/step-progress-indicator-flutter-package-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 24 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Records and Pattern Matching in dart - Complete Guide]]></title><description><![CDATA[Dart 3 introduces Records, Pattern Matching, and Sealed classes to the language. Learn everything on how to use records and patterns in dart 3.]]></description><link>https://www.sandromaglione.com/articles/records-and-patterns-dart-language</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/records-and-patterns-dart-language</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 27 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Supabase functions in dart - Complete Guide]]></title><description><![CDATA[Learn how to create, configure, implement, and deploy an Edge Function on Supabase using the Dart programming language with the edge package.]]></description><link>https://www.sandromaglione.com/articles/supabase-dart-edge-functions-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/supabase-dart-edge-functions-guide</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 25 Apr 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Type validation in dart]]></title><description><![CDATA[Most of the times primitive types are too generic, and this can cause problems. Learn how to properly validate your models and make your app completely type-safe.]]></description><link>https://www.sandromaglione.com/articles/type-safe-validation-dart-models</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/type-safe-validation-dart-models</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 10 Jan 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Open Meteo API - Functional programming with fpdart (Part 2)]]></title><description><![CDATA[Convert the Open Meteo API from imperative code to functional programming in dart using fpdart. Introduction to the code and why using TaskEither as return type.]]></description><link>https://www.sandromaglione.com/articles/real_example_fpdart_open_meteo_api_part_2</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/real_example_fpdart_open_meteo_api_part_2</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 16 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Flutter Supabase Functional Programming with fpdart]]></title><description><![CDATA[Learn how to use Supabase in your Flutter app. Add Supabase database to your Flutter app to get, insert, update, and delete data in your remote database.]]></description><link>https://www.sandromaglione.com/articles/flutter-dart-functional-programming-fpdart-supabase-app</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/flutter-dart-functional-programming-fpdart-supabase-app</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 06 Dec 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Flutter Supabase Database - Complete tutorial]]></title><description><![CDATA[Learn how to use Supabase in your Flutter app. Add Supabase database to your Flutter app to get, insert, update, and delete data in your remote database.]]></description><link>https://www.sandromaglione.com/articles/flutter-supabase-database-complete-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/flutter-supabase-database-complete-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 29 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Users sign up and Row Level Security - Supabase Database tutorial]]></title><description><![CDATA[Create an Authentication system using Supabase to sign up every user, store the user information in the database, and secure them using Row Level Security.]]></description><link>https://www.sandromaglione.com/articles/supabase-database-user-sign-up-and-row-level-security</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/supabase-database-user-sign-up-and-row-level-security</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 21 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Either - Error Handling in Functional Programming]]></title><description><![CDATA[Either allows to explicitly handle errors in your code. Either is an alternative to try/catch. Let's learn how Either works, how it is defined, and how it differs from try/catch.]]></description><link>https://www.sandromaglione.com/articles/either-error-handling-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/either-error-handling-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 09 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Open Meteo API - Functional programming with fpdart (Part 1)]]></title><description><![CDATA[Convert the Open Meteo API from imperative code to functional programming in dart using fpdart. Introduction to the code and why using TaskEither as return type.]]></description><link>https://www.sandromaglione.com/articles/real_example_fpdart_open_meteo_api_part_1</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/real_example_fpdart_open_meteo_api_part_1</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 02 Nov 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Future & Task: asynchronous Functional Programming]]></title><description><![CDATA[Differences and similarities of Future (Promise) and Task for asynchronous programming: how asynchronous requests are made using functional programming compared to imperative code.]]></description><link>https://www.sandromaglione.com/articles/async-requests-future-and-task-dart</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/async-requests-future-and-task-dart</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 27 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Option type and Null Safety in dart]]></title><description><![CDATA[Option and Null Safety are similar, which one should you choose? Let's compare them: when to use nullable types, when to use Option, and how to use both of them together.]]></description><link>https://www.sandromaglione.com/articles/option_type_and_null_safety_dart</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/option_type_and_null_safety_dart</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 21 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Local Storage Database with Typescript]]></title><description><![CDATA[Local storage database implementation in typescript with schema validation and error handling, using functional programming (fp-ts) and zod.]]></description><link>https://www.sandromaglione.com/articles/local-storage-database-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/local-storage-database-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 20 Oct 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Flutter Supabase Authentication - Complete tutorial]]></title><description><![CDATA[Learn how to use the newest version of Supabase in Flutter to implement a complete authentication system from scratch: sign up, sign in, and sign out.]]></description><link>https://www.sandromaglione.com/articles/flutter-supabase-authentication-complete-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/flutter-supabase-authentication-complete-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Flutter Supabase Authentication]]></title><description><![CDATA[Learn how to use Supabase in your Flutter app. Add Supabase authentication to your Flutter app to authenticate your user in no time.]]></description><link>https://www.sandromaglione.com/articles/flutter-supabase-authentication</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/flutter-supabase-authentication</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 24 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to setup Routing in a Flutter app]]></title><description><![CDATA[Having a powerful routing configuration is at the core of every Flutter app: let's learn how to setup a robust and scalable routing system.]]></description><link>https://www.sandromaglione.com/articles/how-to-setup-routing-flutter-app</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-setup-routing-flutter-app</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 23 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use Environmental Variables in Flutter]]></title><description><![CDATA[Environmental variables allows you to define global constants shared in an app, for things like API keys, base URLs, and such.]]></description><link>https://www.sandromaglione.com/articles/how-to-use-environmental-variables-in-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-use-environmental-variables-in-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 09 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to make API requests with validation in fpdart]]></title><description><![CDATA[Learn how to perform a complete API request with validation in Dart and Flutter using fpdart and Functional Programming.]]></description><link>https://www.sandromaglione.com/articles/fpdart-api-request-with-validation-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-api-request-with-validation-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 15 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[zod and newtype-ts | Full type-safety in Typescript]]></title><description><![CDATA[Achieve full type safety in Typescript by using newtype-ts, monocle-ts, and zod to validate your types at compile time.]]></description><link>https://www.sandromaglione.com/articles/zod-and-newtype-ts-full-type-safety-with-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/zod-and-newtype-ts-full-type-safety-with-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to implement Dependency Injection in Flutter]]></title><description><![CDATA[Dependency Injection is a pattern that allows you to manage dependencies inside your app. We use get_it and injectable to implement Dependency Injection in Flutter.]]></description><link>https://www.sandromaglione.com/articles/how_to_implement_dependecy_injection_in_flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how_to_implement_dependecy_injection_in_flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 30 Aug 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create a NextJs project with Typescript, ESLint, Prettier and TailwindCSS]]></title><description><![CDATA[Learn how to create a NextJs project with Typescript, ESLint, Prettier and TailwindCSS. Using NextJs and Typescript for your next project.]]></description><link>https://www.sandromaglione.com/articles/create-nextjs-project-with-typescript-eslint-prettier-tailwindcss</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/create-nextjs-project-with-typescript-eslint-prettier-tailwindcss</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 07 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Setup Typescript with NuxtJs]]></title><description><![CDATA[Typescript is a must-have for any javascript application. Learn how to setup Typescript in a NuxtJs project. From creating a NuxtJs app to having full Typescript support.]]></description><link>https://www.sandromaglione.com/articles/setup-typescript-with-nuxtjs</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/setup-typescript-with-nuxtjs</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 06 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Maybe | Practical Functional Programming]]></title><description><![CDATA[Learn to use functional programming. Practical functional programming about the Maybe type. Learn how to use Maybe in functional programming.]]></description><link>https://www.sandromaglione.com/articles/maybe-practical-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/maybe-practical-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 13 May 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Netflix before you knew it | That Will Never Work, by Marc Randolph]]></title><description><![CDATA[The book is a memoir of Marc Randolph about how the idea of Netflix came to be and what challenges and obstacles the company overcame to become what it is today.]]></description><link>https://www.sandromaglione.com/articles/netflix-before-you-knew-it-that-will-never-work-by-marc-randolph</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/netflix-before-you-knew-it-that-will-never-work-by-marc-randolph</guid><category><![CDATA[books]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 26 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Overcome Your Endurance Limits  | Endure, by Alex Hutchinson]]></title><description><![CDATA[Endure by Alex Hutchinson explains what factors, both mental and physical, contribute to limiting athletes' endurance and how to overcome them.]]></description><link>https://www.sandromaglione.com/articles/overcome-endurance-limit-endure-by-alex-hutchinson</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/overcome-endurance-limit-endure-by-alex-hutchinson</guid><category><![CDATA[books]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 20 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pure Functional app in Flutter - Pokemon app using fpdart and Functional Programming]]></title><description><![CDATA[Pure functional app in Flutter using fpdart and Functional Programming. Explore a Pokemon app using Functional Programming and Flutter.]]></description><link>https://www.sandromaglione.com/articles/pure-functional-app-in-flutter-using-fpdart-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/pure-functional-app-in-flutter-using-fpdart-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 12 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reaching Real Success | The Third Door, by Alex Banayan]]></title><description><![CDATA[The Third Door, the story of Alex Banayan in his mission to uncover the secret of how the most successful people of the planet lauched their careers.]]></description><link>https://www.sandromaglione.com/articles/reaching-real-success-the-third-door-by-alex-banayan</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/reaching-real-success-the-third-door-by-alex-banayan</guid><category><![CDATA[books]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 07 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Redux with Typescript for State Management]]></title><description><![CDATA[Lear how to use Redux for state management using Typescript. Redux and Typescript in your react application for state management.]]></description><link>https://www.sandromaglione.com/articles/redux-with-typescript-for-state-management</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/redux-with-typescript-for-state-management</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Guide To The Startup World | Lost and Founder, by Rand Fishkin]]></title><description><![CDATA[Lost and Founder is the story of the creator of Moz SEO Rand Fishkin. He shares his experience in the startup world, highlighting all the mistakes and lessons learned while building Moz.]]></description><link>https://www.sandromaglione.com/articles/startup-world-guide-lost-and-founder-by-rand-fishkin</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/startup-world-guide-lost-and-founder-by-rand-fishkin</guid><category><![CDATA[books]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 30 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[The time to write has come]]></title><description><![CDATA[Do you ever feel you would like to write? Me too. That is what I did and what I am doing to start writing more and better.]]></description><link>https://www.sandromaglione.com/articles/the-time-to-write-has-come</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-time-to-write-has-come</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 30 Oct 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unlimited resources, limited attention]]></title><description><![CDATA[It is not what we fear that will ruin us, but what we desire. You attention is limited, and the web is playing against you. What will you do?]]></description><link>https://www.sandromaglione.com/articles/unlimited-resources-limited-attention</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/unlimited-resources-limited-attention</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 06 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Auto-generate usecase classes from your repository - Clean Architecture Flutter]]></title><description><![CDATA[repo_case is a Flutter package to auto generate usecase classes from your repository signature, based on the Clean Architecture of Reso Coder.]]></description><link>https://www.sandromaglione.com/articles/auto-generate-usecase-classes-from-your-repository-clean-architecture-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/auto-generate-usecase-classes-from-your-repository-clean-architecture-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 20 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Collecting payments using Stripe Elements – Subscription with Supabase and Stripe Billing | Part 3]]></title><description><![CDATA[Collection payments using Stripe Elements. We learn how to use Stripe Elements to collect the card information for Stripe Billing.]]></description><link>https://www.sandromaglione.com/articles/collecting-payments-stripe-elements-stripe-billing-supabase-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/collecting-payments-stripe-elements-stripe-billing-supabase-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 09 Nov 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[My first-time pure functional programming]]></title><description><![CDATA[Do you know what functional programming really is? This is my first experience with pure functional programming in Haskell.]]></description><link>https://www.sandromaglione.com/articles/first-time-pure-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/first-time-pure-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 07 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[5 Lessons from Functional Programming in Scala, By Paul Chiusano and Runar Bjarnason]]></title><description><![CDATA[5 key lessons from Functional Programming in Scala. Learn the core principles of Functional Programming and learn Functional coding.]]></description><link>https://www.sandromaglione.com/articles/functional-programming-5-key-lessons-functional-programming-in-scala</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/functional-programming-5-key-lessons-functional-programming-in-scala</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use fpdart Functional Programming in your Dart and Flutter app]]></title><description><![CDATA[Learn how to use fpdart and Functional Programming in your Dart and Flutter app. Example of how to use fpdart in a real flutter package.]]></description><link>https://www.sandromaglione.com/articles/how-to-use-fpdart-functional-programming-in-dart-and-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-use-fpdart-functional-programming-in-dart-and-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 01 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How To Use Tween | Learn All About Flutter Animations – Part 2]]></title><description><![CDATA[In this tutorial series, we learn all about Flutter Animations. In this part 2, we use Tweens to create beautiful animations of all types and values.]]></description><link>https://www.sandromaglione.com/articles/how-to-use-tween-learn-all-about-flutter-animations-part-2</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-use-tween-learn-all-about-flutter-animations-part-2</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 29 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Immutability – Practical Functional Programming | Part 3]]></title><description><![CDATA[Immutability in Functional Programming. Learn what Immutability is, why Immutability is important, and how to write Immutable code.]]></description><link>https://www.sandromaglione.com/articles/immutability-practical-functional-programming-part-3</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/immutability-practical-functional-programming-part-3</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 31 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[The key to consistency]]></title><description><![CDATA[Being productive and accomplish goals is less about hard work and more about consistency. The question is: what is the key to consistency?]]></description><link>https://www.sandromaglione.com/articles/key-to-consistency</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/key-to-consistency</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 10 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Loops using fold – Practical Functional Programming | Part 4]]></title><description><![CDATA[Loops using fold in Functional Programming. Learn why you do not need loops, and how to use the fold function in Functional Programming.]]></description><link>https://www.sandromaglione.com/articles/loops-using-fold-practical-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/loops-using-fold-practical-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sat, 04 Sep 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pure Functions - Practical Functional Programming | Part 2]]></title><description><![CDATA[Learn Pure functions in Functional Programming. Why using Pure functions, what a pure function is, and how to write code using pure functions.]]></description><link>https://www.sandromaglione.com/articles/practical-functional-programming-pure-functions-part-2</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/practical-functional-programming-pure-functions-part-2</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Practical Functional Programming - Find repeated characters | Part 1]]></title><description><![CDATA[Practical Functional Programming, uncover the principles of Functional Programming in Haskell, Typescript, and Dart. Part 1 of the series. This post has been published in my newsletter.]]></description><link>https://www.sandromaglione.com/articles/practical-functional-programming-step-by-step-haskell-typescript-dart-part-1</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/practical-functional-programming-step-by-step-haskell-typescript-dart-part-1</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 10 Aug 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Stripe Billing Tutorial: Products, Prices, and Webhook – Subscription with Supabase and Stripe Billing | Part 2]]></title><description><![CDATA[Learn how Stripe Billing works. In this Stripe Billing Tutorial, you will learn about Stripe billing Products, Prices, and Webhooks.]]></description><link>https://www.sandromaglione.com/articles/stripe-billing-products-prices-webhook-subscription-supabase</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/stripe-billing-products-prices-webhook-subscription-supabase</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 05 May 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Supabase Authentication and create Stripe customer - Subscription with Supabase and Stripe Billing | Part 1]]></title><description><![CDATA[Learn how to implement Supabase Authentication and Stripe Billing Subscriptions. Create a Supabase user and a Stripe Billing customer.]]></description><link>https://www.sandromaglione.com/articles/supabase-auth-create-stripe-customer-subscription-supabase-stripe-billing-part-1</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/supabase-auth-create-stripe-customer-subscription-supabase-stripe-billing-part-1</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 29 Apr 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[AnimationController and setState | Learn All About Flutter Animations - Part 1]]></title><description><![CDATA[In this tutorial series, we are going to learn all about Flutter Animations. In this article we create our first animation using setState() and AnimationController.]]></description><link>https://www.sandromaglione.com/articles/animationcontroller-and-setstate-or-learn-all-about-flutter-animations-part-1</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/animationcontroller-and-setstate-or-learn-all-about-flutter-animations-part-1</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 17 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Chain functions using Option type - Functional Programming]]></title><description><![CDATA[Learn how to chain functions using the Functional Programming type Option. Use alt, andThen, flatMap, and getOrElse methods in simple example.]]></description><link>https://www.sandromaglione.com/articles/chain-functions-using-option-type-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/chain-functions-using-option-type-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 26 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[isNotNullable - Check if a variable is not nullable in Typescript]]></title><description><![CDATA[Function used to check if a variable is not nullable and narrow its type using Typescript.]]></description><link>https://www.sandromaglione.com/articles/check-if-variable-is-not-nullable-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/check-if-variable-is-not-nullable-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 Jun 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Fpdart, Functional Programming in Dart and Flutter]]></title><description><![CDATA[Fpdart, Functional Programming in Dart and Flutter. Learn why learning Functional Programming and how to import and use fpdart.]]></description><link>https://www.sandromaglione.com/articles/fpdart-functional-programming-in-dart-and-flutter</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/fpdart-functional-programming-in-dart-and-flutter</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 28 Jun 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Functional Programming Option type - Introduction]]></title><description><![CDATA[Learn Functional Programming Option (Maybe) type. Tutorial about the Option type, how to use it with examples in Functional Programming.]]></description><link>https://www.sandromaglione.com/articles/functional-programming-option-type-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/functional-programming-option-type-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 20 Jul 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to develop a Flutter package | Flutter Tutorial]]></title><description><![CDATA[Learn how to develop a flutter package and how to publish your open-source Flutter package on pub.dev. This tutorial will explain everything step by step.]]></description><link>https://www.sandromaglione.com/articles/how-to-develop-a-flutter-package-flutter-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-develop-a-flutter-package-flutter-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 02 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Joy and Curse of Game Development]]></title><description><![CDATA[Have you ever tried developing your own game? There are many skills you must acquire: art, music, programming, writing. Creating a game can be frustrating and time consuming, but maybe you should try anyway.]]></description><link>https://www.sandromaglione.com/articles/the-joy-and-curse-of-game-development</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/the-joy-and-curse-of-game-development</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 24 Jul 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why Open Source libraries are missing documentation]]></title><description><![CDATA[Open Source is fun and rewarding, but if you want your work to bring any value you need documentation. Why many library are missing it?]]></description><link>https://www.sandromaglione.com/articles/why-open-source-library-is-missing-documentation</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/why-open-source-library-is-missing-documentation</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 12 May 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to add a Dynamic Sitemap to your NextJs Blog]]></title><description><![CDATA[Create a dynamic sitemap with all your posts using NextJs and contentlayer, and learn how to submit it to Search Engines.]]></description><link>https://www.sandromaglione.com/articles/how-to-add-dynamic-sitemap-nextjs-blog</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-add-dynamic-sitemap-nextjs-blog</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 28 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to create a Blog with Contentlayer and NextJs]]></title><description><![CDATA[Create a fully customizable blog using the power of nextjs, contentlayer, and mdx.]]></description><link>https://www.sandromaglione.com/articles/contentlayer-blog-template-with-nextjs</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/contentlayer-blog-template-with-nextjs</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Tue, 26 Apr 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use TaskEither in fpdart]]></title><description><![CDATA[TaskEither is the most used type in Functional Programming with fpdart. Do you know what TaskEither is in Functional Programming? In this post we are going to learn how to use TaskEither in fpdart.]]></description><link>https://www.sandromaglione.com/articles/how-to-use-task-either-fpdart-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/how-to-use-task-either-fpdart-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Mon, 07 Feb 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to map an Either to a Future in fpdart]]></title><description><![CDATA[Learn the difference between sync and async in Functional Programming, and how to work with asynchronous functions. What is the difference between Either and TaskEither? Option and TaskOption? IO and Task?]]></description><link>https://www.sandromaglione.com/articles/from-sync-to-async-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/from-sync-to-async-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Form data validation hook with fp-ts and functional programming]]></title><description><![CDATA[React hook used to store, update, and validate data using functional programming with fp-ts.]]></description><link>https://www.sandromaglione.com/articles/form-data-validation-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/form-data-validation-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 16 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pure function to shuffle an array in Typescript using fp-ts]]></title><description><![CDATA[A pure function that allows you to shuffle an array using functional programming with fp-ts in Typescript.]]></description><link>https://www.sandromaglione.com/articles/shuffle-array-with-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/shuffle-array-with-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 16 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pure function to update elements in array that are equal in Typescript]]></title><description><![CDATA[A pure function that allows to update all the elements in an array that are equal to a given equality check.]]></description><link>https://www.sandromaglione.com/articles/update-where-array-fp-ts</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/update-where-array-fp-ts</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Sun, 16 Jan 2022 00:00:00 GMT</pubDate></item><item><title><![CDATA[useDebounceUpdate - Running an effect after a timeout]]></title><description><![CDATA[Execute a function after a timeout every time your data changes. Reset the timer if the data changes again during the timeout.]]></description><link>https://www.sandromaglione.com/articles/use-debounce-update-react</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/use-debounce-update-react</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Fri, 17 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[useCounterSelection - Increment and Decrement number with fp-ts]]></title><description><![CDATA[Abstraction for storing a number value that can be incremented and decremented by a given amount of steps.]]></description><link>https://www.sandromaglione.com/articles/use-counter-selection-add-subtract-selected-value-fp-ts</link><guid isPermaLink="true">https://www.sandromaglione.com/articles/use-counter-selection-add-subtract-selected-value-fp-ts</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Thu, 16 Dec 2021 00:00:00 GMT</pubDate></item><item><title><![CDATA[Components take care of themselves]]></title><description><![CDATA[Most frontend bugs are hidden behind confused business logic and race conditions inside components. Easy solution: make all components dumb, no business logic inside them, and let AI take care of them.]]></description><link>https://www.sandromaglione.com/newsletter/components-take-care-of-themselves</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/components-take-care-of-themselves</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect-ification end to end]]></title><description><![CDATA[Effect is taking over the TypeScript ecosystem, now faster than ever before. I have been running effect everywhere for a while: here is what you will get on the other side once all becomes effect.]]></description><link>https://www.sandromaglione.com/newsletter/effect-ification-end-to-end</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-ification-end-to-end</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Custom linting rules to guide AI code]]></title><description><![CDATA[AI codes fast. Too fast for you to review that much slop code and bad patterns. But there is a solution: prevent bad patterns altogether with custom linting rules. Here is how I do this.]]></description><link>https://www.sandromaglione.com/newsletter/custom-linting-rules-to-guide-ai-code</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/custom-linting-rules-to-guide-ai-code</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Time off screen]]></title><description><![CDATA[I have been without my Mac for 5 days: no coding, no AI, no nothing. Out in the wild. After these 5 days, here is everything that I missed out while off screen.]]></description><link>https://www.sandromaglione.com/newsletter/time-off-screen</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/time-off-screen</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Ultimate AI coding guide]]></title><description><![CDATA[This is the last guide you need to write great code with AI. And it's nothing impressive, but mostly a series of high-level steps that, if done correctly, guarantees success with AI coding.]]></description><link>https://www.sandromaglione.com/newsletter/the-ultimate-ai-coding-guide</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-ultimate-ai-coding-guide</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Get started with IndexedDb in Effect]]></title><description><![CDATA[IndexedDb in effect is finally here! A full type-safe and local-first enabled IndexedDb module is out in effect v4 beta, and it finally unlocks using IndexedDb for real. Get started here.]]></description><link>https://www.sandromaglione.com/newsletter/get-started-with-indexeddb-in-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/get-started-with-indexeddb-in-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[What makes AI write great code]]></title><description><![CDATA[Another experiment with AI this week, and this time it went extremely well. I ported Bevy (game engine) to TypeScript, with the patterns and type safety of effect. All AI. This is why it went so well.]]></description><link>https://www.sandromaglione.com/newsletter/what-makes-ai-write-great-code</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-makes-ai-write-great-code</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[You are the bottleneck of AI]]></title><description><![CDATA[In an attempt of going from requirements to full implementation fast with AI, this week I tried an experiment: all-in AI specs and code. Well, it failed, bad, and rather fast.]]></description><link>https://www.sandromaglione.com/newsletter/you-are-the-bottleneck-of-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/you-are-the-bottleneck-of-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Stop AI from taking control of your code]]></title><description><![CDATA[I have been running full AI-mode on a few projects for a few weeks now. I just now paused to take a look at the overall code, and the situation is bad. Here are some ways to fix and prevent this situation.]]></description><link>https://www.sandromaglione.com/newsletter/stop-ai-from-taking-control-of-your-code</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/stop-ai-from-taking-control-of-your-code</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Keep up the pace with AI]]></title><description><![CDATA[You probably cannot write code as fast as AI. But you don't have to. Even if you are not typing every word, it's still your job to ensure a working final product. And there are a few strategies you can use.]]></description><link>https://www.sandromaglione.com/newsletter/keep-up-the-pace-with-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/keep-up-the-pace-with-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Underused XState patterns and benefits]]></title><description><![CDATA[From State of React it looks like only 10% of people used XState. I was one of those many moons ago, and after I discovered it, I never looked back. And the reasons are practical, let me tell you.]]></description><link>https://www.sandromaglione.com/newsletter/underused-xstate-patterns-and-benefits</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/underused-xstate-patterns-and-benefits</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[My Effect v4 beta migrations]]></title><description><![CDATA[Effect v4 beta is out. It's time to start migrating everything to it right away, of course. I already started. Here is how it went, what you should know, and what are the improvements.]]></description><link>https://www.sandromaglione.com/newsletter/my-effect-v4-beta-migrations</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-effect-v4-beta-migrations</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Software Engineering when you have AI]]></title><description><![CDATA[AI gets better, faster, smarter, and more precise. But some hard limits (still) exist. And that's the value you bring as a Software Engineer, as you work with AI.]]></description><link>https://www.sandromaglione.com/newsletter/software-engineering-when-you-have-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/software-engineering-when-you-have-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect, AI and Orchestration]]></title><description><![CDATA[My AI workflow changed (again): from a single AI running the show, to multiple AIs in parallel. I became officially a conductor of AIs, with effect acting as a guard to check the proceedings.]]></description><link>https://www.sandromaglione.com/newsletter/effect-ai-and-orchestration</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-ai-and-orchestration</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Intention as the seed of improvement]]></title><description><![CDATA[What's the lever that maximizes each step in your journey to mastery? It's called Intent. It removes uncertainty, increases focus, and skyrockets confidence and motivation. Let's see how.]]></description><link>https://www.sandromaglione.com/newsletter/intention-as-the-seed-of-improvement</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/intention-as-the-seed-of-improvement</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[The cycle of improvement]]></title><description><![CDATA[How does the path look like from good to better? Turns how the shape is always the same, and it repeats in cycles. But it's not linear, it's not constant, and it involves a lot of down periods.]]></description><link>https://www.sandromaglione.com/newsletter/the-cycle-of-improvement</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-cycle-of-improvement</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Streaming AI with Effect]]></title><description><![CDATA[With AI, streaming is not optional anymore. But streams are complex, aren't they? Well, not really with Effect. This is how I use Effect to make AI requests with streams, parse the result, and wire all together server to client.]]></description><link>https://www.sandromaglione.com/newsletter/streaming-ai-with-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/streaming-ai-with-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect API on Cloudflare]]></title><description><![CDATA[TypeScript API? Well, use Effect. And since Effect is just TypeScript, it just works everywhere. I have been implementing an API with Effect on Cloudflare, and it all works, great. Here is my setup.]]></description><link>https://www.sandromaglione.com/newsletter/effect-api-on-cloudflare</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-api-on-cloudflare</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 14 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect to the rescue]]></title><description><![CDATA[Many are introduced to effect for error handling and dependency injection. Those are huge wins, but effect goes way beyond that. Let me show you a couple of concrete examples.]]></description><link>https://www.sandromaglione.com/newsletter/effect-to-the-rescue</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-to-the-rescue</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Major releases in 2026]]></title><description><![CDATA[If 2025 was not enough, 2026 prospects are even more groundbreaking. A few major release will shake my stack once more: effect v4, xstate v6, TanStack Start, Drizzle v1.]]></description><link>https://www.sandromaglione.com/newsletter/major-releases-in-2026</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/major-releases-in-2026</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[A few Effect modules and how I use them]]></title><description><![CDATA[Effect is everywhere in my codebases, full stack, back and front and scripts and whatever. A few core module are always there, and carry most of the logic. Here they are, and how I use them.]]></description><link>https://www.sandromaglione.com/newsletter/a-few-effect-modules-and-how-i-use-them</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/a-few-effect-modules-and-how-i-use-them</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Dance of Precision and Speed]]></title><description><![CDATA[When should you move fast and work hard, and when should you take a step back and plan? Neither precision nor speed in isolation is the solution, each calls for the other, in a structured process.]]></description><link>https://www.sandromaglione.com/newsletter/the-dance-of-precision-and-speed</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-dance-of-precision-and-speed</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[XState at its Extreme]]></title><description><![CDATA[State management looks easy enough, until it doesn't anymore. That's why you should use XState. And if things are really complex, you will need a full actor system. Let's see how.]]></description><link>https://www.sandromaglione.com/newsletter/xstate-at-its-extreme</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/xstate-at-its-extreme</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to prevent AI messing with your code]]></title><description><![CDATA[The same guardrails we created for humans when writing code must be applied to AI. First check is types (Strict Type Safety), then linting, and testing as the ultimate step. A few notes.]]></description><link>https://www.sandromaglione.com/newsletter/how-to-prevent-ai-messing-with-your-code</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-to-prevent-ai-messing-with-your-code</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Software Architect]]></title><description><![CDATA[When code is written mostly by AI, how do you stay relevant as a software developer? Well, you switch from pure development, to architect and engineer. This is how.]]></description><link>https://www.sandromaglione.com/newsletter/software-architect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/software-architect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Full stack with Effect and AI]]></title><description><![CDATA[I recently deployed a full stack effect app, mostly written by AI, super fast and super type-safe. Effect is a super power, and the AI can leverage it. Here is how.]]></description><link>https://www.sandromaglione.com/newsletter/full-stack-with-effect-and-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/full-stack-with-effect-and-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 19 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to write maintainable code with AI]]></title><description><![CDATA[Coding with AI is becoming more and more a necessity. The new challenge is making sure the AI writes type-safe and maintainable code. Well, it's possible, here is how.]]></description><link>https://www.sandromaglione.com/newsletter/how-to-write-maintainable-code-with-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-to-write-maintainable-code-with-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Counting time]]></title><description><![CDATA[Stop for a moment, just a short one, to understand and appreciate time. But also to notice a few rules, and to count how much does it really take to get a reward from it.]]></description><link>https://www.sandromaglione.com/newsletter/counting-time</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/counting-time</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Client stack for 2026]]></title><description><![CDATA[You can reduce all the complexity of working on the client to a few core dependencies: TanStack Router, Effect, XState. This is how I use them all, to implement everything on the client.]]></description><link>https://www.sandromaglione.com/newsletter/the-client-stack-for-2026</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-client-stack-for-2026</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect AI SDK: A lesson in composing programs]]></title><description><![CDATA[Using AI in your app? Once again, effect comes to the rescue. I have been working with the newest Effect AI SDK, and it's a marvel of composing programs, AI providers, and AI models.]]></description><link>https://www.sandromaglione.com/newsletter/effect-ai-sdk-a-lesson-in-composing-programs</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-ai-sdk-a-lesson-in-composing-programs</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Walking your code with AI]]></title><description><![CDATA[AI is establishing solid roots in the workflow of every software developer. I am experimenting ways to write faster code with AI, without compromises on quality. Here is how.]]></description><link>https://www.sandromaglione.com/newsletter/walking-your-code-with-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/walking-your-code-with-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Release fest: Effect, XState, Next, Drizzle]]></title><description><![CDATA[Some huge releases are lurking on the horizon on the end of 2025. Effect v4, XState v6, Next 16, Drizzle v1. My stack is going to evolve, this is how.]]></description><link>https://www.sandromaglione.com/newsletter/release-fest-effect-xstate-next-drizzle</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/release-fest-effect-xstate-next-drizzle</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Special #100: past and future]]></title><description><![CDATA[Release number 100 of the newsletter! I started publishing every week nearly 2 years ago, every single week on Wednesday. Let's take a moment to look back, and then look forward.]]></description><link>https://www.sandromaglione.com/newsletter/special-100-past-and-future</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/special-100-past-and-future</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Power creep and mastery]]></title><description><![CDATA[You finally unlock this new weapon in the game. Well, that felt good, for a short while. What's next? I guess the only option is a new, even stronger weapon. What about all the older ones? Power crept.]]></description><link>https://www.sandromaglione.com/newsletter/power-creep-and-mastery</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/power-creep-and-mastery</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creative power and uncertainty]]></title><description><![CDATA[Creative work is rewarding, exciting, harsh, and uncertain. When you explore the boundaries, you befriend failure, and failure is the seed for growth and success. So, why some people prefer not to choose?]]></description><link>https://www.sandromaglione.com/newsletter/creative-power-and-uncertainty</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/creative-power-and-uncertainty</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[A solution for your problems]]></title><description><![CDATA[How hard are your personal problems? You define the parameters, you take action. These two makes your solution, any solution. It's only a matter of reducing your action set.]]></description><link>https://www.sandromaglione.com/newsletter/a-solution-for-your-problems</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/a-solution-for-your-problems</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Long term skills]]></title><description><![CDATA[Time pays back. For everything, always, no matter what you do. But how high is the return on investment? And for how long? Let's make time spending a conscious decision.]]></description><link>https://www.sandromaglione.com/newsletter/long-term-skills</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/long-term-skills</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to guarantee failure]]></title><description><![CDATA[In essence: You fail if you stop. But there is more. Even if you work hard and never quit, you will fail if you never adapt or chase the wrong target. Here is how to fail, or how to avoid failure.]]></description><link>https://www.sandromaglione.com/newsletter/how-to-guarantee-failure</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-to-guarantee-failure</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Turning Pro]]></title><description><![CDATA[What does it take to 'turn pro'? The answer is long hours, years of intensity, uncertainty, and sacrifice. You are not a 'pro' based on your skills, it's all about your routine.]]></description><link>https://www.sandromaglione.com/newsletter/turning-pro</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/turning-pro</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Start: The Nature of Hard]]></title><description><![CDATA[Not many things are hard, really. Indeed, all skills, regardless of their complexity, are the result of consistent effort. And consistency requires starting, every day. This is 'hard'.]]></description><link>https://www.sandromaglione.com/newsletter/start-the-nature-of-hard</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/start-the-nature-of-hard</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Time investment: How it works]]></title><description><![CDATA[Time is the ultimate currency. All your skills and accomplishments are the returns of your time investments. Do you know how to manage and optimize your time? Here are the core principles and pitfalls.]]></description><link>https://www.sandromaglione.com/newsletter/time-investment-how-it-works</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/time-investment-how-it-works</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Principles of Uncertainty and Time]]></title><description><![CDATA[Choosing is something you do everyday, every moment. Choosing is about predicting the future, and taking action as a consequence. And the future is uncertain, by definition. So, how do you choose?]]></description><link>https://www.sandromaglione.com/newsletter/principles-of-uncertainty-and-time</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/principles-of-uncertainty-and-time</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 30 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Constraints of time, cost, scope]]></title><description><![CDATA[You are asked to implement a new feature. A large feature. Fast. Turns out it's not possible to have low cost, low time, and high scope. It's a concept called Project Management Triangle.]]></description><link>https://www.sandromaglione.com/newsletter/constraints-of-time-cost-scope</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/constraints-of-time-cost-scope</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 23 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Little Ways Code Works]]></title><description><![CDATA[There are some principles that are valid across disciplines. Biology, geology, chemistry. And code. Yes, code. Here is what science teaches you about writing code.]]></description><link>https://www.sandromaglione.com/newsletter/little-ways-code-works</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/little-ways-code-works</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Development speed how to]]></title><description><![CDATA[You want an app that's reliable and fast. That is just about the same when it comes to development: reliable and fast, long-term. Here are a few techniques to guarantee you can code fast, bug free, for a long time.]]></description><link>https://www.sandromaglione.com/newsletter/development-speed-how-to</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/development-speed-how-to</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Frontend, Drag & Drop, AI and XState]]></title><description><![CDATA[Do you know how to implement Drag & Drop on the web? Well, ask AI. This is how I implemented Drag & Drop starting from AI, all the way to XState, state machines, and actors.]]></description><link>https://www.sandromaglione.com/newsletter/frontend-drag-and-drop-ai-and-xstate</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/frontend-drag-and-drop-ai-and-xstate</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Safety with types: Best practices]]></title><description><![CDATA[Types are designed to protect your code base from any possible misuse. There are some strategies and best practices that will make you even safer from runtime bugs, guaranteed.]]></description><link>https://www.sandromaglione.com/newsletter/safety-with-types-best-practices</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/safety-with-types-best-practices</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 25 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I use statecharts in production]]></title><description><![CDATA[I have been using statecharts for over 1.5 years in production. And it's working great, development speed and no bugs. These are some common patterns I often use with statecharts in XState.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-use-statecharts-in-production</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-use-statecharts-in-production</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why everyone is talking about Effect (second edition)]]></title><description><![CDATA[One year later, and another surge of interest flowing into effect. Job postings, AI, Cluster, LSP, v4, and much more. The best time to learn effect is now, and this is why.]]></description><link>https://www.sandromaglione.com/newsletter/why-everyone-is-talking-about-effect-second-edition</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/why-everyone-is-talking-about-effect-second-edition</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[My top 3 picks from localfirstconf 2025]]></title><description><![CDATA[Second edition of localfirstconf, second year for my flying to Berlin to join the discussion. A striking progress since last year, a lot to discover. These are my top 3 ideas from the conference.]]></description><link>https://www.sandromaglione.com/newsletter/my-top-3-picks-from-localfirstconf-2025</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-top-3-picks-from-localfirstconf-2025</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Your friendly introduction to local-first]]></title><description><![CDATA[In the last year I explored everything local-first (I even built a sync engine). It all comes down to storage and syncing: client database and finding a way to keep it up to date.]]></description><link>https://www.sandromaglione.com/newsletter/your-friendly-introduction-to-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/your-friendly-introduction-to-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Events: the most accurate representation of state]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/events-the-most-accurate-representation-of-state</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/events-the-most-accurate-representation-of-state</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Programming Languages and Games]]></title><description><![CDATA[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?]]></description><link>https://www.sandromaglione.com/newsletter/programming-languages-and-games</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/programming-languages-and-games</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 14 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Declarative, compile-time and runtime]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/declarative-compile-time-and-runtime</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/declarative-compile-time-and-runtime</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 May 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Type safe Game Development, is it possible?]]></title><description><![CDATA[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?]]></description><link>https://www.sandromaglione.com/newsletter/type-safe-game-development-is-it-possible</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/type-safe-game-development-is-it-possible</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Growth, Challenge, Complexity and Meaning]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/growth-challenge-complexity-and-meaning</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/growth-challenge-complexity-and-meaning</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 23 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[What's behind a type safe API]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/what-s-behind-a-type-safe-api</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-s-behind-a-type-safe-api</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Good and bad APIs: IndexedDB]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/good-and-bad-apis-indexeddb</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/good-and-bad-apis-indexeddb</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[In praise of Personal Projects]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/in-praise-of-personal-projects</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/in-praise-of-personal-projects</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Being a speaker at the Effect Days]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/being-a-speaker-at-the-effect-days</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/being-a-speaker-at-the-effect-days</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[My journey before and after Effect]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/my-journey-before-and-after-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-journey-before-and-after-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Lessons from implementing a sync engine]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/lessons-from-implementing-a-sync-engine</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/lessons-from-implementing-a-sync-engine</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[More apps should be local-first]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/more-apps-should-be-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/more-apps-should-be-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Software complexity, engineering, and AI]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/software-complexity-engineering-and-ai</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/software-complexity-engineering-and-ai</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Power to Indie Creators]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/the-power-to-indie-creators</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-power-to-indie-creators</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Personal Software]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/personal-software</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/personal-software</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 12 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Frontend, Local-First, Sync Engines]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/frontend-local-first-sync-engines</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/frontend-local-first-sync-engines</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Goals as creative constraints]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/goals-as-creative-constraints</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/goals-as-creative-constraints</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Software that does not break is type-safe]]></title><description><![CDATA[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]]></description><link>https://www.sandromaglione.com/newsletter/software-that-does-not-break-is-type-safe</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/software-that-does-not-break-is-type-safe</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[AI changed how I search and research]]></title><description><![CDATA[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.]]></description><link>https://www.sandromaglione.com/newsletter/ai-changed-how-i-search-and-research</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/ai-changed-how-i-search-and-research</guid><category><![CDATA[free-thinking]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making money in collaboration with your users]]></title><description><![CDATA[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?]]></description><link>https://www.sandromaglione.com/newsletter/making-money-in-collaboration-with-your-users</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/making-money-in-collaboration-with-your-users</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ideas to start building more apps in 2025]]></title><description><![CDATA[The secret to mastery is continuos practice. The way of the senior developer is paved with new explorations and personal projects. Don't know where to start? These are some ideas for you.]]></description><link>https://www.sandromaglione.com/newsletter/ideas-to-start-building-more-apps-in-2025</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/ideas-to-start-building-more-apps-in-2025</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Everything that happened in 2024 (and beyond)]]></title><description><![CDATA[Plenty of new trends and releases in 2024, something that you appreciate only when you stop a moment to look back. Let me do this for you. Here is all that attracted my attention in 2024.]]></description><link>https://www.sandromaglione.com/newsletter/everything-that-happened-in-2024-and-beyond</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/everything-that-happened-in-2024-and-beyond</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 25 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Writing 101 for developers]]></title><description><![CDATA[The superpower of the 21st century is writing. It's the alchemy of organizing and transmitting ideas. The core of any creative work. Here is a 101 introduction to my writing process.]]></description><link>https://www.sandromaglione.com/newsletter/writing-101-for-developers</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/writing-101-for-developers</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Programming literacy: learn new languages and paradigms]]></title><description><![CDATA[Looking to improve your skills at work? Well, it's all about honing the basics: concepts, syntax, and semantics. That's why you should consider practicing a new programming language or paradigm. It's a revealing experience.]]></description><link>https://www.sandromaglione.com/newsletter/programming-literacy-learn-new-languages-and-paradigms</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/programming-literacy-learn-new-languages-and-paradigms</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Entity Component System to make game dev fun again]]></title><description><![CDATA[Game dev is littered with OOP and mutability. But games are complex, and this situation only leads to madness. But there is a solution: ECS. Let me show you how it works.]]></description><link>https://www.sandromaglione.com/newsletter/entity-component-system-to-make-game-dev-fun-again</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/entity-component-system-to-make-game-dev-fun-again</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Game dev, functional programming, and Entity Component System]]></title><description><![CDATA[Is there such a thing as functional programming game dev? I explored how you would go about making a game with FP. It didn't work that well. But then ECS came along...]]></description><link>https://www.sandromaglione.com/newsletter/game-dev-functional-programming-and-entity-component-system</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/game-dev-functional-programming-and-entity-component-system</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 27 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The database is coming to the client]]></title><description><![CDATA[The client is about to regain its authority and independence from the server, which will make writing client apps easier and more enjoyable than ever. The first step is already here: the database is landing on your browser.]]></description><link>https://www.sandromaglione.com/newsletter/the-database-is-coming-to-the-client</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-database-is-coming-to-the-client</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 20 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[My top 3 skills to learn as a software developer]]></title><description><![CDATA[Some skills will pay more for your time than others. Principles and practices that sit at the core of your daily struggle to make a complex system stand on its own. These are my top 3 picks for you (and why).]]></description><link>https://www.sandromaglione.com/newsletter/my-top-3-skills-to-learn-as-a-software-developer</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-top-3-skills-to-learn-as-a-software-developer</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Event sourcing, local-first, and distributed state]]></title><description><![CDATA[Local-first is a distributed system problem. Everything looks fast and beautiful inside the boundary of a single device, but when your data goes out there it's rough. Event sourcing may be the right tool for the job.]]></description><link>https://www.sandromaglione.com/newsletter/event-sourcing-local-first-and-distributed-state</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/event-sourcing-local-first-and-distributed-state</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Coding for fun (and only later for profit)]]></title><description><![CDATA[I started coding for pure personal interest. I continued coding for the same reason. Still today every time I learn a new language or framework is for the joy of the craft. Skills stack up and eventually it turns into a career.]]></description><link>https://www.sandromaglione.com/newsletter/coding-for-fun-and-only-later-for-profit</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/coding-for-fun-and-only-later-for-profit</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 30 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building a type-safe bridge between client and server]]></title><description><![CDATA[Client and server are calm and relaxed when they don't have to deal with each other. But in production they do, and so it's better to find ways to collaborate. Here is how to resolve the conflict (type) safely.]]></description><link>https://www.sandromaglione.com/newsletter/building-a-type-safe-bridge-between-client-and-server</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/building-a-type-safe-bridge-between-client-and-server</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best practices for writing code you won't regret]]></title><description><![CDATA[A codebase is ever-changing, with new requirements attacking from every direction. We need a solid strategy to avoid lasting damage. Here is a blueprint for writing code that won't break.]]></description><link>https://www.sandromaglione.com/newsletter/best-practices-for-writing-code-you-won-t-regret</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/best-practices-for-writing-code-you-won-t-regret</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[A new golden era for tooling on the web]]></title><description><![CDATA[Long gone are the days of endless configuration files and incompatible tools. Starting from Vite, new tools and frameworks are converging to a unified experience that will make javascript fast and easy again.]]></description><link>https://www.sandromaglione.com/newsletter/a-new-golden-era-for-tooling-on-the-web</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/a-new-golden-era-for-tooling-on-the-web</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 09 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Open source will make you a better programmer]]></title><description><![CDATA[Open source is a feedback machine at scale. It's an open and free manual of patterns and solutions. This is how you can take full advantage of free and open collaboration.]]></description><link>https://www.sandromaglione.com/newsletter/open-source-will-make-you-a-better-programmer</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/open-source-will-make-you-a-better-programmer</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 02 Oct 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[My struggle with data storage for web apps]]></title><description><![CDATA[I want data storage to be simple and fast. Local storage. But I also want collaboration and syncing. Remote storage. Here is a list of possible solutions.]]></description><link>https://www.sandromaglione.com/newsletter/my-struggle-with-data-storage-for-web-apps</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-struggle-with-data-storage-for-web-apps</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 25 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Waiting for a breakthrough: Client, server, and local-first]]></title><description><![CDATA[A big wave of new standards and frameworks is coming, both client and server. But right now we are stuck in the middle. This is how things will change.]]></description><link>https://www.sandromaglione.com/newsletter/waiting-for-a-breakthrough-client-server-and-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/waiting-for-a-breakthrough-client-server-and-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Meta skills of a professional software developer]]></title><description><![CDATA[What meta-skills do I cultivate as a software developer? Communication, writing, learning independence, creative exploration. This is how I think about them.]]></description><link>https://www.sandromaglione.com/newsletter/meta-skills-of-a-professional-software-developer</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/meta-skills-of-a-professional-software-developer</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The State of Local-First]]></title><description><![CDATA[Everything that you should know right now about local-first. It's a new model, with new challenges and not universal solutions yet. This is how to get started today.]]></description><link>https://www.sandromaglione.com/newsletter/the-state-of-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-state-of-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 04 Sep 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Everything is a state management problem]]></title><description><![CDATA[Programming is about managing data. Where the data is stored, how to read it, how to update it, these are all key questions that shape how you develop software.]]></description><link>https://www.sandromaglione.com/newsletter/everything-is-a-state-management-problem</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/everything-is-a-state-management-problem</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Error handling is key: here is how to do it (well)]]></title><description><![CDATA[Errors are a key component of any program. Let's explore multiple strategies for error handling, from throw/catch to the Either type and Monads.]]></description><link>https://www.sandromaglione.com/newsletter/error-handling-is-key-here-is-how-to-do-it-well</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/error-handling-is-key-here-is-how-to-do-it-well</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The story of why I made an Effect course (out now!)]]></title><description><![CDATA[At the beginning it was all fp-ts. Then fp-ts 3.0 was no more and the community became all effect. Soon effect will be everywhere, the course is here to help.]]></description><link>https://www.sandromaglione.com/newsletter/the-story-of-why-i-made-an-effect-course</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-story-of-why-i-made-an-effect-course</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 14 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[State management that scales with state machines]]></title><description><![CDATA[State starts simple, but it will grow complex eventually. useState doesn't fit well with this increase in complexity, but state machines do. Let's see how.]]></description><link>https://www.sandromaglione.com/newsletter/state-management-that-scales-with-state-machines</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/state-management-that-scales-with-state-machines</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 Aug 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The origin of bad code, and how to fix it]]></title><description><![CDATA[Why bad code exists? What makes code 'bad'? Moving from junior to senior dev is about understanding bad code, learning how to overcome it, and never look back.]]></description><link>https://www.sandromaglione.com/newsletter/the-origin-of-bad-code-and-how-to-fix-it</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-origin-of-bad-code-and-how-to-fix-it</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 31 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How (and why) I became obsessed with type safety]]></title><description><![CDATA[You can make your applications unbreakable using types. This is how I went from PHP and dynamic languages to learning types and functional programming.]]></description><link>https://www.sandromaglione.com/newsletter/how-and-why-i-became-obsessed-with-type-safety</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-and-why-i-became-obsessed-with-type-safety</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I built a new platform with all the latest libraries]]></title><description><![CDATA[Typeonce is my new website where I share free courses, workshops, and snippets. Built with React 19, NextJs 15, Tailwindcss v4, and powered by Effect.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-built-a-new-platform-with-all-the-latest-libraries</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-built-a-new-platform-with-all-the-latest-libraries</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[What I learned about writing technical articles on the web]]></title><description><![CDATA[I have been writing online for more than 5 years now. Here is some things that I learned over the years if you are interested in doing the same.]]></description><link>https://www.sandromaglione.com/newsletter/what-i-learned-about-writing-technical-articles-on-the-web</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-i-learned-about-writing-technical-articles-on-the-web</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to achieve type safety from client to server]]></title><description><![CDATA[Type safety gives you more confidence that your software works. You can achieve full type safety on the server, client, and now also between client and server.]]></description><link>https://www.sandromaglione.com/newsletter/how-to-achieve-type-safety-from-client-to-server</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-to-achieve-type-safety-from-client-to-server</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Jul 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[State management in React is a solved problem]]></title><description><![CDATA[XState with state machines and actors provides all the features for a complete state management solution. XState store replaces useReducer for simple usecases.]]></description><link>https://www.sandromaglione.com/newsletter/state-management-in-react-is-a-solved-problem</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/state-management-in-react-is-a-solved-problem</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 26 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[My experience at the biggest React conference worldwide]]></title><description><![CDATA[I attended JSNation and React Summit in Amsterdam as the official representative of the Effect Community: here is what happened and what that you should know.]]></description><link>https://www.sandromaglione.com/newsletter/my-experience-at-the-biggest-react-conference-worldwide</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-experience-at-the-biggest-react-conference-worldwide</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 19 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building blocks of any Frontend app]]></title><description><![CDATA[All you need to build a frontend app: Effect with platform and schema, XState for state management, TailwindCSS, and shadcn/ui using Radix UI and React Aria]]></description><link>https://www.sandromaglione.com/newsletter/building-blocks-of-any-frontend-app</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/building-blocks-of-any-frontend-app</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 12 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is Local-First?]]></title><description><![CDATA[All you need to know about local-first software: what are the advantages of local-first, how does it work in practice, what libraries are available today.]]></description><link>https://www.sandromaglione.com/newsletter/what-is-local-first</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-is-local-first</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 05 Jun 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Server components: Closing the gap between frontend and backend]]></title><description><![CDATA[React 19 is coming with server components. Server components change the way frontend is implemented, closing the gap between frontend and backend developers.]]></description><link>https://www.sandromaglione.com/newsletter/server-components-closing-the-gap-between-frontend-and-backend</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/server-components-closing-the-gap-between-frontend-and-backend</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[My vision for the perfect coding tutorial]]></title><description><![CDATA[What makes a great coding article? How should you structure a tutorial? Start with why, don't make assumptions, ask for feedback early on, cut it short and show me the code.]]></description><link>https://www.sandromaglione.com/newsletter/my-vision-for-the-perfect-coding-tutorial</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/my-vision-for-the-perfect-coding-tutorial</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[The future of building web apps is here]]></title><description><![CDATA[Some major releases are coming in the next few weeks: local first conference in Berlin, React 19 together with Typescript 5.5, Dart 3.4 with static metaprogamming.]]></description><link>https://www.sandromaglione.com/newsletter/the-future-of-building-web-apps-is-here</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/the-future-of-building-web-apps-is-here</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Everything, anything, everywhere with Typescript]]></title><description><![CDATA[You can build anything with Typescript: create client apps for web, desktop, and mobile, create games, create server apps, scripts, cloud apps, and much more.]]></description><link>https://www.sandromaglione.com/newsletter/everything-anything-everywhere-with-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/everything-anything-everywhere-with-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 08 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why everyone is talking about Effect]]></title><description><![CDATA[Effect allows to build complex production Typescript applications that are composable and type safe. This is my take on why you should take a look at Effect, what are the benefits of Effect, and how you can get started with Effect.]]></description><link>https://www.sandromaglione.com/newsletter/why-everyone-is-talking-about-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/why-everyone-is-talking-about-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Core principles for software that scales (in practice)]]></title><description><![CDATA[Implementing large scale software projects requires following some core principles: local reasoning, error handling, testability, debugging, observability, state management, and how these all work in practice.]]></description><link>https://www.sandromaglione.com/newsletter/core-principles-for-software-that-scales-in-practice</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/core-principles-for-software-that-scales-in-practice</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Frameworks and libraries I use for my web and mobile projects]]></title><description><![CDATA[Cross platform development on mobile using Flutter, but also considering React native. Type safety as much as possible with pure functions, pattern matching, effect system. React with nextjs, preact, remix on web.]]></description><link>https://www.sandromaglione.com/newsletter/frameworks-and-libraries-i-use-for-my-web-and-mobile-projects</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/frameworks-and-libraries-i-use-for-my-web-and-mobile-projects</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Architecture and libraries to implement a web app]]></title><description><![CDATA[This is how I implement a web app: local first and PWA (progressive web apps) as architecture, and libraries like effect, XState, tailwindcss to implement the core of the app, state management, and styling.]]></description><link>https://www.sandromaglione.com/newsletter/architecture-and-libraries-to-implement-a-web-app</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/architecture-and-libraries-to-implement-a-web-app</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I got into Functional Programming]]></title><description><![CDATA[This is my journey in learning functional programming and its core concepts, using multiple programming languages: from Lisp and Haskell, to object oriented languages like Dart and Kotlin, all the way to Typescript and the web.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-got-into-functional-programming</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-got-into-functional-programming</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Apr 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Advanced Dart to build Effect: fpdart v2]]></title><description><![CDATA[Learn many powerful and advanced dart's features required to build an Effect System in dart: type system (Never, void, Null), type inference, FutureOr for synchronous and asynchronous functions.]]></description><link>https://www.sandromaglione.com/newsletter/advanced-dart-to-build-effect-fpdart-v2</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/advanced-dart-to-build-effect-fpdart-v2</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 27 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How maintaining an Open Source project looks like]]></title><description><![CDATA[This is my experience as the creator and maintainer of a popular open source library: how to get started, how to make a successful library, how to maintain it, and what are the results.]]></description><link>https://www.sandromaglione.com/newsletter/how-maintaining-an-open-source-project-looks-like</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-maintaining-an-open-source-project-looks-like</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 20 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect systems: Functional Programming to the next level]]></title><description><![CDATA[Learn what is an Effect system and how Effect systems are the future of programming. Instead of using complex functional programming jargon, effect systems focus on solving real-world problems.]]></description><link>https://www.sandromaglione.com/newsletter/effect-systems-functional-programming-to-the-next-level</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-systems-functional-programming-to-the-next-level</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I learn a library by reading code]]></title><description><![CDATA[The best way to explore a library is to read code written by its core maintainers. This is how I learn a new library by reading someone else's code: look for patterns, reimplement similar examples, ask for help.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-learn-a-library-by-reading-code</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-learn-a-library-by-reading-code</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 Mar 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect Days: The beginning of a new era]]></title><description><![CDATA[The Effect Days: 3 days of conference in Vienna all about Effect and the future of Typescript. This is all that happened, why this is the beginning of a new era for software development, and all the main takeaways from my experience at the conference.]]></description><link>https://www.sandromaglione.com/newsletter/effect-days-the-beginning-of-a-new-era</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-days-the-beginning-of-a-new-era</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 28 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[4 Principles for all programming languages]]></title><description><![CDATA[Different programming languages shares similar challenges. There are some common solutions to these problems: error handling, dependency injection, logging and observability.]]></description><link>https://www.sandromaglione.com/newsletter/4-principles-for-all-programming-languages</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/4-principles-for-all-programming-languages</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 21 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Actors and State Machines will solve State Management]]></title><description><![CDATA[Learn what actors and the actor model are and how to use them for state management. Combine XState and Effect to manage complexity and state in any app, both frontend and backend.]]></description><link>https://www.sandromaglione.com/newsletter/actors-and-state-machines-will-solve-state-management</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/actors-and-state-machines-will-solve-state-management</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 14 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[I built a framework: M(e)nimal static site generator]]></title><description><![CDATA[This is how I built a minimal static site generator in Typescript using Effect: how a static site generator works, how it's implemented, and how to publish it to npm as an npx command.]]></description><link>https://www.sandromaglione.com/newsletter/i-build-a-framework-menimal-static-site-generator</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/i-build-a-framework-menimal-static-site-generator</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 07 Feb 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I build a cross-platform app: zero to release]]></title><description><![CDATA[Cross-platform app development with Flutter and Dart: learn how to setup your project, what packages to choose, and how to use them to implement routing, state management, data storage, and UI.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-build-a-cross-platform-app-zero-to-release</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-build-a-cross-platform-app-zero-to-release</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 31 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Under-engineering: less dependencies, more features and performance]]></title><description><![CDATA[It is possible to remove dependencies while also adding features and improving performance: I call this under-engineering. This is how I improved my blog, implemented and published a new open source package.]]></description><link>https://www.sandromaglione.com/newsletter/under-engineering-less-dependencies-more-features-and-performance</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/under-engineering-less-dependencies-more-features-and-performance</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 24 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[What State Management is all about (in practice)]]></title><description><![CDATA[Learn how state management works and what problem it solves: store some state, read the state, update the state, and rerender the user interface after each change.]]></description><link>https://www.sandromaglione.com/newsletter/what-state-management-is-all-about-in-practice</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-state-management-is-all-about-in-practice</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 17 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Contribute to Open Source: complete process step by step]]></title><description><![CDATA[How to make your first contribution to an open source project step by step: research about the topic, fork the repository, read code, complete the implementation, and send a PR.]]></description><link>https://www.sandromaglione.com/newsletter/contribute-to-open-source-complete-process-step-by-step</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/contribute-to-open-source-complete-process-step-by-step</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 10 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How I learn a new library (when documentation is not enough)]]></title><description><![CDATA[How to learn a new library when the official documentation is not enough: use the API reference, explore and search the open source repository, read tests, ask for help from the community.]]></description><link>https://www.sandromaglione.com/newsletter/how-i-learn-a-new-library</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-i-learn-a-new-library</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 03 Jan 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to create a State Management library]]></title><description><![CDATA[This is how I created a state management library in dart and flutter. Learn how to implement state machines and statecharts in dart, how streaming works in flutter, and how state management works in practice.]]></description><link>https://www.sandromaglione.com/newsletter/how-to-create-a-state-management-library</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/how-to-create-a-state-management-library</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 27 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[State management with XState State Machines and Effect]]></title><description><![CDATA[Learn what is a state machine, how a state machine can be used to model any application, and how to use XState with Effect to implement a complete Typescript project with full type-safety.]]></description><link>https://www.sandromaglione.com/newsletter/state-management-with-xstate-state-machines-and-effect</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/state-management-with-xstate-state-machines-and-effect</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 20 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[What I learned making a game in 2 days]]></title><description><![CDATA[I share my experience making a game in Flutter in 2 days for the Flame Game Jam 3.0: how to create a game from zero by yourself for a game jam with limited time and resources.]]></description><link>https://www.sandromaglione.com/newsletter/what-i-learned-making-a-game-in-2-days</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/what-i-learned-making-a-game-in-2-days</guid><category><![CDATA[games]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 13 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learn Functional Programming with OCaml]]></title><description><![CDATA[Learn how to write functional programming code with the OCaml programming language: how to install OCaml, how it works, and what makes OCaml great to learn functional programming.]]></description><link>https://www.sandromaglione.com/newsletter/learn-functional-programming-with-ocaml</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/learn-functional-programming-with-ocaml</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 06 Dec 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[CLI application with Functional Programming using fpdart]]></title><description><![CDATA[Command-Line Interface (CLI) written in dart using the fpdart package with Functional Programming. Subscribe to the newsletter of sandromaglione.com for more.]]></description><link>https://www.sandromaglione.com/newsletter/cli-application-with-functional-programmng-using-fpdart</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/cli-application-with-functional-programmng-using-fpdart</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 29 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Effect + NextJs + ConvertKit: the future of Typescript]]></title><description><![CDATA[Application written using Effect, Typescript, and NextJs to subscribe users to your newsletter on ConvertKit. Subscribe to the newsletter of sandromaglione.com for more.]]></description><link>https://www.sandromaglione.com/newsletter/effect-nextjs-convertkit-the-future-of-typescript</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/effect-nextjs-convertkit-the-future-of-typescript</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 22 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[Timeless programming: learn not a language, learn the principles]]></title><description><![CDATA[Writing to refine your ideas and better communicate with other people, Coding to transform your ideas in concrete products that a machine understands and executes for you.]]></description><link>https://www.sandromaglione.com/newsletter/timeless-programming-principles-of-programming-languages</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/timeless-programming-principles-of-programming-languages</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 15 Nov 2023 00:00:00 GMT</pubDate></item><item><title><![CDATA[2 skills for the 100 years - Writing and coding]]></title><description><![CDATA[Writing to refine your ideas and better communicate with other people, Coding to transform your ideas in concrete products that a machine understands and executes for you.]]></description><link>https://www.sandromaglione.com/newsletter/2-skills-for-the-100-years-writing-and-coding</link><guid isPermaLink="true">https://www.sandromaglione.com/newsletter/2-skills-for-the-100-years-writing-and-coding</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[Sandro Maglione]]></dc:creator><pubDate>Wed, 08 Nov 2023 00:00:00 GMT</pubDate></item></channel></rss>