<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><description>The Coding Explorer 💻・Sharing patterns to build type-safe web &amp; mobile apps・Typescript・Effect・React・XState&#xA;&#xA;Helping devs at http://typeonce.dev 🚀</description><link>https://bsky.app/profile/sandromaglione.bsky.social</link><title>@sandromaglione.bsky.social - Sandro Maglione</title><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldych7hit22h</link><description>Using @tailwindcss.com for styling?&#xA;&#xA;Here are some not-obvious strategies to make your styles more composable (using v4) 🧱</description><pubDate>23 Dec 2024 16:01 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldych7hit22h</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldxtelwyo22x</link><description>Last release of the year in the newsletter, with a look back at everything that happened in 2024&#xA;&#xA;And it happened a lot 🤯&#xA;&#xA;www.sandromaglione.com/newsletter</description><pubDate>23 Dec 2024 11:31 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldxtelwyo22x</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldgoadzdlc2l</link><description>✨ TypeScript tip ✨&#xA;&#xA;A function that returns Tagged Classes&#xA;👉 Type a class with `new () =&gt; T`&#xA;👉 Required `Tag` type and value&#xA;👉 Return a class with `_tag`&#xA;&#xA;Call the function from `extends` to get the class 🪄</description><pubDate>16 Dec 2024 15:44 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldgoadzdlc2l</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldg7sr56ps2s</link><description>My writing 101 tips in this week newsletter&#xA;&#xA;I have been writing on the web for (more than) a few years now&#xA;&#xA;Exploring my setup and process this week 👇&#xA;&#xA;www.sandromaglione.com/newsletter</description><pubDate>16 Dec 2024 11:25 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldg7sr56ps2s</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldbnwukeh225</link><description>The example that made me get CSS subgrid ✨&#xA;&#xA;A superpower that can be used for many layouts&#xA;&#xA;https://www.typeonce.dev/article/the-example-that-made-me-get-css-subgrid</description><pubDate>14 Dec 2024 15:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldbnwukeh225</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ldb6ylzoek2p</link><description>Articles are coming to typeonce.dev 👀&#xA;&#xA;For everything that doesn’t require long explanations, but just short and to-the-point examples 👇</description><pubDate>14 Dec 2024 11:27 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ldb6ylzoek2p</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3ld4jexlax22x</link><description>New update on pubdev with package download count 👀&#xA;&#xA;Turns out fpdart is downloaded 90_000 times each week 🙌 (number formatting intended)</description><pubDate>12 Dec 2024 14:50 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3ld4jexlax22x</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lczzkvzmfk2g</link><description>This is what you get when you bet on @effect-ts.bsky.social and the community around it ✨</description><pubDate>11 Dec 2024 15:02 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lczzkvzmfk2g</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcxm46yymk2l</link><description>✨ TypeScript Tip ✨&#xA;&#xA;Rest parameters: Allow passing any number of arguments to a function&#xA;&#xA;Make your API easier to use, avoiding multiple function calls 🤝</description><pubDate>10 Dec 2024 15:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcxm46yymk2l</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcvaxlenpk2f</link><description>✨ TypeScript Tip ✨&#xA;&#xA;Function overloads with types&#xA;👉 Wrap type in `{}`&#xA;👉 Provide 2 different signatures&#xA;&#xA;Allows to call the same function with different parameters, and different results&#xA;&#xA;Runtime problems may apply 🙌&#xA;&#xA;This pattern is useful in library-land to provide a better API for the end user</description><pubDate>09 Dec 2024 17:31 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcvaxlenpk2f</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcuxqcsshs22</link><description>Programming literacy in this week newsletter 💡&#xA;&#xA;&gt; The ability to read, write, and understand code; programming concepts, syntax, and semantics, as well as applying skills to solve problems and communicate ideas&#xA;&#xA;sandromaglione.com/newsletter&#xA;https://sandromaglione.com/newsletter</description><pubDate>09 Dec 2024 14:46 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcuxqcsshs22</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcsijvn32c2y</link><description>✨ TypeScript Tip ✨&#xA;&#xA;Type classes using `new`&#xA;👉 `new` keyword&#xA;👉 Constructor parameters inside `()`&#xA;👉 Class parameters after `=&gt;`&#xA;&#xA;You can mark a type as a constructor signature, something that can be instantiated using `new` 👇</description><pubDate>08 Dec 2024 15:08 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcsijvn32c2y</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcnkt7slec2g</link><description>✨ Introducing ECS for TypeScript ✨&#xA;&#xA;typeonce/ecs is a zero dependencies library to bring the Entity Component System pattern in your game&#xA;&#xA;Simple, working with any renderer, type safe and composable 🕹️&#xA;&#xA;https://github.com/typeonce-dev/ecs</description><pubDate>06 Dec 2024 16:06 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcnkt7slec2g</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcg76wawf22s</link><description>Systems in ECS just got a simple as it gets 🕹️&#xA;&#xA;Define systems, dependencies, and input all type safe and inferred for you&#xA;&#xA;☑️ Components&#xA;☑️ Systems &#xA;☑️ Entities&#xA;&#xA;Closer to the full API 🔜</description><pubDate>03 Dec 2024 17:49 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcg76wawf22s</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcdhqqtffc2x</link><description>ECS + @pixijs.com + MatterJS = 🕹️&#xA;&#xA;Compose systems to build a complex game with physics and rendering&#xA;&#xA;ECS keeps everything organized and under control 🫡</description><pubDate>02 Dec 2024 15:44 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcdhqqtffc2x</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcd2phvwrc2g</link><description>Have you ever considered making a game?&#xA;&#xA;Well, then you should learn about Entity Component System 🕹️&#xA;&#xA;An introduction for you in this week newsletter 👇&#xA;sandromaglione.com/newsletter</description><pubDate>02 Dec 2024 11:51 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcd2phvwrc2g</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcax72wmts25</link><description>Integrate physics with matterjs and ECS in your game 🧱&#xA;&#xA;Each system as simple as it gets, a function and a query is all you need 👇</description><pubDate>01 Dec 2024 15:43 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcax72wmts25</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lcaf3bfz522f</link><description>Making the API as simple and safe in my ECS in TypeScript 🕹️&#xA;&#xA;Define a component with a simple class, auto tagged and ready to use&#xA;&#xA;Simple and safe 🪄</description><pubDate>01 Dec 2024 10:18 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lcaf3bfz522f</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbzmpsqgj22e</link><description>Working Entity Component System with TypeScript in action 🕹️&#xA;&#xA;Simple architecture for organised code and powerful results 👇</description><pubDate>28 Nov 2024 17:47 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbzmpsqgj22e</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbx4xnmnqs2b</link><description>ECS implementation in TypeScript achieved 🫡&#xA;&#xA;TypeScript only, extensible, working with any renderer, type safe and composable 🕹️&#xA;&#xA;May be the beginning of something &#xA;&#xA;#game-development #typescript #games #ecs</description><pubDate>27 Nov 2024 17:59 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbx4xnmnqs2b</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbwhppnvfs2j</link><description>Entity Component System (ECS) brings composability to game development 🪄&#xA;&#xA;Split data and logic, and just compose entities with what they need to operate&#xA;&#xA;Clean, composable and powerful 🔥</description><pubDate>27 Nov 2024 11:39 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbwhppnvfs2j</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbumfnzpgc23</link><description>Local-only calories tracker app project out now 🚀&#xA;&#xA;Learn how to build a client-only app with database included in the browser with PGLite 🐘&#xA;&#xA;@effect-ts.bsky.social + @drizzle.team + @tanstack.com router + XState &#xA;&#xA;https://www.typeonce.dev/course/calories-tracker-local-only-app</description><pubDate>26 Nov 2024 17:58 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbumfnzpgc23</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbrhnueqbc2i</link><description>Functional programming in games? 🤨&#xA;&#xA;I have been exploring a deep hole this week, and I may have found something&#xA;&#xA;Some ideas in this week newsletter 👇&#xA;www.sandromaglione.com/newsletter</description><pubDate>25 Nov 2024 11:55 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbrhnueqbc2i</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lboswyyzjs2a</link><description>New project landing next week Tuesday 26 November 🚀&#xA;&#xA;Local-only calories tracker app&#xA;🏗️ @effect-ts.bsky.social &#xA;⚡️ @pglite.dev with live queries&#xA;📄 @drizzle.team &#xA;🔗 Actors with XState &#xA;🧱 @tanstack.com router&#xA;&#xA;Your next local-first stack 👇</description><pubDate>24 Nov 2024 10:39 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lboswyyzjs2a</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbmgoq5p7c2t</link><description>Upcoming local-only project is going to be an interesting one 🫡&#xA;&#xA;Local database with @effect-ts.bsky.social schemas, migrations, XState state management, @tanstack.com router and more 🪄&#xA;&#xA;Preview link: https://www.typeonce.dev/course/calories-tracker-local-only-app</description><pubDate>23 Nov 2024 11:54 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbmgoq5p7c2t</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbm5sqjewc2b</link><description>Add URL state to this and you have everything that you need 🤝&#xA;&#xA;[contains quote post or other embedded content]</description><pubDate>23 Nov 2024 09:15 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbm5sqjewc2b</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbkk75u5t22a</link><description>@tailwindcss.com v4 is out in beta 🚀&#xA;&#xA;I have been using v4 for months now (early alpha)&#xA;&#xA;It empowers all my projects&#xA;🪄 No more js, configuration CSS only&#xA;🫡 Automatic source detection&#xA;💯 New custom utilities&#xA;🏗️ New custom variants&#xA;&#xA;And never came back 👇</description><pubDate>22 Nov 2024 17:52 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbkk75u5t22a</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbheybkec224</link><description>New project coming: Local-only calories tracker app&#xA;&#xA;A key component of a local-first app is a local data store&#xA;&#xA;This is how to implement a local postgres database 👇&#xA;https://www.typeonce.dev/course/calories-tracker-local-only-app&#xA;&#xA;@drizzle.team @pglite.dev @tailwindcss.com @vite.dev @tanstack.com @effect-ts.bsky.social</description><pubDate>21 Nov 2024 11:40 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbheybkec224</guid></item><item><link>https://bsky.app/profile/sandromaglione.bsky.social/post/3lbh4o75xuk2t</link><description>Introduce yourself with four video games 🕹️&#xA;&#xA;[contains quote post or other embedded content]</description><pubDate>21 Nov 2024 09:11 +0000</pubDate><guid isPermaLink="false">at://did:plc:3n367pt73t5lsof7vmsbrcva/app.bsky.feed.post/3lbh4o75xuk2t</guid></item></channel></rss>