{ "version": "https://jsonfeed.org/version/1", "title": "Playful Programming's JSON Feed", "home_page_url": "https://playfulprogramming.com", "feed_url": "https://playfulprogramming.com/feed.json", "description": "Learning programming from magically majestic words. A place to learn about all sorts of programming topics from entry-level concepts to advanced abstractions", "icon": "https://playfulprogramming.com/image.png", "items": [ { "content_html": "When I engage with many engineers, they often have incredibly bright minds; capable of doing just about anything they set their minds to. However, ...", "url": "https://playfulprogramming.com/posts/how-to-communicate", "title": "How to Communicate", "summary": "Communication is one of the most critical skills for engineers to master, yet it's often overlooked.", "date_modified": "2026-03-16T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "During a kickoff call with PDRT's recruiter, they had mentioned a strong emphasis on mentorship. Once I had joined the company, I found out why: Th...", "url": "https://playfulprogramming.com/posts/inheriting-bad-tech", "title": "What I Did When I Inherited Bad Tech", "summary": "How I helped turn around a struggling engineering team by rethinking our approach to development.", "date_modified": "2026-03-08T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "After a year at a company we'll call \"PDRT,\" I did what I believe more engineers should be doing annually: I asked for a raise. I was doing my due ...", "url": "https://playfulprogramming.com/posts/how-a-promotion-can-kill-a-career", "title": "How a Promotion Can Kill a Career", "summary": "Why you should be cautious of moving too quickly with your titles.", "date_modified": "2026-03-02T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "A thing to note about a company I used to work for — \"PDRT\": They were originally an in-office sort of company before I had joined. While they were...", "url": "https://playfulprogramming.com/posts/in_person_vs_remote_teams", "title": "In-Person vs Remote Engineering Teams", "summary": "An exploration of the pros and cons of in-person and remote engineering teams, drawing from personal experience.", "date_modified": "2026-02-20T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Today marks a major milestone for open-source education: \"This is Learning\" and \"Playful Programming\" are joining forces. We are bringing two commu...", "url": "https://playfulprogramming.com/posts/pfp-this-is-learning-merger", "title": "Merging the \"This Is\" Community into \"Playful Programming\"", "summary": "This is Learning and Playful Programming are merging to create a stronger open-source education community with 750+ articles and expanded resources.", "date_modified": "2026-02-09T20:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hey everyone, hope you are doing well and having a great start to the new year 2026. If you are here, I am sure either you are excited about AI or ...", "url": "https://playfulprogramming.com/posts/How-AI-is-changing-my-development-workflow-and-I-am-excited-about-it", "title": "How AI is changing my development workflow and I am excited about it", "summary": "If you are here, I am sure either you are excited about AI or you are scared about it. I am in the first category and super excited about AI and how it's changing my development workflow", "date_modified": "2026-02-09T00:07:31.869Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Onboarding in the Ever-Changing World of AI I’ve recently joined a new company, and I wanted to share my experience from my\r\nfirst week- what onboa...", "url": "https://playfulprogramming.com/posts/onboarding-in-the-age-of-ai", "title": "Onboarding in the Ever-Changing World of AI", "summary": "I’ve recently joined a new company, and I wanted to share my experience from my first week, what onboarding used to look like, and how AI is changing the game.", "date_modified": "2026-02-09T00:00:00.000Z", "author": { "name": "Alem Tuzlak", "url": "https://playfulprogramming.com/unicorns/alemtuzlak" } }, { "content_html": "Shortly after I signed the contracts for my new VP role , my newly minted CTO and I met up and I got to ask him many questions. While we discussed ...", "url": "https://playfulprogramming.com/posts/tradeoffs-in-engineering-identities", "title": "Tradeoffs in Engineering Identity", "summary": "Finding your engineering identity is a journey of balancing tradeoffs. Let's explore the key tradeoffs that shape your path.", "date_modified": "2026-02-02T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "My current setup looks a lot like most people's: cloud storage, cloud DNS, cloud everything. It works well, it's incredibly convenient, and I don't...", "url": "https://playfulprogramming.com/posts/why-a-home-server", "title": "Why I’m Building My Own Home Server", "summary": "Exploring the motivation behind why I'm building a home server.", "date_modified": "2026-01-30T00:00:00.000Z", "author": { "name": "Sarah Gerrard", "url": "https://playfulprogramming.com/unicorns/ladybluenotes" } }, { "content_html": "Prompting is usually the first thing people reach for when they want better results from an AI system. If the output isn’t quite right, the fix fee...", "url": "https://playfulprogramming.com/posts/ai-context-as-config", "title": "AI Context as Configuration, Not Prompts", "summary": "Stop repeating yourself in every prompt. Use files like agents.md to define project conventions, rules for universal constraints, and skills for optional capabilities. Prompts stay focused on the task, context lives where it belongs, and behaviour becomes predictable.", "date_modified": "2026-01-21T00:00:00.000Z", "author": { "name": "Sarah Gerrard", "url": "https://playfulprogramming.com/unicorns/ladybluenotes" } }, { "content_html": "Being the lead maintainer of TanStack Form, I wanted to make sure that we supported the then-upcoming release of React Compiler properly. While it ...", "url": "https://playfulprogramming.com/posts/react-compiler-library-support", "title": "Adapting Library Logic for React Compiler", "summary": "A deep dive into debugging React Compiler issues involving object mutation and referential stability.", "date_modified": "2026-01-19T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "By technical books and documentation, I mean any sort of nonfiction longform content—detailed blogs, books, or courses. I'll refer mostly to books,...", "url": "https://playfulprogramming.com/posts/how-i-read-technical-books-and-documentation", "title": "How I read technical books and documentation", "summary": "Don't skip out on a book just because it's long!", "date_modified": "2026-01-18T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "Every year, I like to learn a new language to force myself to think differently. It's easy to get stuck in your ways. When I only knew JavaScript, ...", "url": "https://playfulprogramming.com/posts/committing-to-learning-go-in-2026", "title": "Committing to learning Go in 2026", "summary": "Time to learn Golanguage", "date_modified": "2026-01-16T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "There’s an unspoken rule many of us learn early: Don’t be wrong where people can see it. Once your work is public—open source contributions, pull r...", "url": "https://playfulprogramming.com/posts/making-mistakes", "title": "Making Mistakes in Public Isn’t a Failure", "summary": "Working in public means being visible while learning. That isn’t a weakness—it’s how real software gets built.", "date_modified": "2026-01-14T00:00:00.000Z", "author": { "name": "Sarah Gerrard", "url": "https://playfulprogramming.com/unicorns/ladybluenotes" } }, { "content_html": "This is one of those blogs I am writing for future me. Thanks me from the past! Every so often, I get asked the following about Rust's 'static life...", "url": "https://playfulprogramming.com/posts/rusts-static-doesnt-imply-memory-leaks", "title": "Rust's `'static` doesn't imply memory leaks", "summary": "Leaking memory is one way to get a value living for `'static`, but it's not the only way", "date_modified": "2026-01-11T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "Open source projects don’t run on good intentions. Most large OSS ecosystems don’t have predictable or guaranteed income streams. There’s no steady...", "url": "https://playfulprogramming.com/posts/ads-and-performance", "title": "Ads as a Performance Budget Problem", "summary": "Exploring how ads impact website performance and strategies to manage their effects.", "date_modified": "2026-01-07T00:00:00.000Z", "author": { "name": "Sarah Gerrard", "url": "https://playfulprogramming.com/unicorns/ladybluenotes" } }, { "content_html": "Intro When I just started out learning React, one of the concepts that I initially misunderstood was rendering . You see, in a time before React, t...", "url": "https://playfulprogramming.com/posts/where-react-performance-issues-start", "title": "Where React performance issues start", "summary": "Let's dive into the React fundamentals. This will help us build up a solid mental model that will allow us to understand what happens when react updates the UI.", "date_modified": "2026-01-06T00:00:00.000Z", "author": { "name": "Courtney Hackshaw", "url": "https://playfulprogramming.com/unicorns/ckhackshaw" } }, { "content_html": "As a developer, you have to take control of your projects every day. Whether it is a company repository, an open source project you maintain or col...", "url": "https://playfulprogramming.com/posts/take-control-of-your-job-with-gitlens-launchpad-4oo2", "title": "Take control of your job with GitLens Launchpad", "summary": "As a developer, you have to take control of your projects every day. Whether it is a company...", "date_modified": "2025-12-23T07:00:00.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Preface Rich text editors are everywhere: blogs and CMS dashboards, documentation tools, chat windows - you name it. We interact with them constant...", "url": "https://playfulprogramming.com/posts/fundamentals-of-rich-text-editors", "title": "Fundamentals of Rich Text Editors", "summary": "The mental model I wish I had when I started working with WYSIWYG editors: document models, transactions, and custom nodes explained in 10 minutes.", "date_modified": "2025-12-19T13:45:00.284Z", "author": { "name": "Szymon Chudy", "url": "https://playfulprogramming.com/unicorns/szymonchudy" } }, { "content_html": "Preface In today's interconnected world, building software isn't just about writing great code - it's about creating experiences that resonate with...", "url": "https://playfulprogramming.com/posts/building-for-the-world-developers-guide-to-i18n-and-l10n", "title": "Building for the World: A Developer's Guide to Internationalization and Localization", "summary": "Practical introduction to internationalization (i18n) and localization (l10n) - from a developer's point of view.", "date_modified": "2025-12-19T13:45:00.284Z", "author": { "name": "Szymon Chudy", "url": "https://playfulprogramming.com/unicorns/szymonchudy" } }, { "content_html": "Disclaimer: In this article, I will be exploring some deeply uncomfortable topics in regard to my mental health and care I received in my youth. If...", "url": "https://playfulprogramming.com/posts/psychosis-hyper-logic-and-engineering", "title": "Psychosis, Hyper-Logic, and Engineering", "summary": "A personal story about trauma, mental health, and how technology helped me survive long-term.", "date_modified": "2025-12-14T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "👋 Introduction I’ve been doing software development for many years and have worn a few hats, often at the same time. Over the last several years,...", "url": "https://playfulprogramming.com/posts/terraform-zero-to-hero", "title": "Terraform: From Zero to Hero", "summary": "A guide to learning Terraform from scratch, including key concepts, setup, and workflow.", "date_modified": "2025-12-14T00:00:00.000Z", "author": { "name": "Aaron Sayles", "url": "https://playfulprogramming.com/unicorns/erns" } }, { "content_html": "I love VS Code. It is fast, flexible, and works for almost any stack. But the default layout is not great if you want a clean space to think. The e...", "url": "https://playfulprogramming.com/posts/how-i-created-a-cozy-workspace-in-vs-code-4bf0", "title": "How I created a Cozy Workspace in VS Code", "summary": "I love VS Code. It is fast, flexible, and works for almost any stack. But the default layout is not...", "date_modified": "2025-12-11T15:54:26.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Early on in becoming a VP, I had a friend who was a COO for a much more successful company being paid 30% less than I was. Why? He's a better engin...", "url": "https://playfulprogramming.com/posts/career-inequalities", "title": "Confronting Career Inequalities", "summary": "Reflecting on the disparities in pay and respect in the tech industry.", "date_modified": "2025-12-09T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Just a week ago, Google launched Antigravity , and why not give it a try and share my experience? And here I am for this. In this article, I'll tal...", "url": "https://playfulprogramming.com/posts/the-mood-mirror-app-my-antigravity-first-experience-10a4", "title": "The Mood Mirror App - My Antigravity first experience", "summary": "Just a week ago, Google launched Antigravity, and why not give it a try and share my experience? And...", "date_modified": "2025-12-04T06:03:00.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I'm often asked how I was able to break into tech. I'm happy to answer this question; I've written and will continue to write about the topic, tryi...", "url": "https://playfulprogramming.com/posts/survivorship-bias", "title": "Confronting Survivorship Bias", "summary": "A cautionary tale about successes in my career and survivorship bias.", "date_modified": "2025-12-01T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "I remembered some time ago — when I started getting into consulting — being given some guidance by someone who'd done consulting for many years: \"I...", "url": "https://playfulprogramming.com/posts/negotiating-for-vp-role", "title": "Negotiating for a VP Role", "summary": "The story of how I negotiated my way into a VP role and the lessons learned along the way.", "date_modified": "2025-11-24T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "I recently had a look at the Chrome MCP server and it looks really cool. So, let me show you a quick example of what it can do. Getting Started Fir...", "url": "https://playfulprogramming.com/posts/automate-ui-bug-fixing-with-chrome-mcp-server-and-copilot-2131", "title": "Automate UI Bug Fixing with Chrome MCP Server and Copilot", "summary": "I recently had a look at the Chrome MCP server and it looks really cool. So, let me show you a quick...", "date_modified": "2025-11-24T20:03:04.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "VS Code tasks are powerful, but most developers barely use them. The problem is not the feature itself. It is the workflow. Tasks are hidden behind...", "url": "https://playfulprogramming.com/posts/why-i-built-taskdeck-and-how-it-improves-your-vs-code-workflow-4fk9", "title": "Why I Built TaskDeck and How It Improves Your VS Code Workflow", "summary": "VS Code tasks are powerful, but most developers barely use them. The problem is not the feature...", "date_modified": "2025-11-20T12:50:24.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Before we dive into the details, here is the video version of this article if you prefer to watch it first and then come back here for a slower, wr...", "url": "https://playfulprogramming.com/posts/how-github-copilot-uses-mcp-tools-behind-the-scenes-11nk", "title": "How GitHub Copilot Uses MCP Tools Behind the Scenes", "summary": "Before we dive into the details, here is the video version of this article if you prefer to watch it...", "date_modified": "2025-11-18T20:16:16.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "My friend Obi introduced me to his CTO to help them solve some issues with their 3D code. I spoke with their CTO. I listened to their business need...", "url": "https://playfulprogramming.com/posts/fractional-leadership-in-practice", "title": "Fractional Leadership in Practice", "summary": "How taking on a short-term leadership contract can pave the way to long-term opportunities.", "date_modified": "2025-11-17T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Unless you’ve been living under a rock, it’s hard to miss the rise of Generative AI. At the centre of this movement are Large Language Models (LLMs...", "url": "https://playfulprogramming.com/posts/on-device-ai-with-the-google-chrome-prompt-api-2jbe", "title": "On-Device AI with the Google Chrome Prompt API", "summary": "Unless you’ve been living under a rock, it’s hard to miss the rise of Generative AI. At the centre of...", "date_modified": "2025-11-17T18:50:02.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Finding the ideal IDE for .NET work is rarely a straightforward journey. As .NET developers, I invest huge amounts of time in tooling, and every an...", "url": "https://playfulprogramming.com/posts/why-i-use-jetbrains-rider-for-net-development-2a8k", "title": "Why I Use JetBrains Rider for .NET Development", "summary": "Finding the ideal IDE for .NET work is rarely a straightforward journey. As .NET developers, I invest...", "date_modified": "2025-11-13T09:55:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In a world of remote work, I'm often asked why I'm so active in my local developer community. See, I'm based out of Sacramento, a city two hours ou...", "url": "https://playfulprogramming.com/posts/the-power-of-showing-up", "title": "The Power of Showing Up", "summary": "How being active in your local developer community can open unexpected career doors.", "date_modified": "2025-11-10T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "It’s 2004. Your buddy’s older brother just doubled his business overnight by building a website that floods leads into his lawncare business. Sudde...", "url": "https://playfulprogramming.com/posts/prepping-your-ecomm-site-for-agentic-apocalypse", "title": "Prepping Your Ecommerce Site for the Agentic Apocalypse", "summary": "A guide on how to prepare your e-commerce site for AI-driven search and shopping, covering on-site content, structured data, and off-site brand presence.", "date_modified": "2025-11-03T00:00:00.000Z", "author": { "name": "Zion Emond", "url": "https://playfulprogramming.com/unicorns/zionemond" } }, { "content_html": "The job market is tough right now. In 2022, the industry saw a lot of layoffs. Then, high interest rates and the rise of AI tools like ChatGPT has ...", "url": "https://playfulprogramming.com/posts/how-i-chose-the-tech-stack-for-job-helper", "title": "How I Chose The Tech Stack For Job Helper", "summary": "Choosing a tech stack isn’t just about picking trendy tools, it’s about aligning architecture with real-world needs.", "date_modified": "2025-10-27T00:00:00.000Z", "author": { "name": "Courtney Hackshaw", "url": "https://playfulprogramming.com/unicorns/ckhackshaw" } }, { "content_html": "I have wanted to write about tech conferences for a while, and last week I was at Codemotion in Milan. Perfect excuse to finally do it. If you foll...", "url": "https://playfulprogramming.com/posts/codemotion-milan-2025-why-large-tech-conferences-matter-5e5j", "title": "Codemotion Milan 2025: Why Large Tech Conferences Matter", "summary": "I have wanted to write about tech conferences for a while, and last week I was at Codemotion in...", "date_modified": "2025-10-22T15:52:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "\"I did it! I can't believe that I did it!\" After 10 years in the programming field — years of working through complex coding problems, managing tea...", "url": "https://playfulprogramming.com/posts/navigating-leadership-risks", "title": "Navigating the Risks in Leadership", "summary": "Understanding the challenges and rewards of stepping into leadership roles.", "date_modified": "2025-10-20T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "When I'm writing this I'm still on the train back from ReactJSDay , the largest conference on ReactJS in Italy, reflecting on something that happen...", "url": "https://playfulprogramming.com/posts/reactjs-day-2025-tanstack-start-real-world-experiences-16b9", "title": "ReactJS Day 2025: TanStack Start & Real World Experiences", "summary": "When I'm writing this I'm still on the train back from ReactJSDay, the largest conference on ReactJS...", "date_modified": "2025-10-20T18:32:45.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "The world of web development is constantly evolving, with a strong emphasis on performance, user experience, and efficient deployment. Angular , a ...", "url": "https://playfulprogramming.com/posts/essential-angular-ssr-config-to-deploy-on-vercel-2lka", "title": "Essential Angular SSR Config To Deploy On Vercel", "summary": "The world of web development is constantly evolving, with a strong emphasis on performance, user...", "date_modified": "2025-10-16T09:57:01.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "For me, in general, the best way to learn something new is to start from zero and hit “publish.” That’s exactly what I did when I decided to rebuil...", "url": "https://playfulprogramming.com/posts/building-my-new-website-with-astro-github-copilot-and-aws-amplify-3eoc", "title": "Building My New Website with Astro, GitHub Copilot, and AWS Amplify", "summary": "For me, in general, the best way to learn something new is to start from zero and hit...", "date_modified": "2025-10-07T12:41:50.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In the world of web development, building dynamic and engaging user interfaces often leads developers to powerful frameworks like Angular . Known f...", "url": "https://playfulprogramming.com/posts/seamless-synergy-hosting-your-angular-app-on-firebase-144i", "title": "Seamless Synergy: Hosting Your Angular App on Firebase", "summary": "In the world of web development, building dynamic and engaging user interfaces often leads developers...", "date_modified": "2025-10-03T14:47:20.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In the AI era, we can do many different things with LLM: generate code, images, videos or ask whatever we want and wait for an answer. The AI is he...", "url": "https://playfulprogramming.com/posts/improve-your-git-commit-messages-with-gitlens-tips-50hg", "title": "Improve Your Git Commit Messages with GitLens Tips", "summary": "In the AI era, we can do many different things with LLM: generate code, images, videos or ask...", "date_modified": "2025-10-03T06:13:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "As developers, we obsess over performance, accessibility, and design — but how often do we think about the environmental impact of the websites we ...", "url": "https://playfulprogramming.com/posts/introducing-green-software-indicator-a-browser-extension-for-a-greener-web-5692", "title": "🌱 Introducing Green Software Indicator: a Browser Extension for a greener web", "summary": "As developers, we obsess over performance, accessibility, and design — but how often do we think...", "date_modified": "2025-09-30T20:05:25.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Every business need for a reliable and scalable cloud infrastructure, this is precisely where Azure steps in, offering a powerful and flexible solu...", "url": "https://playfulprogramming.com/posts/deploying-your-angular-app-to-azure-53nc", "title": "Deploying Your Angular App to Azure", "summary": "Every business need for a reliable and scalable cloud infrastructure, this is precisely where Azure...", "date_modified": "2025-09-26T09:19:46.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Specificity in CSS is one of the most misunderstood and important concepts in the web dev space. It refers to the algorithm that browsers run when ...", "url": "https://playfulprogramming.com/posts/css-specificity-explained", "title": "Let’s Be Specific: CSS Specificity Explained", "summary": "Struggling with stubborn CSS rules? Learn how specificity works so you can write styles that apply the way you want, every time", "date_modified": "2025-09-22T00:00:00.000Z", "author": { "name": "Courtney Hackshaw", "url": "https://playfulprogramming.com/unicorns/ckhackshaw" } }, { "content_html": "In the ever-evolving landscape of web development, captivating visuals are no longer a luxury but a necessity. Imagine being able to dynamically ge...", "url": "https://playfulprogramming.com/posts/unleashing-creativity-gemini-image-generation-with-angular-4ola", "title": "Unleashing Creativity: Gemini Image Generation with Angular", "summary": "In the ever-evolving landscape of web development, captivating visuals are no longer a luxury but a...", "date_modified": "2025-09-19T20:00:19.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Welcome back to the TanStack Router series, today going double digits with chapter 10 ! Let's fix a very common UX issue when implementing authenti...", "url": "https://playfulprogramming.com/posts/tanstack-router-go-to-previous-page-after-sign-in-51fp", "title": "TanStack Router: Go to Previous page after Sign In", "summary": "Welcome back to the TanStack Router series, today going double digits with chapter 10! Let's fix a...", "date_modified": "2025-09-16T14:36:21.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Quick SEO Guidelines for Your Next.js App Optimizing a Next.js application for SEO ensures that your content is easily discovered by search engines...", "url": "https://playfulprogramming.com/posts/seo-nextjs-guide", "title": "Quick SEO Guidelines for Your Next.js App", "summary": "A practical guide to optimizing SEO in your Next.js application.", "date_modified": "2025-09-10T10:00:00.000Z", "author": { "name": "Amir Ali Azimloo", "url": "https://playfulprogramming.com/unicorns/amiraliazimloo" } }, { "content_html": "You might be in the situation I was the other day: I wanted to develop a small AI feature for learning purposes on my side project , but I didn’t w...", "url": "https://playfulprogramming.com/posts/4-free-methods-to-use-llm-apis-in-development-45f6", "title": "4 Free Methods to use LLM APIs in Development", "summary": "You might be in the situation I was the other day: I wanted to develop a small AI feature for...", "date_modified": "2025-09-09T10:16:55.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "If you’ve been coding for a while, chances are you’ve stumbled across a GitHub Gist. Maybe you copied a handy Bash script, or saved a quick snippet...", "url": "https://playfulprogramming.com/posts/advanced-tips-and-tricks-for-github-gists-part-1-unlocking-the-power-of-gists-22h5", "title": "✨ Advanced Tips and Tricks for GitHub Gists (Part 1: Unlocking the Power of Gists)", "summary": "If you’ve been coding for a while, chances are you’ve stumbled across a GitHub Gist. Maybe you copied...", "date_modified": "2025-09-05T06:05:12.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "If you’ve ever used GitHub Copilot for more than a quick boilerplate snippet, you’ve probably felt this: it’s brilliant… until it isn’t. One moment...", "url": "https://playfulprogramming.com/posts/github-copilot-a-persona-based-approach-to-real-world-development-56ee", "title": "🚀 GitHub Copilot: A Persona-Based Approach to Real-World Development", "summary": "If you’ve ever used GitHub Copilot for more than a quick boilerplate snippet, you’ve probably felt...", "date_modified": "2025-08-26T11:30:01.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Having multiple themes is a common request on (web) applications nowadays, at least having light, dark, and system (define dark/light automatically...", "url": "https://playfulprogramming.com/posts/tanstack-start-light-dark-and-system-theme-without-flickers-5f1d", "title": "TanStack Start: light, dark, and system theme without flickers", "summary": "Having multiple themes is a common request on (web) applications nowadays, at least having light,...", "date_modified": "2025-08-25T12:33:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "First of all, before you smelly nerds start complaining, I know this benchmark means literally nothing—I just did it for fun. I'm sure it isn't per...", "url": "https://playfulprogramming.com/posts/it-takes-26-yottabytes-of-ram-to-typecheck-a-union-of-safe-integers", "title": "It takes 26 yottabytes of RAM to typecheck a union of Safe Integers", "summary": "Sometimes `number` is good enough", "date_modified": "2025-08-25T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "When building Python microservices, you often end up duplicating utility functions, models, or exception classes across services. Instead of duplic...", "url": "https://playfulprogramming.com/posts/sharing-python-modules-across-microservices", "title": "Sharing Code Across Python Microservices with Poetry, Pip, and Docker", "summary": "When working on multiple Python projects within a microservices architectured solution, it makes sense to reuse code.", "date_modified": "2025-08-25T00:00:00.000Z", "author": { "name": "Courtney Hackshaw", "url": "https://playfulprogramming.com/unicorns/ckhackshaw" } }, { "content_html": "With recent updates to the Angular framework, it is now recommended to move away from the @angular/animations package in favor of simpler alternati...", "url": "https://playfulprogramming.com/posts/bring-your-angular-app-to-life-with-animejs-4kkc", "title": "Bring Your Angular App to Life with Anime.js", "summary": "With recent updates to the Angular framework, it is now recommended to move away from the...", "date_modified": "2025-08-19T13:57:42.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "You can write clean, efficient code.\nBut can you write a clean, efficient email? As developers, we often treat email like a necessary evil — someth...", "url": "https://playfulprogramming.com/posts/writing-emails-tips-tricks-especially-for-developers-1e7i", "title": "Writing Emails: Tips & Tricks (Especially for Developers)", "summary": "You can write clean, efficient code. But can you write a clean, efficient email? As developers, we...", "date_modified": "2025-08-19T07:41:49.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Recently, in our Discord's book club , we read an awesome article by Ryan Marcus called \"No, really, what's a monad?\" This article tracked well in ...", "url": "https://playfulprogramming.com/posts/what-would-javascript-monads-look-like", "title": "What would Monads in JavaScript look like?", "summary": "Some languages support monads with first-class syntax support. But what does that even mean? How would we support monads, in, say, JavaScript?", "date_modified": "2025-08-18T10:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "If you’re anything like me, your Microsoft Teams chat list can go from zen garden to dumpster fire in a matter of hours. After months of context sw...", "url": "https://playfulprogramming.com/posts/how-i-organize-my-microsoft-teams-chats-without-losing-my-mind-2hbm", "title": "How I Organize My Microsoft Teams Chats (Without Losing My Mind)", "summary": "If you’re anything like me, your Microsoft Teams chat list can go from zen garden to dumpster fire in...", "date_modified": "2025-08-12T09:14:05.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I dunno about you, but I'm sick of hearing people obsessed with functional programming talking about \"monads\". Like, I've been an engineer for year...", "url": "https://playfulprogramming.com/posts/monads-explained-in-js", "title": "Monads explained in JavaScript", "summary": "You may have heard of a \"monad\" in programming spheres, especially in regards to functional programming terminology. So what on earth even IS a monad?", "date_modified": "2025-08-11T10:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Large Language Models (LLMs) offer incredible potential for businesses, but managing the costs associated with these powerful tools can be complex....", "url": "https://playfulprogramming.com/posts/azure-foundry-creating-a-pay-as-you-go-llm-service-207d", "title": "Azure Foundry: Creating a Pay-As-You-Go LLM Service", "summary": "Large Language Models (LLMs) offer incredible potential for businesses, but managing the costs...", "date_modified": "2025-08-01T10:52:24.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Enums allow you to quickly define a list of static, predefined values with a specific order, which can significantly improve data integrity and cod...", "url": "https://playfulprogramming.com/posts/firebase-data-connect-introduces-enum-support-for-enhanced-data-modeling-2j97", "title": "Firebase Data Connect Introduces Enum Support for Enhanced Data Modeling", "summary": "Enums allow you to quickly define a list of static, predefined values with a specific order, which...", "date_modified": "2025-07-31T10:13:19.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In my article \"The History of React Through Code\" , I talked a lot about how the rules of React Hooks were introduced so that it could interact cor...", "url": "https://playfulprogramming.com/posts/react-write-hooks-from-scratch", "title": "Let's Write React Hooks From Scratch", "summary": "Ever wondered how React's hooks function under-the-hood? Let's write our own implementation and find out together.", "date_modified": "2025-07-29T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Integrating third-party services into B2B and SaaS applications demands robust security. When connecting to powerful platforms like Airtable, under...", "url": "https://playfulprogramming.com/posts/secure-airtable-integration-mastering-oauth-20-pkce-with-nodejs-22-and-angular-20-71a", "title": "Secure Airtable Integration: Mastering OAuth 2.0 PKCE with Node.js 22 and Angular 20", "summary": "Integrating third-party services into B2B and SaaS applications demands robust security. When...", "date_modified": "2025-07-28T14:46:11.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "In the previous article , you saw how to create a project from scratch with Firebase Data Connect. Today, I want to talk to you about a brand new f...", "url": "https://playfulprogramming.com/posts/full-text-search-with-firebase-data-connect-40o5", "title": "Full-Text Search with Firebase Data Connect", "summary": "In the previous article, you saw how to create a project from scratch with Firebase Data...", "date_modified": "2025-07-25T09:25:26.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "The rise of Large Language Models (LLMs) has opened unprecedented possibilities for businesses, from automating customer service to generating crea...", "url": "https://playfulprogramming.com/posts/power-your-innovation-llm-model-selection-within-azures-ecosystem-ain", "title": "Power Your Innovation: LLM Model Selection within Azure's Ecosystem", "summary": "The rise of Large Language Models (LLMs) has opened unprecedented possibilities for businesses, from...", "date_modified": "2025-07-23T07:44:57.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Back when I was a designer, I was curious why Adobe programs defaulted to a specific line height when selecting “auto” for leading (fancy designer ...", "url": "https://playfulprogramming.com/posts/you-should-be-using-unitless-values-for-line-height", "title": "You should be using unitless values for line-height", "summary": "I've seen every value in the book used to set line-height values in CSS. This is why you should just use unitless.", "date_modified": "2025-07-21T00:00:00.000Z", "author": { "name": "Spencer Colaço", "url": "https://playfulprogramming.com/unicorns/spencercolaco" } }, { "content_html": "Firebase Studio is rapidly evolving into a robust, agentic development environment that leverages artificial intelligence (AI) to improve developer...", "url": "https://playfulprogramming.com/posts/supercharge-your-firebase-projects-the-power-of-mcp-integration-de8", "title": "Supercharge Your Firebase Projects: The Power of MCP Integration", "summary": "Firebase Studio is rapidly evolving into a robust, agentic development environment that leverages...", "date_modified": "2025-07-18T13:44:19.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "You know that old-style \"X users online\" counter on a website? I've recently seen it on roe.dev 's blog and I though: it shouldn't be too difficult...", "url": "https://playfulprogramming.com/posts/i-vibe-coded-an-online-visitors-counter-for-my-blog-i31", "title": "I vibe coded an online visitors counter for my blog", "summary": "You know that old-style \"X users online\" counter on a website? I've recently seen it on roe.dev's...", "date_modified": "2025-07-16T09:56:21.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Some of you asked me to create an example of integration between Angular and one of Firebase's latest features: \"hybrid on-device\". The core idea i...", "url": "https://playfulprogramming.com/posts/firebase-hybrid-on-device-with-angular-50o9", "title": "Firebase hybrid on-device with Angular", "summary": "Some of you asked me to create an example of integration between Angular and one of Firebase's latest...", "date_modified": "2025-07-11T13:18:03.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "React is a strange web development framework. I've found that many of their APIs require a specific mindset to use them properly; why is that? I ha...", "url": "https://playfulprogramming.com/posts/react-history-through-code", "title": "The History of React Through Code", "summary": "Learn React's history using pragmatic code samples and deep dives. This journey reveals the consistent design in React's APIs stemming from the very beginning.", "date_modified": "2025-07-07T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In this article I am going to share the plugin I created for Angular Material Blocks to preview code contents from files! TL;DR If you are simply i...", "url": "https://playfulprogramming.com/posts/create-raw-loader-plugin-for-nx-angular-application-executor-42hi", "title": "Create Raw Loader Plugin for NX Angular Application Executor", "summary": "In this article I am going to share the plugin I created for Angular Material Blocks to preview code...", "date_modified": "2025-07-06T09:09:52.000Z", "author": { "name": "Dharmen Shah", "url": "https://playfulprogramming.com/unicorns/shhdharmen" } }, { "content_html": "The realm of Artificial Intelligence (AI) is rapidly evolving, bringing with it exciting new possibilities for web application development. Firebas...", "url": "https://playfulprogramming.com/posts/firebase-unleashing-hybrid-on-device-inference-for-web-applications-36pb", "title": "Firebase: Unleashing Hybrid On-Device Inference for Web Applications", "summary": "The realm of Artificial Intelligence (AI) is rapidly evolving, bringing with it exciting new...", "date_modified": "2025-07-04T14:16:18.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "While working on my next article, I was reminded of a Next.js demo I posted to X/Twitter some time ago . This demo showcases how you can use React ...", "url": "https://playfulprogramming.com/posts/nextjs-promise-race", "title": "Next.js Promise Racing", "summary": "Learn how you can use Next.js' and React's primitives to achieve a neat party trick: Conditionally show a loading spinner based on a given wait time.", "date_modified": "2025-06-30T00:00:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Ever needed your C# application to run a PowerShell script, wait until it's done, and print the output directly in your console? Maybe you're autom...", "url": "https://playfulprogramming.com/posts/running-external-commands-in-c-and-wait-until-they-finish-3f8l", "title": "Running External Commands in C# and Wait Until They Finish", "summary": "Ever needed your C# application to run a PowerShell script, wait until it's done, and print the...", "date_modified": "2025-06-28T18:29:50.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Firebase Data Connect is simplifying the interaction between your applications and your databases. It presents a GraphQL interface directly on top of", "url": "https://playfulprogramming.com/posts/firebase-data-connect-rapid-development-and-granular-control-with-graphql-32g5", "title": "Firebase Data Connect: Rapid Development and Granular Control with GraphQL", "summary": "Firebase Data Connect is simplifying the interaction between your applications and your databases. It...", "date_modified": "2025-06-27T09:32:34.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "We are in the AI era. New models emerge daily, and many applications have already integrated AI into their workflows. Gemini , OpenAI , Copilot , D...", "url": "https://playfulprogramming.com/posts/do-you-really-need-the-cloud-to-work-with-ai-115h", "title": "Do you really need the Cloud to work with AI?", "summary": "We are in the AI era. New models emerge daily, and many applications have already integrated AI into...", "date_modified": "2025-06-25T06:27:11.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "▶️ This article is extracted from a video transcript, slightly tweaked for better readability. Watch the original: https://youtu.be/OabGHQ133zg Wel...", "url": "https://playfulprogramming.com/posts/how-well-measure-performance-of-our-devrel-activities-3ibo", "title": "How we'll measure performance of our DevRel activities", "summary": "▶️ This article is extracted from a video transcript, slightly tweaked for better readability. Watch...", "date_modified": "2025-06-23T14:31:13.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Some routes in your application require authentication or other conditions to be met before users can access them. TanStack Router provides a power...", "url": "https://playfulprogramming.com/posts/tanstack-router-how-to-protect-routes-with-an-authentication-guard-1laj", "title": "TanStack Router: How to protect routes with an authentication guard", "summary": "Some routes in your application require authentication or other conditions to be met before users can...", "date_modified": "2025-06-22T14:49:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "For years, the Firebase platform has been synonymous with rapid, scalable application development, largely built upon the foundations of its NoSQL ...", "url": "https://playfulprogramming.com/posts/firebase-data-connect-forget-about-boring-repetitive-tasks-2boi", "title": "Firebase Data Connect: forget about boring repetitive tasks", "summary": "For years, the Firebase platform has been synonymous with rapid, scalable application development,...", "date_modified": "2025-06-20T13:39:34.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "For years, the Firebase platform has been synonymous with rapid, scalable application development, largely built upon the foundations of its NoSQL ...", "url": "https://playfulprogramming.com/posts/firebase-data-connect-forget-about-boring-repetitive-tasks-172m", "title": "Firebase Data Connect: forget about boring repetitive tasks", "summary": "For years, the Firebase platform has been synonymous with rapid, scalable application development,...", "date_modified": "2025-06-20T13:39:34.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Parcel Rspack Turbopack While each comes with their own pros and cons, we're instead going to be focusing on Vite . Here's why: Vite is the suggest...", "url": "https://playfulprogramming.com/posts/ffg-ecosystem-bundling", "title": "Bundling", "summary": "Bundling is the process of taking your source code and transforming it into a format that can be run in the browser. Let's learn more about it and how to apply it.", "date_modified": "2025-06-18T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Just to name a few, here are some of the styling tools we're not talking about in this chapter: Styled Components StyleX UnoCSS Vanilla Extract Les...", "url": "https://playfulprogramming.com/posts/ffg-ecosystem-styling", "title": "Styling", "summary": "Styling your web application comes in many flavors. Let's explore the different approaches you can take in your projects.", "date_modified": "2025-06-18T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "While there are a few other options in the linting, formatting, and type-checking space: Biome Oxlint Flow We'll instead be learning about ESLint ,...", "url": "https://playfulprogramming.com/posts/ffg-ecosystem-linters-formatters-type-checkers", "title": "Linters, Formatters, and Type-Checkers", "summary": "Learn about the tools that help you write better code, including ESLint, Prettier, and TypeScript.", "date_modified": "2025-06-18T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "▶️ Video version on YouTube: https://youtu.be/ERWzk5iOAiU Hey everybody, look at that! I finally had a chance of using the LinkedIn template with t...", "url": "https://playfulprogramming.com/posts/im-starting-a-developer-relations-program-somehow-4mhm", "title": "I'm starting a Developer Relations program, somehow 🤷", "summary": "▶️ Video version on YouTube: https://youtu.be/ERWzk5iOAiU Hey everybody, look at that! I finally had...", "date_modified": "2025-06-17T12:49:06.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Ever joined a GitHub Enterprise and thought, “Who organized this… chaos?” I created this post because in the last few months I always got the same ...", "url": "https://playfulprogramming.com/posts/structuring-github-enterprise-best-practices-from-the-org-level-down-45i5", "title": "Structuring GitHub Enterprise: Best Practices from the Org Level Down", "summary": "Ever joined a GitHub Enterprise and thought, “Who organized this… chaos?” I created this post...", "date_modified": "2025-06-17T10:38:11.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "AI Models are taking over the world, and we are all looking for ways to use them to solve different problems. One common issue with Large Language ...", "url": "https://playfulprogramming.com/posts/genkit-tool-calling-give-ai-models-llms-the-tools-to-get-things-done-c4n", "title": "Genkit Tool Calling: Give AI Models (LLMs) the Tools to Get Things Done", "summary": "AI Models are taking over the world, and we are all looking for ways to use them to solve different...", "date_modified": "2025-06-16T13:27:38.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Another story, another article. A client asked me recently: 🗣️ Can we add temporary permissions for a group of users assigned to a maintenance tas...", "url": "https://playfulprogramming.com/posts/how-to-protect-your-api-with-openfga-from-rebac-concepts-to-practical-usage-4n9j", "title": "How to Protect Your API with OpenFGA: From ReBAC Concepts to Practical Usage", "summary": "Learn how to implement complex authorization patterns using OpenFGA and Relation-Based Access Control (ReBAC) through a practical example of a cat sitting app.", "date_modified": "2025-06-15T19:12:59.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "As a developer and productivity geek, I’m always on the lookout for tools that actually make a difference . Not shiny distractions, not “used once...", "url": "https://playfulprogramming.com/posts/tools-i-use-every-day-june-2025-edition-2kmb", "title": "Tools I Use Every Day (June 2025 Edition)", "summary": "As a developer and productivity geek, I’m always on the lookout for tools that actually make a...", "date_modified": "2025-06-15T14:28:33.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "How many times have you needed to translate your application, but didn't know where to start? One of the easiest ways to get started these days is ...", "url": "https://playfulprogramming.com/posts/firebase-ml-ai-powered-apps-made-easy-3ne3", "title": "Firebase ML: AI-Powered Apps Made Easy", "summary": "How many times have you needed to translate your application, but didn't know where to start? One of...", "date_modified": "2025-06-13T13:21:16.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "As we increasingly integrate Large Language Models (LLMs) into our applications, understanding and monitoring the performance and behavior of featu...", "url": "https://playfulprogramming.com/posts/monitoring-firebase-genkit-to-ensuring-performance-and-reliability-5hfb", "title": "Monitoring Firebase Genkit to Ensuring Performance and Reliability", "summary": "As we increasingly integrate Large Language Models (LLMs) into our applications, understanding and...", "date_modified": "2025-06-06T09:32:37.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "APIs are the backbone of modern applications, but even the cleanest code can drag if performance isn’t top of mind.\nVery often, I receive this ques...", "url": "https://playfulprogramming.com/posts/tips-for-improving-api-performance-in-aspnet-core-n4o", "title": "Tips for Improving API Performance in ASP.NET Core", "summary": "APIs are the backbone of modern applications, but even the cleanest code can drag if performance...", "date_modified": "2025-06-01T20:23:55.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I work full time as a software engineer and don't do open source to pay the bills, but I recently contributed to Firebase Genkit because I wanted t...", "url": "https://playfulprogramming.com/posts/contributing-to-open-source-is-easier-than-you-think-my-journey-with-firebase-genkit-44k7", "title": "Contributing to Open Source is Easier Than You Think: My Journey with Firebase Genkit", "summary": "I work full time as a software engineer and don't do open source to pay the bills, but I recently...", "date_modified": "2025-05-30T10:37:27.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "If you haven't already, please catch up on our previous post! We will only summarize when needed for clarification. If you're not familiar with the...", "url": "https://playfulprogramming.com/posts/git-into-the-weeds", "title": "Git: Into the Weeds", "summary": "In our second chapter, we expand on the topics we've discussed and talk about the bothersome and tricky portions of Git!", "date_modified": "2025-05-28T00:00:00.000Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "If you're anything like me, you’ve probably typed in authenticator codes a hundred times a day , just to push code, review a PR, merge something tr...", "url": "https://playfulprogramming.com/posts/how-to-configure-yubikey-with-github-3lga", "title": "How to Configure YubiKey with GitHub", "summary": "If you're anything like me, you’ve probably typed in authenticator codes a hundred times a day, just...", "date_modified": "2025-05-25T17:56:31.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Okay, you've seen it all, built it all, and probably debugged it all (more than once). You recognise a good idea from a bad one, or at least you th...", "url": "https://playfulprogramming.com/posts/firebase-studio-your-perfect-full-stack-picky-companion-56e4", "title": "Firebase Studio: Your Perfect Full Stack Picky Companion", "summary": "Okay, you've seen it all, built it all, and probably debugged it all (more than once). You recognise...", "date_modified": "2025-05-22T11:55:16.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Imagine your online store as a giant warehouse. You've got tons of cool stuff, but customers are wandering around aimlessly, hoping to stumble upon...", "url": "https://playfulprogramming.com/posts/increase-your-sales-by-70-with-firebase-genkit-ai-ib", "title": "Increase Your Sales by 70% with Firebase Genkit AI", "summary": "Imagine your online store as a giant warehouse. You've got tons of cool stuff, but customers are...", "date_modified": "2025-05-16T10:12:48.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Generative AI models possess the remarkable ability to generate human-quality text, code, images, and more, opening up a vast array of possibilitie...", "url": "https://playfulprogramming.com/posts/a-special-secret-to-prevent-ai-hallucinations-with-a-practical-google-genkit-ai-example-3d0o", "title": "A special secret to prevent AI hallucinations with a practical Google genkit-ai example!", "summary": "Generative AI models possess the remarkable ability to generate human-quality text, code, images, and...", "date_modified": "2025-05-08T12:08:22.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In the last section, we showed some markup that looked like this: \n\n