{ "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
  • \n\t
    Add todo item
    \n\t
    \n\t...", "url": "https://playfulprogramming.com/posts/art-of-a11y-semantic-markup", "title": "Semantic Markup", "summary": "When talking about web accessibility, the story starts and ends with semantic markup. Let's learn what that means and how to leverage it in our apps.", "date_modified": "2025-04-30T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Think about your site. Yes, the one you're working on. What is it mostly comprised of? If the answer isn't \"text\", you're either thinking on too hi...", "url": "https://playfulprogramming.com/posts/art-of-a11y-text", "title": "The Art of Accessibility: Text", "summary": "Text makes up most of our apps. Lets make sure that our app's text is legible and able to be accessed through assistive technologies like screen readers.", "date_modified": "2025-04-30T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "The digital landscape is evolving at an unprecedented pace. Demands for faster, more scalable, and cost-effective applications are constantly growing.", "url": "https://playfulprogramming.com/posts/firebase-cloud-functions-your-gateway-to-serverless-backend-development-3o54", "title": "Firebase Cloud Functions: Your Gateway to Serverless Backend Development", "summary": "The digital landscape is evolving at an unprecedented pace. Demands for faster, more scalable, and...", "date_modified": "2025-04-30T07:51:03.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In the world of modern web development, Angular has established itself as a leading framework for building dynamic and interactive single-page appl...", "url": "https://playfulprogramming.com/posts/angulars-proxyconfig-unlock-a-senior-level-technique-used-by-only-10-of-developers-4j1b", "title": "Angular's proxyConfig: Unlock a senior-level technique used by only 10% of developers", "summary": "In the world of modern web development, Angular has established itself as a leading framework for...", "date_modified": "2025-04-25T12:51:26.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "We’ve all been there. You knock out a script in an hour, it runs, it works, and you feel like a wizard. Maybe it scrapes some data, renames a bunch...", "url": "https://playfulprogramming.com/posts/from-hello-world-to-hello-customers-why-programs-arent-products-imp", "title": "From Hello World to Hello Customers: Why Programs Aren’t Products", "summary": "We’ve all been there. You knock out a script in an hour, it runs, it works, and you feel like a...", "date_modified": "2025-04-25T09:14:12.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "As of today, it has been 7 years since I open-sourced SolidJS. It wasn't for noble reasons. I wasn't trying to show people the way. I wasn't trying...", "url": "https://playfulprogramming.com/posts/a-decade-of-solidjs-32f4", "title": "A Decade of SolidJS", "summary": "As of today, it has been 7 years since I open-sourced SolidJS. It wasn't for noble reasons. I wasn't...", "date_modified": "2025-04-24T18:48:10.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "The rapid evolution of artificial intelligence is fundamentally transforming how we build and interact with software applications. No longer relega...", "url": "https://playfulprogramming.com/posts/firebase-genkit-ai-level-up-your-skills-with-ai-powered-flows-3foj", "title": "Firebase Genkit-AI: Level Up Your Skills with AI-Powered Flows", "summary": "The rapid evolution of artificial intelligence is fundamentally transforming how we build and...", "date_modified": "2025-04-24T08:36:52.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Git is a version control system that is used to build the vast majority of software that we use every day. In this first article, we're going to be...", "url": "https://playfulprogramming.com/posts/git-basics", "title": "Git: The Basics", "summary": "In our first chapter, we tackle the most common aspects of git and explain how they work in tandem with one another.", "date_modified": "2025-04-23T00:00:00.000Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "Firebase, Google's comprehensive platform for building mobile and web applications, has continually evolved to meet the demands of modern developer...", "url": "https://playfulprogramming.com/posts/firebase-studio-6-tips-only-senior-engineers-know-2c1k", "title": "Firebase Studio: 6 tips only senior engineers know", "summary": "Firebase, Google's comprehensive platform for building mobile and web applications, has continually...", "date_modified": "2025-04-16T15:25:33.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In the fast-paced world of modern application development, iteration speed and robust testing are paramount. The Firebase Emulator Suite offers a p...", "url": "https://playfulprogramming.com/posts/emulating-the-cloud-why-you-should-use-firebase-emulator-suite-1o42", "title": "Emulating the Cloud: why you should use Firebase Emulator Suite", "summary": "In the fast-paced world of modern application development, iteration speed and robust testing are...", "date_modified": "2025-04-10T09:54:50.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Preface: When I first started web development, I worked on an Angular 2 project. In Angular there's a strong, opinionated, and reasonably laid out ...", "url": "https://playfulprogramming.com/posts/layered-react-structure", "title": "Scale Your Project with Layered React Structure", "summary": "Learn how to scale your React project using Layered React Structure (LRS). Take your app from small-time to enterprise grade by organizing your code better.", "date_modified": "2025-04-09T20:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Google offers robust, real-time NoSQL database solutions: the original Realtime Database and the newer, more robust Cloud Firestore. These solution...", "url": "https://playfulprogramming.com/posts/3-pillars-only-senior-developers-know-about-firebase-and-firestore-databases-oe0", "title": "3 Pillars Only Senior Developers Know About Firebase and Firestore Databases", "summary": "Google offers robust, real-time NoSQL database solutions: the original Realtime Database and the...", "date_modified": "2025-04-02T09:06:44.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Firebase Realtime Database offers incredible power and ease-of-use for building collaborative, real-time applications.\nHowever, its public-facing n...", "url": "https://playfulprogramming.com/posts/exploring-firebase-database-security-rules-1kmk", "title": "Exploring Firebase Database Security Rules", "summary": "Firebase Realtime Database offers incredible power and ease-of-use for building collaborative,...", "date_modified": "2025-03-26T10:44:55.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "I work with lots of legacy code, so IIFEs are my best friend. The build system I work with doesn't allow for modules, so I have to make due with ol...", "url": "https://playfulprogramming.com/posts/iifes-a-javascript-idiom-of-yore", "title": "IIFEs — a JavaScript Idiom of Yore", "summary": "IIFEs were very useful back in the day, but modern JavaScript has made them irrelevant", "date_modified": "2025-03-26T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "In today's web development world, building dynamic and real-time applications is more important than ever. Angular , coupled with Firebase Database...", "url": "https://playfulprogramming.com/posts/building-realtime-web-apps-with-angular-and-firebase-database-2mkb", "title": "Building Realtime Web Apps with Angular and Firebase Database", "summary": "In today's web development world, building dynamic and real-time applications is more important than...", "date_modified": "2025-03-19T10:15:40.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Have you ever been in the middle of coding when suddenly you needed to switch branches, but your work wasn't ready for a commit?\nI think it happens...", "url": "https://playfulprogramming.com/posts/git-stashing-save-and-restore-your-code-5eh6", "title": "Git stashing: save and restore your code", "summary": "Have you ever been in the middle of coding when suddenly you needed to switch branches, but your work...", "date_modified": "2025-03-19T07:56:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "\"Can we upgrade to the latest Node.js version?\" A few months ago, I did not imagine that this seemingly innocent question from a client would bring...", "url": "https://playfulprogramming.com/posts/building-single-executable-applications-with-nodejs-16k3", "title": "Building Single Executable Applications with Node.js", "summary": "Discover how to package your Node.js applications into single executable files, reducing deployment complexity and improving security.", "date_modified": "2025-03-17T10:50:00.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "As a consultant, sometimes, I have to switch from a project to another.\nMy main (and favorite) programming language is C# since forever but I am al...", "url": "https://playfulprogramming.com/posts/c-to-typescript-cheatsheet-gp6", "title": "C# to Typescript Cheatsheet", "summary": "As a consultant, sometimes, I have to switch from a project to another. My main (and favorite)...", "date_modified": "2025-03-16T16:42:22.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "As a developer and cloud engineer (or Architect, they call me like that), my work isn't confined to a single desk. Whether I'm at the office, trave...", "url": "https://playfulprogramming.com/posts/whats-in-my-bag-the-essentials-for-a-productive-day-at-the-office-2025-e2o", "title": "What’s in My Bag: The Essentials for a Productive Day at the Office [2025]", "summary": "As a developer and cloud engineer (or Architect, they call me like that), my work isn't confined to a...", "date_modified": "2025-03-14T15:52:51.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In today's rapidly evolving digital landscape, adaptability is key to success. Applications need to be flexible, allowing for quick adjustments to ...", "url": "https://playfulprogramming.com/posts/angular-and-firebase-remote-config-your-secret-weapon-for-personalized-adaptable-apps-19l7", "title": "Angular and Firebase Remote Config: Your Secret Weapon for Personalized & Adaptable Apps", "summary": "In today's rapidly evolving digital landscape, adaptability is key to success. Applications need to...", "date_modified": "2025-03-11T06:46:00.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Is there a functional difference between the following two code blocks? const array = Array(10).fill(10); const array = [10, 10, 10, 10, 10, 10, 10...", "url": "https://playfulprogramming.com/posts/javascript-holes-and-tolls", "title": "JavaScript Holes and Tolls (On Performance)", "summary": "Compiler optimizations that you shouldn't worry about but are cool.", "date_modified": "2025-03-11T00:00:00.000Z", "author": { "name": "20jasper", "url": "https://playfulprogramming.com/unicorns/20jasper" } }, { "content_html": "In the previous article we saw how Firebase Cloud Messaging (FCM) is a versatile solution for delivering push notifications to various platforms. W...", "url": "https://playfulprogramming.com/posts/building-dynamic-push-notifications-with-firebase-and-nodejs-516h", "title": "Building Dynamic Push Notifications with Firebase and Node.js", "summary": "In the previous article we saw how Firebase Cloud Messaging (FCM) is a versatile solution for...", "date_modified": "2025-03-07T16:09:08.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Azure Blob Storage is a cost-effective and scalable cloud storage solution for storing unstructured data, such as text, binary data, images, and vi...", "url": "https://playfulprogramming.com/posts/nodejs-azure-blob-unleashing-scalable-storage-in-the-cloud-a9n", "title": "Node.js & Azure Blob: Unleashing Scalable Storage in the Cloud", "summary": "Azure Blob Storage is a cost-effective and scalable cloud storage solution for storing unstructured...", "date_modified": "2025-03-06T09:43:01.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "While I'm a huge fan of Angular at heart, I've often used React at my day jobs. While working with React component libraries - either internal or ...", "url": "https://playfulprogramming.com/posts/angular-why-no-template-casting", "title": "Why Can't Angular Cast An Element to Another?", "summary": "While I'm a huge fan of Angular at heart, I've often used React at my day jobs. While working with React component libraries - either internal or ...", "date_modified": "2025-03-06T00:00:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Push notifications are a powerful way to re-engage users, deliver timely updates, and drive traffic to your application. Firebase Cloud Messaging (...", "url": "https://playfulprogramming.com/posts/push-notifications-in-angular-19-with-firebase-cloud-messaging-3o3a", "title": "Push Notifications in Angular 19 with Firebase Cloud Messaging", "summary": "Push notifications are a powerful way to re-engage users, deliver timely updates, and drive traffic...", "date_modified": "2025-02-28T09:17:28.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Adobe ColdFusion just saw it's newest release hit the scene: ColdFusion 2025 . This release continues a trend that's been occuring for the past few...", "url": "https://playfulprogramming.com/posts/setup-adobe-coldfusion-docker", "title": "Setup Adobe ColdFusion in Docker", "summary": "Adobe ColdFusion can feel daunting to set up. Luckily for us, there's an easy method of getting up and running using Docker. Let's explore that option!", "date_modified": "2025-02-26T00:00:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Firebase Authentication provides a robust and easy-to-implement backend service for user authentication in your Angular applications. It supports v...", "url": "https://playfulprogramming.com/posts/firebase-authentication-with-angular-19-ief", "title": "Firebase Authentication with Angular 19", "summary": "Firebase Authentication provides a robust and easy-to-implement backend service for user...", "date_modified": "2025-02-21T09:22:10.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "I had no idea how much would have happened in 365 days 🤯 One year ago, on February 20th, 2024, I published my first tutorial on TanStack Router. T...", "url": "https://playfulprogramming.com/posts/my-first-year-in-love-with-tanstack-5ceb", "title": "My First Year in Love with TanStack", "summary": "I had no idea how much would have happened in 365 days 🤯 One year ago, on February 20th, 2024, I...", "date_modified": "2025-02-20T15:58:34.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Cover photo generated with Microsoft Designer. Traditionally, we had to import mixed Angular modules from Angular Material at the root level to pro...", "url": "https://playfulprogramming.com/posts/you-dont-need-importprovidersfrom-with-angular-material-3nih", "title": "You don't need importProvidersFrom with Angular Material", "summary": "Cover photo generated with Microsoft Designer. Traditionally, we had to import mixed Angular modules...", "date_modified": "2025-02-18T22:38:00.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Let's assume that we have a component system in our company's codebase. In this component system, there's a OurButton component: ...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-accessing-children", "title": "Accessing Children", "summary": "Oftentimes, when passing children to a component, you want a way to programmatically access that passed data. Let's learn how to do that in React, Angular, and Vue.", "date_modified": "2025-01-06T12:15:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our last chapter, we talked about how you can create custom logic that is not associated with any particular component but can be used by said c...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-directives", "title": "Directives", "summary": "If components are a way to share JS logic between multiple, composable DOM nodes; directives are a way to assign logic to any single DOM node.", "date_modified": "2025-01-06T12:14:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Components are awesome. They allow you to make your code logic more modular and associate that logic with a related collection of DOM nodes. More i...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-shared-component-logic", "title": "Shared Component Logic", "summary": "Components provide a great way to share layout, styling, and logic between multiple parts of your app. But what about times you only need to share logic in React, Angular, and Vue?", "date_modified": "2025-01-06T12:13:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Do you ever start up your favorite application, click an action button, and then boom , there's a popup from the application about your interaction...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-portals", "title": "Portals", "summary": "When building an app in React, Angular, or Vue, you'll often find that overlapping components can become a real problem. Rendering order can be confusing; let's fix that with portals.", "date_modified": "2025-01-06T12:12:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "One of the core tenets of components we've used repeatedly in the book is the idea of component inputs or properties. While component inputs are un...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-dependency-injection", "title": "Dependency Injection", "summary": "Passing around props suck. They're repetitive, get out of sync, and are easy to forget to pass. What if there was a better way to pass data between different parts of your app?", "date_modified": "2025-01-06T12:11:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Despite our best efforts, bugs will find their way into our applications. Unfortunately, we can't simply ignore them, or the user experience suffer...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-error-handling", "title": "Error Handling", "summary": "Bug are a constant in development. How can we make error handling lead to a nicer user experience when they occur in React, Angular, and Vue?", "date_modified": "2025-01-06T12:10:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our previous chapter, we built context menu functionality into our App component. This functionality allowed us to right-click on an element and...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-component-reference", "title": "Component Reference", "summary": "While you usually want to pass data to child components, sometimes you need to access arbitrary data from the child without needing to explicitly pass the data.", "date_modified": "2025-01-06T12:09:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "While React, Angular, and Vue all provide simple built-in APIs to access events, inputs, and other bindings to underlying HTML elements; sometimes ...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-element-reference", "title": "Element Reference", "summary": "React, Angular, and Vue provide powerful APIs that let you avoid DOM manipulations most of the time. But sometimes you need to access the underlying DOM. Here's how.", "date_modified": "2025-01-06T12:08:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "As we've mentioned before, in the DOM, your HTML elements have a relationship with respect to one another . For example, the following:
    \n\t
      ...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-passing-children", "title": "Passing Children", "summary": "Just like HTML nodes have parents and children, so too do framework components. Let's learn how React, Angular, and Vue allow you to pass children to your components.", "date_modified": "2025-01-06T12:07:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Whew! That last chapter was a doozy. Let's slow things down a bit for this chapter: Short and sweet. Let's think back to the \"Dynamic HTML\" and \"In...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-transparent-elements", "title": "Transparent Elements", "summary": "There are specific instances where you may want to have a wrapper element in a framework that renders to nothing in the DOM. This is how.", "date_modified": "2025-01-06T12:06:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "We've previously touched on how to pass values to a component as properties earlier in the book: React const FileDate = ({ inputDate }) => {\n\tconst...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-derived-values", "title": "Derived Values", "summary": "Often in application development, you'll want to base one variable's value off of another. There are a few ways of doing this - some easier than others.", "date_modified": "2025-01-06T12:05:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "While you can build static websites with React, Angular, and Vue, these frameworks shine brightest when building interactive applications . These a...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-side-effects", "title": "Side Effects", "summary": "Some call them \"lifecycle methods\", others \"effect handlers\". However you spin it, they both handle side effects in your apps. How can we leverage them better?", "date_modified": "2025-01-06T12:04:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Previously, we learned how to create components for our file application. These components included a way to create a component tree, add inputs to...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-dynamic-html", "title": "Dynamic HTML", "summary": "One of the primary advantages of using a framework is the ability to quickly generate dynamic HTML from JavaScript logic. Let's walk through some examples.", "date_modified": "2025-01-06T12:03:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Before we can dive into how many front-end frameworks work, we need to set a baseline of information. If you're already familiar with how the DOM r...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-intro-to-components", "title": "Introduction to Components", "summary": "Components are the core building block in which all applications written with React, Angular, and Vue are built. Let's explore what they are and how to build them.", "date_modified": "2025-01-06T12:02:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Welcome to the first Framework Field Guide book titled \"Fundamentals.\" This book is the culmination of a nearly 10-year-long professional software ...", "url": "https://playfulprogramming.com/posts/ffg-fundamentals-preface", "title": "Preface", "summary": "Learning web development is a vital skill in a software engineer's toolbox. Let's talk about why you should learn it and what this book will cover.", "date_modified": "2025-01-06T12:01:00.000Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Everything is started from this post on bluesky, by Thomas - https://bsky.app/profile/thomasvochten.com/post/3ldsjjmz6dk22 So, I decided to write t...", "url": "https://playfulprogramming.com/posts/transforming-windows-terminal-into-a-productivity-powerhouse-53d5", "title": "Transforming Windows Terminal into a Productivity Powerhouse", "summary": "Everything is started from this post on bluesky, by Thomas - ...", "date_modified": "2024-12-27T11:16:13.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Hey friends, how are you doing? This year, I tried a new Angular version and wanted to experiment with how the tree shaking works with the latest v...", "url": "https://playfulprogramming.com/posts/the-tree-shaking-journey-in-angular-a-deep-dive-52ie", "title": "The Tree Shaking Journey in Angular: A Deep Dive", "summary": "Hey friends, how are you doing? This year, I tried a new Angular version and wanted to experiment...", "date_modified": "2024-12-23T17:08:33.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Integrating the git maintenance command into your GitHub Actions workflow can help keep your repository fast and efficient, even in high-traffic pr...", "url": "https://playfulprogramming.com/posts/using-git-maintenance-in-github-actions-optimize-your-repositories-automatically-39ka", "title": "Using Git Maintenance in GitHub Actions: Optimize Your Repositories Automatically", "summary": "Integrating the git maintenance command into your GitHub Actions workflow can help keep your...", "date_modified": "2024-12-20T07:04:23.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In the last few weeks one of my repository started to be very slow and bloated. I try to commit all the changes, push everything on GitHub, delete ...", "url": "https://playfulprogramming.com/posts/optimizing-your-repository-for-speed-and-efficiency-5co2", "title": "Optimizing Your Repository for Speed and Efficiency", "summary": "In the last few weeks one of my repository started to be very slow and bloated. I try to commit all...", "date_modified": "2024-12-19T19:19:52.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "For over a decade now (11 years right now), I’ve carried the title of Microsoft Most Valuable Professional (MVP), a role that has shaped my career ...", "url": "https://playfulprogramming.com/posts/the-secret-life-of-a-microsoft-mvp-3dal", "title": "The Secret Life of a Microsoft MVP", "summary": "For over a decade now (11 years right now), I’ve carried the title of Microsoft Most Valuable...", "date_modified": "2024-12-10T10:30:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Earlier this year, I had the opportunity to interview for a role at Google. A recruiter reached out to me on LinkedIn, and after enthusiastically s...", "url": "https://playfulprogramming.com/posts/cracking-the-faang-code-my-2024-google-interview-journey-key-takeaways-with-actionable-tips-3f59", "title": "Cracking the FAANG Code: My 2024 Google Interview Journey & Key Takeaways (with Actionable Tips!)", "summary": "Earlier this year, I had the opportunity to interview for a role at Google. A recruiter reached out...", "date_modified": "2024-12-06T14:53:48.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Note: Some of the embeds in this article are broken: We're currently investigating a bug with our StackBlitz embeds. Sorry for the inconvenience! M...", "url": "https://playfulprogramming.com/posts/modern-js-bundleless", "title": "Writing Modern JavaScript without a Bundler", "summary": "Let's explore how we can build a website using many of the conveniences of a Vite app while remaining buildless.", "date_modified": "2024-11-27T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our first article explaining what UUIDs are , we explored a few different variants of UUID: UUIDv1 A machine's network card information + a time...", "url": "https://playfulprogramming.com/posts/uuid-v6-8", "title": "UUIDv6, UUIDv7, and UUIDv8; what are they?", "summary": "There's new UUIDs on the block! Let's explore what's new with UUIDv6, v7, and v8.", "date_modified": "2024-11-20T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Angular 19 introduces two powerful features designed to improve reactive programming and data management: the linkedSignal function and the Resourc...", "url": "https://playfulprogramming.com/posts/angular-linked-signal-resource-api", "title": "Angular 19: linkedSignal & Resource API", "summary": "Let's learn about Angular19's linkedSignal & Resource APIs!", "date_modified": "2024-11-19T16:00:00.000Z", "author": { "name": "Mohamed Oussema Njimi", "url": "https://playfulprogramming.com/unicorns/oussemanjimi" } }, { "content_html": "All production Angular codebases, using signals or not, have to manage side effects in one way or another. In modern Angular projects using signals...", "url": "https://playfulprogramming.com/posts/angular-internals-timings", "title": "Angular Internals: Lifecycle Methods and Effect Timings", "summary": "Let's dive into the timings for Angular's lifecycle methods and effect APIs. We'll even be reading a fair amount of Angular source code to explain it all.", "date_modified": "2024-11-19T11:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Progressive Web Apps (PWAs) provide a native-like experience on the web, including features like offline support, push notifications, and the abili...", "url": "https://playfulprogramming.com/posts/pwa-nextjs-guide", "title": "Quick Guide to Building a PWA with Next.js", "summary": "Learn how to turn your Next.js app into a Progressive Web App (PWA).", "date_modified": "2024-11-14T10:00:00.000Z", "author": { "name": "Amir Ali Azimloo", "url": "https://playfulprogramming.com/unicorns/amiraliazimloo" } }, { "content_html": "The DOM represents the structure of a webpage, enabling developers to modify content, styles, and elements in real time. In this article, we will e...", "url": "https://playfulprogramming.com/posts/web-fundamentals-dom-manipulation", "title": "Web Fundamentals: Manipulating the DOM with JavaScript", "summary": "The ninth chapter of this series finally goes over the DOM, how to manipulate it, and how to make our components interactive!", "date_modified": "2024-11-13T20:08:26.988Z", "author": { "name": "Obi Baratt", "url": "https://playfulprogramming.com/unicorns/obibaratt" } }, { "content_html": "Today, we're learning about the basics of JavaScript. If you've been to the web, you've been subjected to huge amounts of JavaScript. JavaScript is...", "url": "https://playfulprogramming.com/posts/web-fundamentals-javascript-basics", "title": "Web Fundamentals: JavaScript Basics", "summary": "The seventh chapter of this series contains the first look into JavaScript and its basic components.", "date_modified": "2024-11-12T20:08:26.988Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "Spark is the latest creation from the GitHub Next team, which was announced on stage at GitHub Universe a couple of weeks ago. It's a tool that ena...", "url": "https://playfulprogramming.com/posts/github-spark-isnt-even-trying-to-steal-your-job-3-real-examples-3hk4", "title": "GitHub Spark ✨ isn't even trying to steal your job - 3 Real Examples", "summary": "Spark is the latest creation from the GitHub Next team, which was announced on stage at GitHub...", "date_modified": "2024-11-12T11:52:03.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Responsive design aims to solve a common problem: devices and form-factors have gotten considerably more diverse along the years. Because of this, ...", "url": "https://playfulprogramming.com/posts/web-fundamentals-responsive-design", "title": "Web Fundamentals: Responsive Design", "summary": "The sixth chapter tackles responsive design, breakpoints, media queries and more!", "date_modified": "2024-11-11T20:08:26.988Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "CSS is a very robust system that must adhere to several different axis of customization. For this, it has many mechanisms that allow developers to ...", "url": "https://playfulprogramming.com/posts/web-fundamentals-css-hierarchy", "title": "Web Fundamentals: CSS - Inheritance & Hierarchy", "summary": "The third chapter of our series talks about the cascade hierarchy in CSS, including inheritance and specificity.", "date_modified": "2024-11-10T20:08:26.988Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "Warning: This article talks in-depth about technical specifics of the experiment present in Angular 18 and 19. The mechanisms discussed in this ar...", "url": "https://playfulprogramming.com/posts/zoneless-angular-host-binding", "title": "How does Zoneless Angular Work?", "summary": "In the future Angular will not have Zone.js enabled by default and will not need it for change detection. But how will that work in a technical sense?", "date_modified": "2024-11-08T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "As part of our partnership with Orama, this blog post was sponsored and financially compensated for by Orama. This doesn't invalidate our learnings...", "url": "https://playfulprogramming.com/posts/orama-search", "title": "How we built our custom semantic search page", "summary": "Let's learn how we managed to improve our search experience using semantic search, powered by Orama.", "date_modified": "2024-11-07T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Angular continues to evolve, bringing exciting features with each release. Angular 19 is no exception, focusing on improving developer experience (...", "url": "https://playfulprogramming.com/posts/angular-19-5-game-changing-features-you-need-to-know-32cd", "title": "Angular 19 - 5 Game-Changing Features You Need to Know", "summary": "Angular continues to evolve, bringing exciting features with each release. Angular 19 is no...", "date_modified": "2024-11-06T16:53:20.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Codemotion 2024 in Milan was nothing short of spectacular. Imagine being in a place filled with over 2700 people, all buzzing with excitement, read...", "url": "https://playfulprogramming.com/posts/codemotion-2024-milan-rediscovering-my-voice-and-passion-as-a-speaker-171o", "title": "Codemotion 2024 Milan: Rediscovering My Voice and Passion as a Speaker", "summary": "Codemotion 2024 in Milan was nothing short of spectacular. Imagine being in a place filled with over...", "date_modified": "2024-11-06T08:59:57.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Angular 19 introduces two exciting experimental APIs, resource and rxResource , designed to simplify asynchronous data retrieval and management. Th...", "url": "https://playfulprogramming.com/posts/angular-19-streamlining-data-retrieval-with-resource-and-rxresource-apis-3lb2", "title": "Angular 19 - Streamlining Data Retrieval with Experimental Resource and rxResource APIs", "summary": "Angular 19 introduces two exciting experimental APIs, resource and rxResource, designed to simplify...", "date_modified": "2024-11-06T04:41:29.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "So you have a class, and you want to control who can create instances\nof it? Easy, make constructors private, and make friends with those\nwho can c...", "url": "https://playfulprogramming.com/posts/a-forgotten-idiom-revisited-pass-key", "title": "A forgotten C++ idiom revisited: pass-key", "summary": "So you have a class, and you want to control who can create instances\nof it? Easy, make constructors private, and make friends with those\nwho can c...", "date_modified": "2024-11-05T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Angular 19 is on the horizon, and it’s bringing a host of exciting new features to the table. One of the most notable additions is the linkedSignal...", "url": "https://playfulprogramming.com/posts/angular-19-introduction-to-linkedsignal-190a", "title": "Angular 19 - Introduction to linkedSignal", "summary": "Angular 19 is on the horizon, and it’s bringing a host of exciting new features to the table. One of...", "date_modified": "2024-11-03T08:27:13.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Signals are seemingly everywhere today. Among others, there's some flavor of signals in: Angular Vue Preact Solid.js Svelte Qwik And many more Ther...", "url": "https://playfulprogramming.com/posts/what-are-signals", "title": "What are Signals?", "summary": "Signals are seemingly everywhere today. So here's the question? What are they? Let's build an implementation ourselves to understand them better.", "date_modified": "2024-11-01T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "All this exploration into scheduling and async made me realize how much we still don't understand about reactivity. A lot of the research originate...", "url": "https://playfulprogramming.com/posts/mutable-derivations-in-reactivity-2ffl", "title": "Mutable Derivations in Reactivity", "summary": "All this exploration into scheduling and async made me realize how much we still don't understand...", "date_modified": "2024-10-23T22:59:58.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Have you wondered what these numbers in the DevTools are? Earlier this year, Google introduced an in-browser preview of Core Web Vitals in the DevT...", "url": "https://playfulprogramming.com/posts/core-web-vitals-now-built-n-to-chrome-1bdh", "title": "Core Web Vitals — Now Built-n to Chrome", "summary": "Have you wondered what these numbers in the DevTools are? Earlier this year, Google introduced an...", "date_modified": "2024-10-18T05:32:02.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "In this post, I will show you how to register HTTP routes and message consumers in NestJS applications dynamically . This demonstration will start ...", "url": "https://playfulprogramming.com/posts/dynamic-nestjs-listeners-discover-the-power-of-lazy-loading-53i2", "title": "Dynamic NestJS Listeners: Discover the Power of Lazy Loading", "summary": "Declare lazy-loaded routes in NestJS and in-depth review of the DiscoveryService", "date_modified": "2024-10-13T11:46:34.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "Impostor Syndrome is something many of us have faced at one point or another—a persistent, nagging feeling that we’re not truly capable, that we’re...", "url": "https://playfulprogramming.com/posts/impostor-syndrome-from-a-z-4dhl", "title": "Impostor Syndrome: from A - Z", "summary": "Impostor Syndrome is something many of us have faced at one point or another—a persistent, nagging...", "date_modified": "2024-10-09T11:31:24.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In a previous post I wrote why it's important to join events and especially, in this case, Experts Live Europe. Why you should attend Experts Live ...", "url": "https://playfulprogramming.com/posts/recap-of-experts-live-2024-in-budapest-three-days-of-cloud-code-and-connections-189h", "title": "Recap of Experts Live 2024 in Budapest: Three Days of Cloud, Code, and Connections", "summary": "In a previous post I wrote why it's important to join events and especially, in this case, Experts...", "date_modified": "2024-10-07T13:48:51.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Angular 18 introduced Partial Hydration in ng-conf 2024 , a powerful technique that significantly improves application performance in conjunction w...", "url": "https://playfulprogramming.com/posts/angular-18-improving-application-performance-with-partial-hydration-and-ssr-2nie", "title": "Improving Core Web Vitals including LCP and CLS with Partial Hydration in Angular 18", "summary": "Angular 18 introduced Partial Hydration in ng-conf 2024, a powerful technique that significantly...", "date_modified": "2024-10-05T13:56:01.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Change detection is a fundamental aspect of Angular, responsible for identifying and updating parts of the DOM that have changed in response to dat...", "url": "https://playfulprogramming.com/posts/the-evolution-of-change-detection-from-angular-2-zonejs-to-angular-18-provideexperimentalzonelesschangedetection-4f77", "title": "Angular Change Detection from zone.js to Experimental Zoneless", "summary": "Change detection is a fundamental aspect of Angular, responsible for identifying and updating parts...", "date_modified": "2024-09-19T09:07:16.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "The CSS property display: grid is commonly referred to as gridbox. Unlike flexbox, it is capable of creating two-dimensional layouts using intersec...", "url": "https://playfulprogramming.com/posts/web-fundamentals-grid", "title": "Web Fundamentals: Grid", "summary": "In the fifth chapter of our series, we're going to be introduced to CSS grid, a well-known feature to display content, and used in almost every website you visit.", "date_modified": "2024-09-18T20:10:26.988Z", "author": { "name": "Landon Johnson", "url": "https://playfulprogramming.com/unicorns/ljtech" } }, { "content_html": "In this chapter we will talk everything layout related, and start getting into the weeds of responsive design. Starting with Flexbox. What you shou...", "url": "https://playfulprogramming.com/posts/web-fundamentals-flexbox", "title": "Web Fundamentals: Flexbox", "summary": "In the fourth chapter of our series, we'll look at flexbox, a powerful layout feature that allows you to create responsive designs with ease.", "date_modified": "2024-09-18T20:08:26.988Z", "author": { "name": "Landon Johnson", "url": "https://playfulprogramming.com/unicorns/ljtech" } }, { "content_html": "Ever felt like your codebase is scattered across a million different repositories? That’s the life of a polyrepo, the traditional way of managing s...", "url": "https://playfulprogramming.com/posts/monorepos-with-nx-why-you-might-want-a-single-home-for-all-your-code-2hka", "title": "Monorepos with Nx: Why You Might Want a Single Home for All Your Code", "summary": "Ever felt like your codebase is scattered across a million different repositories? That’s the life of...", "date_modified": "2024-09-11T17:33:13.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "What happens when you rely solely on hibernate mode and don't turn off your PC for three weeks straight?\nIn the last few weeks I conducted this exp...", "url": "https://playfulprogramming.com/posts/the-impact-of-not-turning-off-your-pc-for-three-weeks-a-deep-dive-into-hibernate-mode-and-application-performance-3dp7", "title": "The Impact of Not Turning Off Your PC for Three Weeks: A Deep Dive into Hibernate Mode and Application Performance", "summary": "What happens when you rely solely on hibernate mode and don't turn off your PC for three weeks...", "date_modified": "2024-09-05T09:09:10.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "This article will go over Cascading Style Sheets, detailing what they are, what they allow, and how they are used to bend and style HTML to make up...", "url": "https://playfulprogramming.com/posts/web-fundamentals-css", "title": "Web Fundamentals: CSS - The Basics", "summary": "The second chapter in our front-end series. Let's delve right into the world of CSS, variables and selectors.", "date_modified": "2024-09-03T20:08:26.988Z", "author": { "name": "Landon Johnson", "url": "https://playfulprogramming.com/unicorns/ljtech" } }, { "content_html": "This series will guide you through the fundamentals of CSS, HTML & JavaScript in one - or a few - steps at a time. In our first chapter, we'll talk...", "url": "https://playfulprogramming.com/posts/web-fundamentals-html", "title": "Web Fundamentals: HTML", "summary": "The first chapter of this series offers an introductory dive into the box model, HTML defaults and semantic elements.", "date_modified": "2024-09-03T20:08:26.988Z", "author": { "name": "Landon Johnson", "url": "https://playfulprogramming.com/unicorns/ljtech" } }, { "content_html": "Last week, I had a chance to dive into a case study that involved developing an HTTP-based REST API. This API's core functionality was to calculate...", "url": "https://playfulprogramming.com/posts/leveraging-django-511-and-postgresql-16-for-an-efficient-geo-targeted-rating-api-58hf", "title": "Leveraging Django 5.1.1 and PostgreSQL 16 for an Efficient Geo-Targeted Rating API", "summary": "Last week, I had a chance to dive into a case study that involved developing an HTTP-based REST API....", "date_modified": "2024-09-03T17:21:14.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "As an Angular developer, deploying your application to different environments – development (dev), user acceptance testing (UAT), and production – ...", "url": "https://playfulprogramming.com/posts/building-and-serving-angular-applications-across-environments-with-environmentts-angular-15-6dk", "title": "Building and Serving Angular Applications Across Environments with environment.ts (Angular 15+)", "summary": "As an Angular developer, deploying your application to different environments – development (dev),...", "date_modified": "2024-09-03T11:17:45.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "The IT landscape is ever-evolving, and staying ahead of the curve is crucial for professionals looking to make a significant impact in their fields...", "url": "https://playfulprogramming.com/posts/why-you-should-attend-experts-live-europe-2024-in-budapest-unlocking-opportunities-in-the-heart-of-innovation-3pbg", "title": "Why You Should Attend Experts Live Europe 2024 in Budapest: Unlocking Opportunities in the Heart of Innovation", "summary": "The IT landscape is ever-evolving, and staying ahead of the curve is crucial for professionals...", "date_modified": "2024-09-01T19:15:18.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "An \"Entity Component System\" is a pattern followed by many game engines to create isolated systems of stateless, reusable game logic. ECS presents ...", "url": "https://playfulprogramming.com/posts/bevy-ecs-code-reusability", "title": "Entity Component System: The Perfect Solution to Reusable Code?", "summary": "The ECS pattern is used by many game engines to create stateless, reusable game logic. But how does it work?", "date_modified": "2024-09-01T00:00:00.000Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "On our Discord channel we have started \"book club\" where someone suggest article for that week, and then we have discussion around it. This week ar...", "url": "https://playfulprogramming.com/posts/Where should you start building your application", "title": "Where should you start building your application", "summary": "Talking about where you should start building your full stack application", "date_modified": "2024-09-01T00:00:00.000Z", "author": { "name": "Ratomir Karlović", "url": "https://playfulprogramming.com/unicorns/rkarlovic" } }, { "content_html": "As a developer, the constant need for learning and adapting to new technologies is a given. However, the source of this learning plays a crucial ro...", "url": "https://playfulprogramming.com/posts/why-reading-official-documentation-first-made-me-a-better-developer-1aol", "title": "Why Reading Official Documentation First Made Me a Better Developer", "summary": "As a developer, the constant need for learning and adapting to new technologies is a given. However,...", "date_modified": "2024-08-30T20:22:45.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Monday Dedicated time to meticulously outline the comprehensive roadmap for Cloud Glow, my ambitious new side project. This venture is poised to ra...", "url": "https://playfulprogramming.com/posts/weekly-0076-2ibl", "title": "Weekly 0074", "summary": "Monday Dedicated time to meticulously outline the comprehensive roadmap for Cloud Glow, my...", "date_modified": "2024-08-26T18:02:47.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "If you've worked with frameworks like React, Angular, or Vue in the past you'll likely have used (or heard of) a CSS-in-JS solution like Styled Com...", "url": "https://playfulprogramming.com/posts/why-is-css-in-js-slow", "title": "Why is CSS-in-JS slow?", "summary": "If you've worked with frameworks like React, Angular, or Vue in the past you'll likely have used (or heard of) a CSS-in-JS solution like Styled Com...", "date_modified": "2024-08-26T10:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Introduction to the Microsoft MVP Program The Microsoft Most Valuable Professional (MVP) program is a prestigious recognition awarded by Microsoft ...", "url": "https://playfulprogramming.com/posts/celebrating-11-years-as-a-microsoft-mvp-a-journey-of-perseverance-and-gratitude-24dg", "title": "🎉 Celebrating 11 Years as a Microsoft MVP: A Journey of Perseverance and Gratitude 🌟", "summary": "Introduction to the Microsoft MVP Program The Microsoft Most Valuable Professional (MVP)...", "date_modified": "2024-08-22T08:31:53.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Angular 18.2 has arrived, and while it may be a minor release, it holds some valuable improvements that enhance developer experience. This article ...", "url": "https://playfulprogramming.com/posts/angular-182-enhanced-template-syntax-and-streamlined-migrations-30c3", "title": "Angular 18.2: Enhanced Template Syntax and Streamlined Migrations", "summary": "Angular 18.2 has arrived, and while it may be a minor release, it holds some valuable improvements...", "date_modified": "2024-08-21T23:43:15.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Introduction Whether you're a coding ninja or a startup wizard, understanding tech debt, its pros, and its cons is paramount. But what exactly is t...", "url": "https://playfulprogramming.com/posts/navigating-tech-debt-in-early-stage-startups-the-double-edged-sword-4fef", "title": "Navigating Tech Debt in Early-Stage Startups: The Double-Edged Sword", "summary": "Introduction Whether you're a coding ninja or a startup wizard, understanding tech debt,...", "date_modified": "2024-08-20T12:17:11.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Congratulations on making it through the series thus far. But this is where things start to go off the rails. Reactivity might involve scheduling b...", "url": "https://playfulprogramming.com/posts/async-derivations-in-reactivity-ec5", "title": "Async Derivations in Reactivity", "summary": "Congratulations on making it through the series thus far. But this is where things start to go off...", "date_modified": "2024-08-06T17:10:48.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "In this post, I share my blueprint for a hybrid CI workflow that neither forces you to adapt to a cloud-only nor local-only with minimal effort. Pr...", "url": "https://playfulprogramming.com/posts/create-a-ci-workflow-with-minimal-boilerplate-using-nx-docker-and-github-actions-4l44", "title": "Create a CI Workflow with Minimal Boilerplate Using Nx, Docker, and GitHub Actions", "summary": "In this post, I share my blueprint for a hybrid CI workflow that neither forces you to adapt to a...", "date_modified": "2024-08-04T11:14:05.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "In my ongoing quest to sharpen my LeetCode skills, I tackled the \"Best Time to Buy and Sell Stock II\" problem. This challenge is a follow-up to the...", "url": "https://playfulprogramming.com/posts/cracking-the-leetcode-122-best-time-to-buy-and-sell-stock-ii-17k5", "title": "Cracking the LeetCode 122. Best Time to Buy and Sell Stock II", "summary": "In my ongoing quest to sharpen my LeetCode skills, I tackled the \"Best Time to Buy and Sell Stock II\"...", "date_modified": "2024-08-04T09:48:30.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Most developers think about Reactivity as an event system. You have some state. You update that state and things derived from it re-evaluate. Ultim...", "url": "https://playfulprogramming.com/posts/scheduling-derivations-in-reactivity-4687", "title": "Scheduling Derivations in Reactivity", "summary": "Most developers think about Reactivity as an event system. You have some state. You update that state...", "date_modified": "2024-08-01T15:28:00.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "I recently tackled a classic LeetCode problem: \"Best Time to Buy and Sell Stock.\" This problem asks you to find the maximum profit you can make by ...", "url": "https://playfulprogramming.com/posts/leetcode-problem-121-best-time-to-buy-and-sell-stock-5d2b", "title": "LeetCode Problem 121: Best Time to Buy and Sell Stock", "summary": "I recently tackled a classic LeetCode problem: \"Best Time to Buy and Sell Stock.\" This problem asks...", "date_modified": "2024-08-01T12:45:20.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "In some circles, two-way binding is seen as the scourge of modern frontends, while in others it is seen as the ultimate ergonomic convenience. One ...", "url": "https://playfulprogramming.com/posts/two-way-binding-is-a-two-way-street-2d3c", "title": "Two-way Binding is a Two-way Street", "summary": "In some circles, two-way binding is seen as the scourge of modern frontends, while in others it is...", "date_modified": "2024-07-31T21:19:18.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Today's a big day. After 5 years, Unicorn Utterances is going through a major rebrand: say hello to Playful Programming ! After such a long time, i...", "url": "https://playfulprogramming.com/posts/rebrand-to-playful-programming", "title": "It's Time For A Change: Rebranding Our Platform", "summary": "\"Unicorn Utterances\" is now \"Playful Programming\". Let's talk about why, what's different, what's the same, and what's next.", "date_modified": "2024-07-29T20:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Today we're announcing that our developer education platform, which was once named \"Unicorn Utterances\", is now \"Playful Programming\". Before sayin...", "url": "https://playfulprogramming.com/posts/a-complete-history-of-uu", "title": "A Complete History of Unicorn Utterances", "summary": "Now that \"Unicorn Utterances\" is called \"Playful Programming\", let's look at the history of the project.", "date_modified": "2024-07-29T10:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "DotenvX is a library that simplifies managing and sharing environment variables. With features like partial or complete public key encryption and e...", "url": "https://playfulprogramming.com/posts/exploring-dotenvx-46ng", "title": "Exploring DotenvX", "summary": "Evaluate DotenvX to manage environment variables", "date_modified": "2024-07-27T12:00:37.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "As I delved into PrimeNG and PrimeFlex for my recent Angular 17 standalone app with SSR, one aspect truly stood out: built-in themes. Unlike Materi...", "url": "https://playfulprogramming.com/posts/effortless-theme-toggling-in-angular-17-standalone-apps-with-primeng-2h20", "title": "Effortless Theme Toggling in Angular 17 Standalone Apps with PrimeNG", "summary": "As I delved into PrimeNG and PrimeFlex for my recent Angular 17 standalone app with SSR, one aspect...", "date_modified": "2024-07-16T10:47:32.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "Exploring Angular 18 Without Disrupting Existing Projects I was recently working on an Angular 17 project and felt the itch to explore the exciting...", "url": "https://playfulprogramming.com/posts/safely-experiment-with-angular-18-a-guide-for-developers-with-existing-16-17-projects-3c3", "title": "Safely Experiment with Angular 18: A Guide for Developers with Existing 16 & 17 Projects", "summary": "Exploring Angular 18 Without Disrupting Existing Projects I was recently working on an...", "date_modified": "2024-07-16T09:37:34.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "As a full-stack developer, I strive to create applications that cater to a global audience. This extends to my personal portfolio, which should be ...", "url": "https://playfulprogramming.com/posts/implementing-i18n-internationalization-in-nextjs-14-with-next-intl-2a53", "title": "Implementing i18n Internationalization in Next.js 14 with Next-Intl", "summary": "As a full-stack developer, I strive to create applications that cater to a global audience. This...", "date_modified": "2024-07-15T04:05:34.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "As a full-stack developer, my portfolio is my digital handshake to potential employers. It showcases my skills and experience, and ultimately, conv...", "url": "https://playfulprogramming.com/posts/integrating-creative-data-visualization-in-my-developer-portfolio-using-nextjs-14-and-recharts-5570", "title": "Integrating Creative Data Visualization in My Developer Portfolio Using Next.js 14 and Recharts", "summary": "As a full-stack developer, my portfolio is my digital handshake to potential employers. It showcases...", "date_modified": "2024-07-14T15:30:52.000Z", "author": { "name": "Ingila Ejaz", "url": "https://playfulprogramming.com/unicorns/ingila185" } }, { "content_html": "When we need to write a test for components, it is not hard. The pain starts when our components begin to have dependencies, not only in the constr...", "url": "https://playfulprogramming.com/posts/testing-components-in-angular-no-errors-schema-stub-components-and-ngmocks-2bih", "title": "Testing Components In Angular: NO ERRORS SCHEMA, Stub Components, and NgMocks", "summary": "When we need to write a test for components, it is not hard. The pain starts when our components...", "date_modified": "2024-07-13T10:21:30.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "The beauty of shadcn/ui is that it's not a component library, but a set of components that you can use to compose your own library. This is great b...", "url": "https://playfulprogramming.com/posts/the-missing-shadcnui-component-1ip6", "title": "The Missing Shadcn/ui Component 🪄", "summary": "The beauty of shadcn/ui is that it's not a component library, but a set of components that you can...", "date_modified": "2024-07-10T13:18:47.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Your form might not have a fixed number of fields, that's where arrays come in! Let's see today how TanStack Form behaves in this scenario. This is...", "url": "https://playfulprogramming.com/posts/tanstack-form-tutorial-arrays-dynamic-fields-5b25", "title": "TanStack Form Tutorial: Arrays & Dynamic Fields", "summary": "Your form might not have a fixed number of fields, that's where arrays come in! Let's see today how...", "date_modified": "2024-06-04T14:07:50.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Colors 🌈 help us identify things in our surroundings, including Visual Studio Code instances and files. Today I show how I solved two problems I h...", "url": "https://playfulprogramming.com/posts/2-colors-extensions-to-make-visual-studio-code-even-better-49a0", "title": "🌈 2 Colors Extensions to make Visual Studio Code even better!", "summary": "Colors 🌈 help us identify things in our surroundings, including Visual Studio Code instances and...", "date_modified": "2024-05-28T11:09:48.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Validation is one of the core features of forms, probably the most important one. In the last article we set up together a simple form with TanStac...", "url": "https://playfulprogramming.com/posts/tanstack-form-tutorial-advanced-validation-41hc", "title": "TanStack Form Tutorial: Advanced Validation", "summary": "Validation is one of the core features of forms, probably the most important one. In the last...", "date_modified": "2024-05-21T12:05:10.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "You can play online multiplayer games on Github profiles! 🎮 Setting up a profile on GitHub is easy, you just need to create a repository with your...", "url": "https://playfulprogramming.com/posts/play-4-multiplayer-games-on-github-profiles-readmemd-m83", "title": "Play 4 Multiplayer Games 🎮 on Github Profiles (README.md)", "summary": "You can play online multiplayer games on Github profiles! 🎮 Setting up a profile on GitHub is easy,...", "date_modified": "2024-05-14T11:22:28.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When I need to build real-time apps with Angular, most of the time I use SignalR, but a few days ago, a friend mentioned SSE. I had never heard abo...", "url": "https://playfulprogramming.com/posts/building-real-time-boards-with-angular-and-nestjs-using-server-sent-events-3k9j", "title": "Building Real-Time Boards with Angular and NestJS Using Server-Sent Events", "summary": "When I need to build real-time apps with Angular, most of the time I use SignalR, but a few days ago,...", "date_modified": "2024-05-10T06:39:52.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "In our last blog post, we took a look at how to scaffold a React Native monorepo. We explained how some of the benefits were not only code sharing ...", "url": "https://playfulprogramming.com/posts/react-native-web-monorepo", "title": "Set up a React Native Web Project in a Monorepo", "summary": "Setting up a React Native Web project in a monorepo is challenging. Let's do so and see what challenges we run into!", "date_modified": "2024-05-09T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Forms are not an easy business 🤯 Luckily there are many libraries helping out with that and today let's see up close how to setup a form with TanS...", "url": "https://playfulprogramming.com/posts/tanstack-form-setup-and-simple-validation-with-shadcnui-1al", "title": "TanStack Form Tutorial: Setup and simple validation (with shadcn/ui)", "summary": "Forms are not an easy business 🤯 Luckily there are many libraries helping out with that and today...", "date_modified": "2024-05-07T13:40:41.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In the last two issues, we started exploring generics, where we looked at the fundamentals of generics and how to create generics constraints . I b...", "url": "https://playfulprogramming.com/posts/making-generics-types-optional-generics-fundamentals-in-typescript-1m11", "title": "Making Generics Types Optional - Generics Fundamentals in Typescript", "summary": "In the last two issues, we started exploring generics, where we looked at the fundamentals of...", "date_modified": "2024-04-30T16:20:31.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Unlocking the Power of Out-GridView in PowerShell When it comes to PowerShell, every seasoned scripter knows that efficiency and versatility are ke...", "url": "https://playfulprogramming.com/posts/unlocking-the-power-of-out-gridview-in-powershell-4aei", "title": "Unlocking the Power of Out-GridView in PowerShell", "summary": "Unlocking the Power of Out-GridView in PowerShell When it comes to PowerShell, every seasoned...", "date_modified": "2024-04-30T08:24:43.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "GitHub just announced Copilot Workspace a new integrated AI feature with Copilot being your companion through the entire development process, not o...", "url": "https://playfulprogramming.com/posts/copilot-workspace-githubs-latest-innovation-1ej5", "title": "Copilot Workspace - GitHub's latest innovation", "summary": "GitHub just announced Copilot Workspace a new integrated AI feature with Copilot being your companion...", "date_modified": "2024-04-29T16:41:10.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "As a developer, my workdays are filled with coding, designing, and collaborating with colleagues both in-person and remotely. Over time, I've curat...", "url": "https://playfulprogramming.com/posts/whats-in-my-bag-when-i-go-to-the-office-april-2024-edition-4edg", "title": "What's in my bag when I go to the office [April 2024 Edition]", "summary": "As a developer, my workdays are filled with coding, designing, and collaborating with colleagues both...", "date_modified": "2024-04-25T06:13:47.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Shadcn/ui is great, components are good-looking, easy to setup and customize, and everyone likes it… BUT, as everything, it has some downsides. Mos...", "url": "https://playfulprogramming.com/posts/what-i-dont-like-about-shadcnui-3amf", "title": "What I DON'T like about shadcn/ui", "summary": "Shadcn/ui is great, components are good-looking, easy to setup and customize, and everyone likes it…...", "date_modified": "2024-04-23T11:05:29.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Sometimes I feel that I'm reading a lot of technical articles and watching videos, but nothing really sticks to my mind after a few days (or hours!...", "url": "https://playfulprogramming.com/posts/feeling-overwhelmed-by-technical-articles-lets-find-a-solution-3cn2", "title": "Feeling overwhelmed by technical articles? Let's find a solution", "summary": "Sometimes I feel that I'm reading a lot of technical articles and watching videos, but nothing really...", "date_modified": "2024-04-21T08:47:34.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Welcome to the fifth article of a series where we will explore TanStack Router, the new typesafe routing library (and state manager, in some cases)...", "url": "https://playfulprogramming.com/posts/tanstack-router-nesting-404-pages-36f9", "title": "TanStack Router: Nesting & 404 pages", "summary": "Welcome to the fifth article of a series where we will explore TanStack Router, the new typesafe...", "date_modified": "2024-04-09T17:27:47.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In a previous issue , we learned about the fundamentals of Generics in Typescript and how we can use generics to make our lives easier as developer...", "url": "https://playfulprogramming.com/posts/generic-constraints-a-gentle-introduction-to-generics-in-typescript-i9b", "title": "Generic Constraints - A Gentle Introduction to Generics in Typescript", "summary": "In a previous issue, we learned about the fundamentals of Generics in Typescript and how we can use...", "date_modified": "2024-04-09T07:43:40.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "In most issues for this newsletter, I have focussed on Typescript and its type system, which I will continue doing. This has been great for my read...", "url": "https://playfulprogramming.com/posts/bun-the-one-tool-for-all-your-javascripttypescript-projects-needs-5f13", "title": "Bun - The One Tool for All Your JavaScript/Typescript Project's Needs?", "summary": "In most issues for this newsletter, I have focussed on Typescript and its type system, which I will...", "date_modified": "2024-04-02T17:27:06.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "One of the more advanced topics in Typescript is Generics and understanding and adding them to your Typescript coding toolbox can be very powerful....", "url": "https://playfulprogramming.com/posts/a-gentle-introduction-to-generics-in-typescript-3ap3", "title": "A Gentle Introduction to Generics in Typescript", "summary": "One of the more advanced topics in Typescript is Generics and understanding and adding them to your...", "date_modified": "2024-03-26T07:21:09.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Navigating open spaces can be challenging for anyone, but for neurodivergent individuals, it can present a unique set of difficulties. From sensory...", "url": "https://playfulprogramming.com/posts/navigating-open-spaces-survival-guide-for-neurodivergent-individuals-4l73", "title": "Navigating Open Spaces: Survival Guide for Neurodivergent Individuals", "summary": "Navigating open spaces can be challenging for anyone, but for neurodivergent individuals, it can...", "date_modified": "2024-03-19T09:29:42.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "When using JavaScript, you'll likely to've run into a function like fetch that doesn't pass you a value immediately. const res = fetch(\"example.com...", "url": "https://playfulprogramming.com/posts/async-and-promises", "title": "Explaining Promises, Async, and Await in JavaScript", "summary": "Modern JavaScript is built on promises and callbacks. Let's learn what promises are and how we can make their usage easier using async functions.", "date_modified": "2024-03-15T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In Typescript version 4.9 , Typescript introduced the satisfies operator. Over the last few months, I have seen examples of it being used out in th...", "url": "https://playfulprogramming.com/posts/a-deep-dive-into-the-satisfies-operator-in-typescript-1b3n", "title": "A Deep Dive into the satisfies operator in Typescript", "summary": "In Typescript version 4.9, Typescript introduced the satisfies operator. Over the last few months, I...", "date_modified": "2024-03-12T19:36:44.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Welcome to the fourth article of a series where we will explore TanStack Router, the new typesafe routing library for React. In this article, we'll...", "url": "https://playfulprogramming.com/posts/tanstack-router-authenticated-routes-guards-3obp", "title": "TanStack Router: Authenticated routes & Guards", "summary": "Welcome to the fourth article of a series where we will explore TanStack Router, the new typesafe...", "date_modified": "2024-03-12T14:50:42.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Welcome to the third article of a series where we will explore TanStack Router, the new typesafe routing library (and state manager, in some cases)...", "url": "https://playfulprogramming.com/posts/tanstack-router-query-parameters-validators-4ijg", "title": "TanStack Router: Query Parameters & Validators", "summary": "Welcome to the third article of a series where we will explore TanStack Router, the new typesafe...", "date_modified": "2024-03-07T12:24:30.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Since I discovered Oh My Zsh a few years ago, it has been a god-sent gift to me. I believe it has impacted my productivity in a very positive way, ...", "url": "https://playfulprogramming.com/posts/boost-your-productivity-by-mastering-oh-my-zsh-git-aliases-4i10", "title": "Boost your productivity by mastering Oh My ZSH git aliases", "summary": "Since I discovered Oh My Zsh a few years ago, it has been a god-sent gift to me. I believe it has...", "date_modified": "2024-03-06T07:03:05.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "I think about testing a lot. I've come to enjoy writing the tests for the things I build more than the things themselves.\nA large reason why is bec...", "url": "https://playfulprogramming.com/posts/go-embedding-interfaces", "title": "Embedding Interfaces in Go", "summary": "Creating tests can feel tedious, but doing it in Go can be, dare I say, *fun*. Let's take a look at how embedding interfaces clears some of that tedium for us.", "date_modified": "2024-03-06T00:00:00.000Z", "author": { "name": "Robert Usher", "url": "https://playfulprogramming.com/unicorns/rusher2004" } }, { "content_html": "Welcome to the second article of a series where we will explore TanStack Router, the new typesafe routing library (and state manager, in some cases...", "url": "https://playfulprogramming.com/posts/tanstack-router-path-parameters-loader-1h84", "title": "TanStack Router: Path Parameters & Loader", "summary": "Welcome to the second article of a series where we will explore TanStack Router, the new typesafe...", "date_modified": "2024-02-29T10:51:49.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "The Vite Backend Integration guide is light on details; it asks the reader to consider using an existing integration. This isn't helpful when an in...", "url": "https://playfulprogramming.com/posts/build-a-vite-5-backend-integration-with-flask", "title": "Build a Vite 5 Backend Integration with Flask", "summary": "Learn how to build a lightweight backend Vite integration using a Flask Blueprint in ~50 lines of code.", "date_modified": "2024-02-27T00:00:00.000Z", "author": { "name": "Tyler Smith", "url": "https://playfulprogramming.com/unicorns/tylerlwsmith" } }, { "content_html": "Welcome to the first article of a series where we will explore TanStack Router, a new router for React (version 1.0 released in December 2023 ). Sh...", "url": "https://playfulprogramming.com/posts/tanstack-router-setup-routing-in-react-4gf7", "title": "TanStack Router: Setup & Routing in React", "summary": "Welcome to the first article of a series where we will explore TanStack Router, a new router for...", "date_modified": "2024-02-26T19:21:50.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Pushing all branches simultaneously streamlines the process of synchronizing your local repository with the remote. It ensures that all your change...", "url": "https://playfulprogramming.com/posts/how-to-push-all-branches-from-command-line-3nib", "title": "How to Push All Branches from Command Line", "summary": "Pushing all branches simultaneously streamlines the process of synchronizing your local repository...", "date_modified": "2024-02-24T21:40:15.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In this article, I will present two concrete cases of implicit dependencies and show you how to configure your Nx workspace and projects to deal wi...", "url": "https://playfulprogramming.com/posts/implicit-dependencies-management-with-nx-a-practical-guide-through-real-world-case-studies-59kd", "title": "Implicit Dependencies Management with Nx: A Practical Guide through Real-World Case Studies", "summary": "In this article, I will present two concrete cases of implicit dependencies and show you how to...", "date_modified": "2024-02-19T19:38:25.000Z", "author": { "name": "Edouard Maleix", "url": "https://playfulprogramming.com/unicorns/getlarge" } }, { "content_html": "In the fast-paced world of technology and innovation, product development teams often face a critical dilemma: Should they prioritize speed to mark...", "url": "https://playfulprogramming.com/posts/the-dilemma-of-perfection-balancing-timeliness-and-quality-in-product-development-4jlj", "title": "The Dilemma of Perfection: Balancing Timeliness and Quality in Product Development", "summary": "In the fast-paced world of technology and innovation, product development teams often face a critical...", "date_modified": "2024-02-19T13:12:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In the fast-paced world of startups, communication is key. However, navigating through the sea of jargon can be overwhelming, especially for newcom...", "url": "https://playfulprogramming.com/posts/decoding-startup-jargon-a-comprehensive-guide-for-entrepreneurs-12im", "title": "Decoding Startup Jargon: A Comprehensive Guide for Entrepreneurs", "summary": "In the fast-paced world of startups, communication is key. However, navigating through the sea of...", "date_modified": "2024-02-16T07:57:13.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I’m sure you’ve heard about conventional commits, but what about conventional comments ? The Problem Code Reviews can go terribly wrong. They're qu...", "url": "https://playfulprogramming.com/posts/conventional-comments-stop-fighting-in-code-reviews-nia", "title": "Conventional Comments: Stop Fighting in Code Reviews", "summary": "I’m sure you’ve heard about conventional commits, but what about conventional comments? The...", "date_modified": "2024-02-13T14:51:42.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Imagine you're using Vite with Flask or some other minimal web framework. You need to generate a manifest file so your app can look up the filename...", "url": "https://playfulprogramming.com/posts/move-manifestjson-to-outdirs-parent-directory-in-vite-5", "title": "Move manifest.json to the Output Directory's Parent in Vite 5", "summary": "Move Vite's manifest.json file outside of the build directory.", "date_modified": "2024-02-07T00:00:00.000Z", "author": { "name": "Tyler Smith", "url": "https://playfulprogramming.com/unicorns/tylerlwsmith" } }, { "content_html": "Remember that file you deleted last week? Too bad, now you need it. Let's see how git restore can help you recover it. There are a few ways to rest...", "url": "https://playfulprogramming.com/posts/restore-deletedlost-files-with-git-3lf7", "title": "Restore deleted/lost files with git", "summary": "Remember that file you deleted last week? Too bad, now you need it. Let's see how git restore can...", "date_modified": "2024-02-06T12:50:28.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In the ever-evolving world of web development, mastering asynchronous operations is a crucial skill for any JavaScript developer. Asynchronous prog...", "url": "https://playfulprogramming.com/posts/a-promise-is-forever-124i", "title": "A Promise is forever", "summary": "In the ever-evolving world of web development, mastering asynchronous operations is a crucial skill...", "date_modified": "2024-02-06T06:13:01.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "One of the challenges of writing PowerShell scripts is how to handle variables configuration, such as settings, paths, credentials, and other value...", "url": "https://playfulprogramming.com/posts/how-to-manage-variables-configuration-in-a-powershell-project-59cn", "title": "How to Manage Variables Configuration in a PowerShell Project", "summary": "One of the challenges of writing PowerShell scripts is how to handle variables configuration, such as...", "date_modified": "2024-02-02T19:05:30.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I spent 15 minutes every single day reading documentation and here’s what I learnt. In the last two weeks, I read the official Qwik docs but that’s...", "url": "https://playfulprogramming.com/posts/15-minutes-of-documentation-for-15-days-a3", "title": "15 Minutes of Documentation 📖 for 15 Days", "summary": "I spent 15 minutes every single day reading documentation and here’s what I learnt. In the last two...", "date_modified": "2024-01-31T10:59:14.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "As a developer and CTO, I have to juggle multiple tasks and projects every day. I need to write code, review code, manage my team, communicate with...", "url": "https://playfulprogramming.com/posts/how-endel-app-boosted-my-productivity-as-a-developer-and-cto-5b7n", "title": "How Endel App Boosted My Productivity as a Developer and CTO", "summary": "As a developer and CTO, I have to juggle multiple tasks and projects every day. I need to write code,...", "date_modified": "2024-01-27T09:00:56.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I'm launching a GitHub organization to host community projects. The mission is to learn Web Development through Open Source , together! What does t...", "url": "https://playfulprogramming.com/posts/beginner-friendly-open-source-projects-to-learn-web-development-bp5", "title": "Beginner-friendly Open Source projects to learn Web Development", "summary": "I'm launching a GitHub organization to host community projects. The mission is to learn Web...", "date_modified": "2024-01-25T13:34:27.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In this post, I will show you how to add controllers to a Blazor Server app and how to use them to handle requests from the client side. Controller...", "url": "https://playfulprogramming.com/posts/how-to-add-controllers-to-a-blazor-server-app-a9", "title": "How To Add Controllers To A Blazor Server App", "summary": "In this post, I will show you how to add controllers to a Blazor Server app and how to use them to...", "date_modified": "2024-01-23T07:31:57.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "[Edit] I was just told that libFuzzer is deprecated. I think the ideas presented are valid for any fuzzer, but the\ndetails will differ. When I ment...", "url": "https://playfulprogramming.com/posts/fuzzing-api-with-libfuzzer", "title": "Fuzzing an API with libfuzzer", "summary": "[Edit] I was just told that libFuzzer is deprecated. I think the ideas presented are valid for any fuzzer, but the\ndetails will differ. When I ment...", "date_modified": "2024-01-23T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Hello everyone, this is my last blog post of the year and I want to share with you some of the highlights and achievements that I had in 2023. It w...", "url": "https://playfulprogramming.com/posts/my-wrap-up-of-2023-a-year-of-growth-and-recognition-4b6n", "title": "My Wrap Up of 2023: A Year of Growth and Recognition", "summary": "Hello everyone, this is my last blog post of the year and I want to share with you some of the...", "date_modified": "2024-01-21T05:31:21.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "There is a reason why the first time you learn about a reactive system the example always looks something like this: let name = state(\"John\");\n\neff...", "url": "https://playfulprogramming.com/posts/derivations-in-reactivity-4fo1", "title": "Derivations in Reactivity", "summary": "There is a reason why the first time you learn about a reactive system the example always looks...", "date_modified": "2024-01-19T08:00:00.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Everytime you write a config for a common tool, for example you're writing a GitHub Action in Visual Studio Code, you get a nice autocomplete with ...", "url": "https://playfulprogramming.com/posts/fantastic-json-schemas-and-where-to-find-them-i5j", "title": "Fantastic JSON Schemas and where to find them", "summary": "Everytime you write a config for a common tool, for example you're writing a GitHub Action in Visual...", "date_modified": "2024-01-16T13:04:41.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Not that long ago, figuring out how to generate a code template for your favorite framework was a challenge in itself. Older configuration tools li...", "url": "https://playfulprogramming.com/posts/web-framework-quickstart-guide", "title": "Web Framework Quickstart Guide", "summary": "Here's the quickest ways you can get up-and-running with templates for React, Angular, and Vue; using official tools.", "date_modified": "2024-01-16T04:45:30.247Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Spam is a common problem for email users and administrators. Spam messages can clutter your inbox, waste your time, and expose you to malicious or ...", "url": "https://playfulprogramming.com/posts/keep-your-email-out-of-recipients-spam-folders-177b", "title": "Keep Your Email out of Recipients’ Spam Folders", "summary": "Spam is a common problem for email users and administrators. Spam messages can clutter your inbox,...", "date_modified": "2024-01-14T14:57:22.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "How often when you run your build command you see a bunch of warnings in the console? I mean, they've always been there so why even bother fixing t...", "url": "https://playfulprogramming.com/posts/do-you-ignore-warnings-in-the-console-3aij", "title": "You shouldn't ignore warnings in the console", "summary": "How often when you run your build command you see a bunch of warnings in the console? I mean, they've...", "date_modified": "2024-01-09T13:36:49.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Network protocols are sets of rules and standards that enable communication between devices over a network. They define how data is formatted, tran...", "url": "https://playfulprogramming.com/posts/how-to-speak-the-language-of-the-internet-a-guide-to-the-most-common-network-protocols-j8e", "title": "How to Speak the Language of the Internet: A Introduction to the Most Common Network Protocols", "summary": "Network protocols are sets of rules and standards that enable communication between devices over a...", "date_modified": "2024-01-03T09:55:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Recently, I found myself caught in a maze of DevOps challenges that resulted in unexpected outages for my blog. Each time I thought I had fixed the...", "url": "https://playfulprogramming.com/posts/astro-heathcheck-monitor-blog-for-issues", "title": "Astro Healthcheck", "summary": "Monitoring Your Blog for Issues", "date_modified": "2023-12-29T13:45:00.284Z", "author": { "name": "William (Will) Lohan", "url": "https://playfulprogramming.com/unicorns/splatkillwill" } }, { "content_html": "Angular is a powerful framework. Most folks know of it as the component framework, but it's much more than that. For example, did you know about An...", "url": "https://playfulprogramming.com/posts/angular-dynamic-host-usage", "title": "Angular Dynamic host Property Usage", "summary": "In directives and components alike, it can be a pain to add attributes and bindings to the host element. Instead of using DI to change the host, try this instead.", "date_modified": "2023-12-28T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Here it is, the end of 2023. What a year it has been. I've been thinking about what I want to do in 2024, but before I do that, I want to take a lo...", "url": "https://playfulprogramming.com/posts/2023-retrospective-5fd2", "title": "2023 Retrospective", "summary": "Here it is, the end of 2023. What a year it has been. I've been thinking about what I want to do in...", "date_modified": "2023-12-28T10:18:00.000Z", "author": { "name": "Davide Imola", "url": "https://playfulprogramming.com/unicorns/davideimola" } }, { "content_html": "When I started learning Angular, I was taught about Angular's components like this: Angular's components have a template that is part of a componen...", "url": "https://playfulprogramming.com/posts/angular-templates-dont-work-how-you-think", "title": "Angular's Templates Don't Work the Way You Think They Do", "summary": "Angular templates are mission-critial for components. But how do they work? Using a compiler, yes, but how do they bind to the DOM itself? Read on to find out.", "date_modified": "2023-12-27T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Using Git effectively requires some good practices and habits, such as making atomic commits . What is an atomic commit? An atomic commit is a comm...", "url": "https://playfulprogramming.com/posts/the-power-of-atomic-commits-in-git-how-and-why-to-do-it-54mn", "title": "The Power of Atomic Commits in Git: How and Why to Do It", "summary": "Using Git effectively requires some good practices and habits, such as making atomic commits. ...", "date_modified": "2023-12-22T05:59:44.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I won't be the first to say it, but I will say it nonetheless, 2023 was quite the year for JavaScript frameworks. Between new technologies we've be...", "url": "https://playfulprogramming.com/posts/javascript-frameworks-heading-into-2024-i3l", "title": "JavaScript Frameworks - Heading into 2024", "summary": "I won't be the first to say it, but I will say it nonetheless, 2023 was quite the year for JavaScript...", "date_modified": "2023-12-21T22:44:48.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Thus far in our article series, we've taken a look at how React handles reactivity, server rendering, and how to send data back and forth between o...", "url": "https://playfulprogramming.com/posts/what-is-use-action-state-and-form-status", "title": "What is React's useActionState and useFormStatus?", "summary": "React Server Actions are an awesome way to pass data to and from your React client and server. Like all functions, they need a way to return data.", "date_modified": "2023-12-20T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our last article, we talked about React's hook and Async Server Components ; both means to handle async operations to display in a render. In t...", "url": "https://playfulprogramming.com/posts/what-are-react-server-actions", "title": "What are React Server Actions?", "summary": "While React Suspense APIs enable you to load data asynchronously from the server, Server Actions allow you to send data to the server from the client.", "date_modified": "2023-12-19T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Suppose that the logic of your program depends on time. That is, you need to keep track of when something in the past\nhappened, and what time it is...", "url": "https://playfulprogramming.com/posts/about-time", "title": "About time - how to unit test code that depends on time", "summary": "Suppose that the logic of your program depends on time. That is, you need to keep track of when something in the past\nhappened, and what time it is...", "date_modified": "2023-12-19T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "In our last article, I introduced React Server Components (RSC) as a primitive to enable more efficient server-side React usage. I also hinted in t...", "url": "https://playfulprogramming.com/posts/what-is-react-suspense-and-async-rendering", "title": "What is React Suspense and Async Rendering?", "summary": "Handling async code in React code has historically been fairly challenging to get right. Let's see how React's official solutions for promises stack up!", "date_modified": "2023-12-18T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hold on a second, it's called Hype Cycle, but actually... it's not a cycle. I mean, there are 5 stages and when a technology reaches the final one,...", "url": "https://playfulprogramming.com/posts/exploiting-the-hype-cycle-in-tech-29a3", "title": "Exploiting the Hype Cycle in Tech", "summary": "Hold on a second, it's called Hype Cycle, but actually... it's not a cycle. I mean, there are 5...", "date_modified": "2023-12-18T09:10:28.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "This article is talking about an experimental React API: There may be unexpected bugs and issues with it. In addition, this API is not available in...", "url": "https://playfulprogramming.com/posts/explaining-reacts-cache-function", "title": "Explaining React's cache Function", "summary": "React's dipping its toes into data fetching! With this comes a big requirement to cache the results of a given function. Luckily, React's done that. Let's see how.", "date_modified": "2023-12-17T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our last article in the series, we talked about how React is able to pre-generate HTML from JSX on the server (or developer's machine) prior to ...", "url": "https://playfulprogramming.com/posts/what-are-react-server-components", "title": "What are React Server Components (RSCs)?", "summary": "React Server Components have been a topic of regular discussion in the WebDev space as-of late. What are they? How do they improve the SSR story for React? Let's take a look.", "date_modified": "2023-12-16T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In our last post we introduced how a modern frontend framework like React, Angular, or Vue are able to make your JavaScript state easier to sync to...", "url": "https://playfulprogramming.com/posts/what-is-reconciliation-and-the-vdom", "title": "What is Reconciliation and the Virtual DOM (VDOM)?", "summary": "How does React handle update the DOM? The answer? \"The Virtual DOM and reconciliation.\" Let's explore what these are and how you can leverage them the best.", "date_modified": "2023-12-15T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "This article is intended for newcomers to HTML and JavaScript programming. However, it's suggested that you read this article explaining what the D...", "url": "https://playfulprogramming.com/posts/what-is-reactivity", "title": "What is Reactivity?", "summary": "When researching frontend frameworks, you're likely to hear about \"reactivity\". But what is it? Why does it matter? Let's explore this and more in this article.", "date_modified": "2023-12-14T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "There's nothing wrong in writing plain text in your HTML/JSX code, it renders nicely on the browser and that's it. Until... your customer asks you ...", "url": "https://playfulprogramming.com/posts/pains-and-solutions-in-localization-for-the-web-3mdf", "title": "Pains and solutions in localization for the web", "summary": "There's nothing wrong in writing plain text in your HTML/JSX code, it renders nicely on the browser...", "date_modified": "2023-12-13T18:22:29.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "I'm constantly exploring ways to improve user interaction on websites. Recently, while building a store demo, I thought of enhancing the user exper...", "url": "https://playfulprogramming.com/posts/add-router-animation-transitions-for-navigation-in-angular-17-2m5a", "title": "Add Router Animation Transitions for Navigation in Angular 17", "summary": "I'm constantly exploring ways to improve user interaction on websites. Recently, while building a...", "date_modified": "2023-12-13T15:03:34.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "I've seen this a few times too many recently, and need to get it off my chest. Ponder a class that has a private member function. The function does...", "url": "https://playfulprogramming.com/posts/when-private-member-function", "title": "When private member function?", "summary": "I've seen this a few times too many recently, and need to get it off my chest. Ponder a class that has a private member function. The function does...", "date_modified": "2023-12-12T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Sometimes, you may want to access the sub properties of an object, which are the properties of the properties. For example, if you have a process o...", "url": "https://playfulprogramming.com/posts/how-to-retrieve-sub-properties-in-a-powershell-script-with-the-invoke-expression-method-16f4", "title": "How to retrieve sub properties in a PowerShell script with the Invoke-Expression method", "summary": "Sometimes, you may want to access the sub properties of an object, which are the properties of the...", "date_modified": "2023-12-07T13:55:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Cover art by Microsoft Designer. Since 2017 , Angular documentation has offered little advice on testing routing components, routed components, rou...", "url": "https://playfulprogramming.com/posts/testing-routed-components-with-routertestingharness-22dl", "title": "Testing routed components with RouterTestingHarness", "summary": "RouterTestingHarness uses the actual Angular Router API in our routed component tests.", "date_modified": "2023-12-07T00:00:00.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "During my daily activities I develop a lot of Azure Functions. Every time I struggle to synchronize my local settings to the remote settings on Azure.", "url": "https://playfulprogramming.com/posts/fetching-and-publishing-settings-for-azure-functions-with-azure-functions-core-tools-command-line-4akj", "title": "Fetching and Publishing Settings for Azure Functions with Azure Functions Core Tools Command Line", "summary": "During my daily activities I develop a lot of Azure Functions. Every time I struggle to synchronize...", "date_modified": "2023-12-05T13:46:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "IMPORTANT : All the things in this article are highly opinionated, and they are not a standard. I'm just sharing my experience and what I think is ...", "url": "https://playfulprogramming.com/posts/level-up-your-rdbms-productivity-in-go-51eo", "title": "Level UP your RDBMS Productivity in GO", "summary": "IMPORTANT: All the things in this article are highly opinionated, and they are not a standard. I'm...", "date_modified": "2023-12-05T13:30:00.000Z", "author": { "name": "Davide Imola", "url": "https://playfulprogramming.com/unicorns/davideimola" } }, { "content_html": "December means Advent of Code for many of us 🎄 (or at least, the first few days of December) These funny challenges require a few steps every day,...", "url": "https://playfulprogramming.com/posts/advent-of-code-automation-for-javascripttypescript-4111", "title": "Advent of Code Automation for Javascript/Typescript", "summary": "December means Advent of Code for many of us 🎄 (or at least, the first few days of December) These...", "date_modified": "2023-12-03T21:27:55.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Up until yesterday (technically, a few days ago), tabs were bound to the same vscode window, but today, things have changed. What happens if I rele...", "url": "https://playfulprogramming.com/posts/the-most-upvoted-visual-studio-code-feature-4heh", "title": "The Most Upvoted Visual Studio Code Feature", "summary": "Up until yesterday (technically, a few days ago), tabs were bound to the same vscode window, but...", "date_modified": "2023-11-29T20:20:46.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Have you ever wondered what it takes to be a successful software developer? Do you think you have the skills and mindset to create amazing applicat...", "url": "https://playfulprogramming.com/posts/developers-and-sherpas-a-mountainous-analogy-362i", "title": "Developers and Sherpas: A Mountainous Analogy", "summary": "Have you ever wondered what it takes to be a successful software developer? Do you think you have the...", "date_modified": "2023-11-26T19:22:04.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Server-side applications will not have access to certain browser APIs and features. They are unable to utilize browser-specific global objects such as", "url": "https://playfulprogramming.com/posts/how-to-handle-browser-storage-in-angular-ssr-24c5", "title": "How to handle browser storage in Angular SSR?", "summary": "In this quick tutorial, we will learn best way to handle browser storage with Angular SSR", "date_modified": "2023-11-25T16:33:24.000Z", "author": { "name": "Dharmen Shah", "url": "https://playfulprogramming.com/unicorns/shhdharmen" } }, { "content_html": "A few days ago Microsoft released the new version of .NET: .NET 8.\nThis is the stable version of the latest framework by Microsoft.\nIf you are not ...", "url": "https://playfulprogramming.com/posts/set-up-github-codespaces-for-a-net-8-application-5999", "title": "Set up GitHub Codespaces for a .NET 8 application", "summary": "A few days ago Microsoft released the new version of .NET: .NET 8. This is the stable version of the...", "date_modified": "2023-11-21T20:38:45.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "It's been a long time in my mind to write a series of posts regarding Codespaces but now it occurred to me to create a series of posts related to e...", "url": "https://playfulprogramming.com/posts/github-codespaces-a-faster-way-to-develop-in-the-cloud-2ml4", "title": "GitHub Codespaces: A Faster Way to Develop in the Cloud", "summary": "It's been a long time in my mind to write a series of posts regarding Codespaces but now it occurred...", "date_modified": "2023-11-21T20:38:25.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "With the release of Angular 17, I wanted to explore the control flow syntax in Angular and demonstrate its benefits. The new syntax, which was part...", "url": "https://playfulprogramming.com/posts/a-deep-dive-into-new-control-flow-syntax-for-angular-17-24ld", "title": "A deep dive into new control flow syntax for Angular (17)", "summary": "With the release of Angular 17, I wanted to explore the control flow syntax in Angular and...", "date_modified": "2023-11-20T15:18:19.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Debugging a React app is far from being an easy task... if you don't know the tools you already have, for free! Today we'll see one of the many, th...", "url": "https://playfulprogramming.com/posts/debug-a-react-app-with-visual-studio-code-3cid", "title": "Debug a React app with Visual Studio Code", "summary": "Debugging a React app is far from being an easy task... if you don't know the tools you already have,...", "date_modified": "2023-11-16T11:08:32.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "As a developer, I spend a lot of time writing and reading code. And one of the most important aspects of coding is the choice of font. A good font ...", "url": "https://playfulprogramming.com/posts/why-i-love-monaspace-font-for-coding-47e7", "title": "Why I love Monaspace font for coding", "summary": "As a developer, I spend a lot of time writing and reading code. And one of the most important aspects...", "date_modified": "2023-11-13T06:37:15.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Ever wished for a magical toolkit that gives you superhero-like control over JavaScript objects? Say hello to the Reflect API, the Swiss Army knife...", "url": "https://playfulprogramming.com/posts/the-reflect-api-the-swiss-army-knife-every-javascript-developer-needs-512k", "title": "The Reflect API: The Swiss Army Knife Every JavaScript Developer Needs", "summary": "Ever wished for a magical toolkit that gives you superhero-like control over JavaScript objects? Say...", "date_modified": "2023-11-09T07:18:26.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "This is an update to an existing article: If you haven't yet, check the original article below. Hard Grids & Baselines: Achieving 1:1 Android Fidel...", "url": "https://playfulprogramming.com/posts/figma-compose-line-height", "title": "Figma to Compose: Line Height & Baseline Grids", "summary": "A detailed guide on how to make text in Jetpack Compose match your mockups, and why baseline grids are not all that they're hyped up to be.", "date_modified": "2023-11-09T04:45:30.247Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "There's a lot of different ways to practice programming. You can solve coding exercises, go through courses, or read books. Maybe you've done some ...", "url": "https://playfulprogramming.com/posts/building-original-projects", "title": "How to Build Original Projects", "summary": "People often say that you should build your own projects to grow as a developer, without explaining how. Let's learn how to actually plan and build your own custom projects.", "date_modified": "2023-11-09T00:00:00.000Z", "author": { "name": "Jarrod Reyes", "url": "https://playfulprogramming.com/unicorns/reyes-dev" } }, { "content_html": "👋 Hey, JavaScript developers! Ever wondered what makes your objects tick? Or how to go all \"Inception\" on your JavaScript code by manipulating obj...", "url": "https://playfulprogramming.com/posts/cracking-the-javascript-code-unveil-the-magic-of-object-descriptors-17b6", "title": "Cracking the JavaScript Code: Unveil the Magic of Object Property Descriptors", "summary": "👋 Hey, JavaScript developers! Ever wondered what makes your objects tick? Or how to go all...", "date_modified": "2023-11-02T06:35:07.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Having a unique ID on each card is so important to efficiently communicate, but Trello does not show it by default. However, there are some Chrome ...", "url": "https://playfulprogramming.com/posts/i-fixed-trello-41l8", "title": "I Fixed Trello", "summary": "Having a unique ID on each card is so important to efficiently communicate, but Trello does not show...", "date_modified": "2023-10-31T14:21:33.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Last week, I had the opportunity to attend Codemotion 2023, one of the biggest tech conferences in Europe, as a speaker and an ambassador. It was a...", "url": "https://playfulprogramming.com/posts/recap-codemotion-2023-1o6c", "title": "Recap Codemotion 2023", "summary": "Last week, I had the opportunity to attend Codemotion 2023, one of the biggest tech conferences in...", "date_modified": "2023-10-30T09:06:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Many developers have side projects that they work on for fun, learning, or solving a personal problem. But what if you want to turn your side proje...", "url": "https://playfulprogramming.com/posts/how-to-release-a-side-project-as-a-real-product-emj", "title": "How to Release a Side Project as a Real Product", "summary": "Many developers have side projects that they work on for fun, learning, or solving a personal...", "date_modified": "2023-10-28T19:51:37.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Kubernetes and GitOps offer a powerful way to manage your infrastructure and applications. However, when it comes to securing sensitive information...", "url": "https://playfulprogramming.com/posts/securing-secrets-in-the-age-of-gitops-2478", "title": "Securing Secrets in the Age of GitOps", "summary": "Kubernetes and GitOps offer a powerful way to manage your infrastructure and applications. However,...", "date_modified": "2023-10-27T09:07:21.000Z", "author": { "name": "Davide Imola", "url": "https://playfulprogramming.com/unicorns/davideimola" } }, { "content_html": "Introduction JavaScript's memory management can be tricky, especially when it comes to handling objects that are no longer needed. As developers, w...", "url": "https://playfulprogramming.com/posts/javascript-finalizationregistry-unraveled-memory-management-magic-explained-3m70", "title": "JavaScript FinalizationRegistry Unraveled: Memory Management Magic Explained!", "summary": "Introduction JavaScript's memory management can be tricky, especially when it comes to...", "date_modified": "2023-10-25T06:21:41.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "These are 4 really easy ways of making horrible decisions, but don't worry, being able to recognize them is the first step to actually avoid them. ...", "url": "https://playfulprogramming.com/posts/how-to-not-decide-the-next-tech-stack-4-decision-making-anti-patterns-5f5a", "title": "How to NOT decide the next tech stack: 4 decision making anti-patterns", "summary": "These are 4 really easy ways of making horrible decisions, but don't worry, being able to recognize...", "date_modified": "2023-10-19T09:34:25.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "JavaScript's Proxy object is a powerful feature that enables you to intercept and customize operations performed on objects. This versatile tool al...", "url": "https://playfulprogramming.com/posts/unlocking-the-power-of-proxies-javascripts-secret-superheroes-2298", "title": "Unlocking the Power of Proxies: JavaScript's Secret Superheroes", "summary": "JavaScript's Proxy object is a powerful feature that enables you to intercept and customize...", "date_modified": "2023-10-18T06:03:05.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When you, as a contributor, want to create a new issue on GitHub, you're presented with a blank page and a text area to write your issue descriptio...", "url": "https://playfulprogramming.com/posts/github-form-templates-3n49", "title": "GitHub Form Templates", "summary": "When you, as a contributor, want to create a new issue on GitHub, you're presented with a blank page...", "date_modified": "2023-10-17T20:53:04.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When you query the Microsoft Graph API, you may encounter a limitation: the API only returns a maximum of 1000 items per request. This means that i...", "url": "https://playfulprogramming.com/posts/how-to-handle-microsoft-graph-paging-in-powershell-4l8m", "title": "How To Handle Microsoft Graph Paging in PowerShell", "summary": "When you query the Microsoft Graph API, you may encounter a limitation: the API only returns a...", "date_modified": "2023-10-17T05:14:18.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "As the creator of SolidJS, I was very influenced by React when designing the library. Despite what people might believe by looking at it, it wasn't...", "url": "https://playfulprogramming.com/posts/thinking-locally-with-signals-3b7h", "title": "Thinking Locally with Signals", "summary": "As the creator of SolidJS, I was very influenced by React when designing the library. Despite what...", "date_modified": "2023-10-13T17:16:23.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "In the last few months I received a lot of requests from customers about avoiding Microsoft Graph API throttling or in general how to optimize the ...", "url": "https://playfulprogramming.com/posts/how-to-avoid-microsoft-graph-api-throttling-and-optimize-network-traffic-5c2g", "title": "How to avoid Microsoft Graph API throttling and optimize network traffic", "summary": "In the last few months I received a lot of requests from customers about avoiding Microsoft Graph API...", "date_modified": "2023-10-13T11:16:47.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Let's say you want to contribute to a large Open Source project like React or VSCode: are you supposed to know how the entire codebase works? Good ...", "url": "https://playfulprogramming.com/posts/contributing-to-huge-open-source-projects-31n2", "title": "Contributing to HUGE Open Source Projects", "summary": "Let's say you want to contribute to a large Open Source project like React or VSCode: are you...", "date_modified": "2023-10-12T10:05:36.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Introduction to WeakRef WeakRef is a powerful feature in JavaScript that allows developers to create weak object references. A weak reference is a ...", "url": "https://playfulprogramming.com/posts/javascript-weakref-explained-harnessing-memory-management-magic-16f6", "title": "JavaScript WeakRef Explained: Harnessing Memory Management Magic", "summary": "Introduction to WeakRef WeakRef is a powerful feature in JavaScript that allows developers...", "date_modified": "2023-10-11T06:23:40.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "In my last recent talks and at work (I helped a lot of customers with Azure Automation and Azure Functions in the last two years), I received more ...", "url": "https://playfulprogramming.com/posts/azure-automation-vs-azure-functions-with-powershell-ef", "title": "Azure Automation vs Azure Functions with Powershell", "summary": "In my last recent talks and at work (I helped a lot of customers with Azure Automation and Azure...", "date_modified": "2023-10-09T04:31:24.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Tables like this one are in a lot of repositories, giving well deserved credit to their contributors. And you know, developers are lazy so there ha...", "url": "https://playfulprogramming.com/posts/give-credit-to-open-source-contributors-36da", "title": "Give credit to Open Source Contributors", "summary": "Tables like this one are in a lot of repositories, giving well deserved credit to their...", "date_modified": "2023-10-04T14:58:50.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In the vast landscape of JavaScript, many powerful features often go unnoticed. One such hidden gem is the WeakSet, an unsung hero of the language ...", "url": "https://playfulprogramming.com/posts/unlock-the-power-of-javascript-weakset-mastering-a-hidden-gem-3jl7", "title": "Unlock the Power of JavaScript WeakSet: Mastering a Hidden Gem!", "summary": "In the vast landscape of JavaScript, many powerful features often go unnoticed. One such hidden gem...", "date_modified": "2023-10-04T06:22:01.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I’m excited to share with you my experience at Experts Live Europe 2023 , a premier conference for IT professionals and Microsoft enthusiasts. I ha...", "url": "https://playfulprogramming.com/posts/experts-live-2023-my-recap-4ack", "title": "Experts Live 2023 - My Recap", "summary": "I’m excited to share with you my experience at Experts Live Europe 2023, a premier conference for IT...", "date_modified": "2023-09-29T20:49:32.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Let's build out a small Angular application: import 'zone.js/dist/zone';\nimport { Component } from '@angular/core';\nimport { bootstrapApplication }...", "url": "https://playfulprogramming.com/posts/angular-constructor-error-behavior", "title": "Discovering Odd Behavior with Angular Error Handling", "summary": "Angular has fairly consistent error handling behavior... Until it doesn't. Here's one place where it's off and why.", "date_modified": "2023-09-27T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Introduction JavaScript is a powerful and versatile programming language that has evolved over the years, introducing new features and improvements...", "url": "https://playfulprogramming.com/posts/unlocking-javascripts-secret-weapon-the-power-of-weakmaps-36ni", "title": "Unlocking JavaScript's Secret Weapon: The Power of WeakMaps", "summary": "Introduction JavaScript is a powerful and versatile programming language that has evolved...", "date_modified": "2023-09-27T05:50:43.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Introduction to JavaScript Symbols JavaScript Symbols are a new primitive data type introduced in ECMAScript 6 (ES6). They are used as unique, non-...", "url": "https://playfulprogramming.com/posts/unveiling-the-magic-exploring-javascript-symbols-15d9", "title": "Unveiling the Magic: Exploring JavaScript Symbols", "summary": "Introduction to JavaScript Symbols JavaScript Symbols are a new primitive data type...", "date_modified": "2023-09-20T06:09:44.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Starting from September 26th you can register for the event. There will be a button on the official website and you can connect with your GitHub or...", "url": "https://playfulprogramming.com/posts/creating-your-first-valid-pr-for-hacktoberfest-2023-21f2", "title": "Creating your First Valid PR for Hacktoberfest 2023", "summary": "Starting from September 26th you can register for the event. There will be a button on the official...", "date_modified": "2023-09-18T12:16:36.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "I am very excited to attend Experts Live Europe, a community-driven IT conference focused on Microsoft cloud, datacenter, security and modern workp...", "url": "https://playfulprogramming.com/posts/whats-in-my-bag-for-experts-live-europe-9dn", "title": "What's in my bag for Experts Live Europe", "summary": "I am very excited to attend Experts Live Europe, a community-driven IT conference focused on...", "date_modified": "2023-09-17T22:06:31.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In the dynamic realm of JavaScript, the ability to efficiently handle asynchronous operations is paramount for building responsive and robust appli...", "url": "https://playfulprogramming.com/posts/javascript-async-generators-unleashed-harnessing-asynchronous-power-5acg", "title": "JavaScript Async Generators Unleashed: Harnessing Asynchronous Power", "summary": "In the dynamic realm of JavaScript, the ability to efficiently handle asynchronous operations is...", "date_modified": "2023-09-15T06:00:11.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "It is no secret that the past 2 years have seen the beginnings of a fairly dramatic change in frontend web technology. I write about these topics r...", "url": "https://playfulprogramming.com/posts/islands-server-components-resumability-oh-my-319d", "title": "Islands & Server Components & Resumability, Oh My!", "summary": "It is no secret that the past 2 years have seen the beginnings of a fairly dramatic change in...", "date_modified": "2023-09-14T07:01:00.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "When you, as a contributor, want to create a new issue on GitHub, you're presented with a blank page and a text area to write your issue descriptio...", "url": "https://playfulprogramming.com/posts/github-markdown-issue-templates-4b7l", "title": "GitHub Markdown Issue Templates", "summary": "When you, as a contributor, want to create a new issue on GitHub, you're presented with a blank page...", "date_modified": "2023-09-14T06:27:14.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hacktoberfest 2023 will NOT have the usual tshirt and stickers as a reward. This has been announced in the official website along with the reasons ...", "url": "https://playfulprogramming.com/posts/wheres-the-hacktoberfest-2023-t-shirt-pl2", "title": "Where's the Hacktoberfest 2023 T-Shirt?", "summary": "Hacktoberfest 2023 will NOT have the usual tshirt and stickers as a reward. This has been announced...", "date_modified": "2023-09-12T11:14:51.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Photo by ROCCO STOPPOLONI on Unsplash Last week, I was traveling to speak at CityJs + HalfStack Conf Belgrade, and suddenly, I realized how lucky I...", "url": "https://playfulprogramming.com/posts/never-forget-where-you-come-from-5el1", "title": "Never forget where you come from", "summary": "Photo by ROCCO STOPPOLONI on Unsplash Last week, I was traveling to speak at CityJs + HalfStack Conf...", "date_modified": "2023-09-10T19:55:42.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "In this blog post, I will show you how to create a simple contact form for your website using Blazor WebAssembly and Microsoft Azure. The contact f...", "url": "https://playfulprogramming.com/posts/building-a-contact-form-with-microsoft-azure-and-blazor-3fbh", "title": "Building a Contact Form with Microsoft Azure and Blazor", "summary": "In this blog post, I will show you how to create a simple contact form for your website using Blazor...", "date_modified": "2023-09-08T13:01:32.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In the ever-evolving landscape of JavaScript, staying up-to-date with its latest features is crucial for writing efficient and modern code. One suc...", "url": "https://playfulprogramming.com/posts/mastering-javascript-async-iterators-unlocking-asynchronous-magic-470k", "title": "Mastering JavaScript Async Iterators: Unlocking Asynchronous Magic", "summary": "In the ever-evolving landscape of JavaScript, staying up-to-date with its latest features is crucial...", "date_modified": "2023-09-08T05:16:06.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome to this blog post, where we're diving into the fascinating world of JavaScript generators. If you're looking to take your coding skills to ...", "url": "https://playfulprogramming.com/posts/unleashing-the-power-demystifying-javascript-generators-1koo", "title": "Unleashing the Power: Demystifying JavaScript Generators", "summary": "Welcome to this blog post, where we're diving into the fascinating world of JavaScript generators. If...", "date_modified": "2023-09-01T04:38:50.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Visual Studio Code (VS Code) is a popular and versatile code editor that supports many languages and platforms. In this blog post, I will show you ...", "url": "https://playfulprogramming.com/posts/setting-up-vs-code-for-c-development-21do", "title": "Setting up VS Code for C# development", "summary": "Visual Studio Code (VS Code) is a popular and versatile code editor that supports many languages and...", "date_modified": "2023-08-31T13:58:01.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I’m doing smart working in a full remote company for a couple of years. These are the pros and cons based on my personal experience. Let’s begin wi...", "url": "https://playfulprogramming.com/posts/my-smart-working-experience-pros-and-cons-bkm", "title": "My Smart Working Experience: Pros and Cons", "summary": "I’m doing smart working in a full remote company for a couple of years. These are the pros and cons...", "date_modified": "2023-08-28T08:47:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "PowerShell is a powerful scripting language that can manipulate various types of data, such as arrays, objects, and CSV files. In this blog post, I...", "url": "https://playfulprogramming.com/posts/powershell-turn-your-custom-objects-into-csv-files-and-vice-versa-with-a-snap-of-your-fingers-ifk", "title": "PowerShell: Turn Your Custom Objects into CSV Files (and vice versa) with a Snap of Your Fingers", "summary": "PowerShell is a powerful scripting language that can manipulate various types of data, such as...", "date_modified": "2023-08-25T12:01:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Welcome to this blog post, where we're about to unravel the power and versatility of JavaScript iterators. If you've ever found yourself working wi...", "url": "https://playfulprogramming.com/posts/iterate-like-a-pro-mastering-javascript-iterators-for-effortless-code-4e5p", "title": "Iterate Like a Pro: Mastering JavaScript Iterators for Effortless Code", "summary": "Welcome to this blog post, where we're about to unravel the power and versatility of JavaScript...", "date_modified": "2023-08-25T06:10:55.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Learning through tutorials alone is not enough, some hands-on practice is required in order to properly understand the concepts. I created a projec...", "url": "https://playfulprogramming.com/posts/learning-web-development-together-with-a-real-project-1bf8", "title": "Learning Web Development Together with a Real Project", "summary": "Learning through tutorials alone is not enough, some hands-on practice is required in order to...", "date_modified": "2023-08-21T09:22:23.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In collaboration with Chau Tran . The migration wave to signals is real, state management libraries have started to add support to support both obs...", "url": "https://playfulprogramming.com/posts/a-sweet-spot-between-signals-and-observables-4chb", "title": "A sweet spot between signals and observables 🍬", "summary": "In collaboration with Chau Tran. The migration wave to signals is real, state management libraries...", "date_modified": "2023-08-18T15:48:46.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "A few days ago, a friend asked how to prevent duplicate keys in an array, and I told him there are other collections to work with, and each one is ...", "url": "https://playfulprogramming.com/posts/when-use-arrays-tuples-maps-and-sets-in-typescript-with-examples-57l6", "title": "When Use Arrays, Tuples, Maps, and Sets In Typescript with Examples", "summary": "A few days ago, a friend asked how to prevent duplicate keys in an array, and I told him there are...", "date_modified": "2023-08-14T15:52:32.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Since a couple of days I’m seeing this screenshot everywhere on Twitter and Linkedin, and I’m sorry for you, this is now also here! But what is it ...", "url": "https://playfulprogramming.com/posts/developer-shape-makes-it-all-1gc2", "title": "Developer Shape Makes It All", "summary": "Since a couple of days I’m seeing this screenshot everywhere on Twitter and Linkedin, and I’m sorry...", "date_modified": "2023-08-14T10:39:28.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When building web application, from time to time we have to protect routes from unauthorized access. In Angular, we can do this by using router gua...", "url": "https://playfulprogramming.com/posts/create-configurable-angular-guards-ng4", "title": "Create configurable Angular guards", "summary": "When building web application, from time to time we have to protect routes from unauthorized access....", "date_modified": "2023-08-09T23:03:27.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Please, don’t tell me you’re still using console.log to debug your application. Ok, everyone does that, sometimes I use console logs too… BUT Chrom...", "url": "https://playfulprogramming.com/posts/chrome-debugger-is-easier-to-use-than-you-might-think-c8", "title": "Chrome Debugger is easier to use than you might think", "summary": "Please, don’t tell me you’re still using console.log to debug your application. Ok, everyone does...", "date_modified": "2023-08-02T07:03:17.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Exactly one year ago I started consistently posting on YouTube, at least a video every single week, talking about Web Development and Open Source. ...", "url": "https://playfulprogramming.com/posts/one-year-of-dev-youtube-2f5l", "title": "One Year of Dev YouTube", "summary": "Exactly one year ago I started consistently posting on YouTube, at least a video every single week,...", "date_modified": "2023-07-30T09:25:11.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "You got the idea for a new and fun side project which you will abandon after a few weeks, but that's another story You open your terminal and start...", "url": "https://playfulprogramming.com/posts/custom-scaffolding-with-copilot-july-update-473m", "title": "Custom scaffolding with Copilot - July 2023 Update", "summary": "You got the idea for a new and fun side project which you will abandon after a few weeks, but that's...", "date_modified": "2023-07-24T11:58:20.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Impostor syndrome is quite popular in the tech industry. People around you seem to be super experts, while you feel like you don't know anything an...", "url": "https://playfulprogramming.com/posts/a-message-from-an-impostor-231", "title": "A message from an Impostor", "summary": "Impostor syndrome is quite popular in the tech industry. People around you seem to be super experts,...", "date_modified": "2023-07-17T11:47:23.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "One of the challenges of web development is to keep the screen awake when an application needs to keep running. For example, if you are reading an ...", "url": "https://playfulprogramming.com/posts/how-to-prevent-the-screen-turn-off-after-a-while-in-blazor-4b29", "title": "How to prevent the screen turn off after a while in Blazor", "summary": "One of the challenges of web development is to keep the screen awake when an application needs to...", "date_modified": "2023-07-12T12:39:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Three things you do NOT want in your repository: Unformatted code Warnings/errors Failing tests Is there an easy way to prevent these from happenin...", "url": "https://playfulprogramming.com/posts/who-pushed-failing-tests-again-git-hooks-with-husky-24h8", "title": "Who pushed failing tests again? Git Hooks with Husky 🐶", "summary": "Three things you do NOT want in your repository: Unformatted code Warnings/errors Failing...", "date_modified": "2023-07-11T09:17:35.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Cover art by DALL-E. Nx 16.4 introduces the @nx/dependency-checks ESLint rule to the @nx/linter package for verifying, adding, removing, and updati...", "url": "https://playfulprogramming.com/posts/manage-nx-library-dependencies-with-the-nxdependency-checks-eslint-rule-2lem", "title": "Manage Nx library dependencies with the @nx/dependency-checks ESLint rule", "summary": "The `@nx/dependency-checks` ESLint rule is an invaluable tool in managing peer dependencies of a buildable or publishable Nx library.", "date_modified": "2023-07-06T21:56:24.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Backend development is a crucial part of web development that involves creating and maintaining the logic, functionality and data of a website or a...", "url": "https://playfulprogramming.com/posts/backend-development-is-more-than-writing-endpoints-for-frontend-gl1", "title": "Backend development is more than writing endpoints for frontend", "summary": "Backend development is a crucial part of web development that involves creating and maintaining the...", "date_modified": "2023-07-03T12:42:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "If you need to use some secret values in your pipeline, for example an API key to send a Slack message or to deploy to a server, first of all you'd...", "url": "https://playfulprogramming.com/posts/secrets-and-environment-variables-in-your-github-action-1pfn", "title": "Secrets and Environment Variables in your GitHub Action", "summary": "If you need to use some secret values in your pipeline, for example an API key to send a Slack...", "date_modified": "2023-07-03T10:32:02.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "A hash table - also known as a dictionary or hash map - is a type of data structure used to store large amounts of data. Data consists of key-value...", "url": "https://playfulprogramming.com/posts/intro-to-hash-tables", "title": "Introduction to Hash Tables", "summary": "A high-level overview of how hash tables work behind the scenes.", "date_modified": "2023-07-03T00:00:00.000Z", "author": { "name": "Richard Prasad", "url": "https://playfulprogramming.com/unicorns/richarddprasad" } }, { "content_html": "Astro is a WebDev meta-framework that allows you to build highly performant websites, that, out-of-the-box compile down to 0kb of JavaScript in you...", "url": "https://playfulprogramming.com/posts/port-nextjs-to-astro", "title": "Porting a Next.js Site to Astro Step-by-Step", "summary": "Let's port a site from Next.js to Astro, expanding on the official migration guide.", "date_modified": "2023-06-29T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Classes in JavaScript are both powerful and weird. While they allow us to create named objects with similarly purposed methods and properties, they...", "url": "https://playfulprogramming.com/posts/js-classes-without-keyword", "title": "Using JavaScript classes without the `class` keyword", "summary": "Classes are a core feature of JavaScript - but they weren't always that way. How did earlier JS devs write classes? Let's learn how together.", "date_modified": "2023-06-29T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "React Native allows you to write React code that outputs to native applications for various platforms, including: Android iOS Windows macOS It's an...", "url": "https://playfulprogramming.com/posts/setup-a-react-native-monorepo", "title": "How to Setup a React Native Monorepo", "summary": "React Native can be challenging to setup a monorepo for. Let's explore what an optimal monorepo setup looks like for it.", "date_modified": "2023-06-29T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "On June 14th I've been in Florence to attend an amazing workshop about Qwik, held by Misko Hevery, the creator of Qwik, and Giorgio Boa, a Qwik cor...", "url": "https://playfulprogramming.com/posts/qwik-introduction-from-misko-and-giorgio-3dbl", "title": "Qwik introduction from Misko and Giorgio", "summary": "On June 14th I've been in Florence to attend an amazing workshop about Qwik, held by Misko Hevery,...", "date_modified": "2023-06-26T09:01:02.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "As developers, we use a lot of our coding time to fix bugs. Debugging helps us find and remove errors in software development. But sometimes, findi...", "url": "https://playfulprogramming.com/posts/simple-methods-for-debugging-angular-applications-1pe3", "title": "How To Debug Angular Applications Easy", "summary": "As developers, we use a lot of our coding time to fix bugs. Debugging helps us find and remove errors...", "date_modified": "2023-06-17T07:50:28.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Git is a powerful and popular version control system that helps you manage your code history and collaborate with other developers. However, over t...", "url": "https://playfulprogramming.com/posts/how-to-clean-up-your-local-repository-with-git-commands-531o", "title": "How to Clean Up Your Local Repository with Git Commands", "summary": "Git is a powerful and popular version control system that helps you manage your code history and...", "date_modified": "2023-06-16T14:02:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In an earlier post, in my All Things Typescript newsletter, we covered how we can look up types for functions in Typescript using the Parameters an...", "url": "https://playfulprogramming.com/posts/looking-up-react-components-props-types-3k0n", "title": "Looking Up React Components Props Types", "summary": "In an earlier post, in my All Things Typescript newsletter, we covered how we can look up types for...", "date_modified": "2023-06-14T11:43:55.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "GitHub Actions are a powerful tool to automate your workflow. They can be used to run tests, deploy your code, publish a package, and much more. Th...", "url": "https://playfulprogramming.com/posts/create-and-publish-a-github-action-in-typescript-ultimate-2023-guide-4igk", "title": "Create and Publish a GitHub Action in Typescript", "summary": "GitHub Actions are a powerful tool to automate your workflow. They can be used to run tests, deploy...", "date_modified": "2023-06-12T10:37:13.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Introduction When I embarked on my journey as a software developer, I delved into the depths of software architecture. Renowned books such as \"Clea...", "url": "https://playfulprogramming.com/posts/architects-delight-enforcing-layers-and-project-boundaries-with-nx-2d8o", "title": "Architects Delight: Enforcing Layers and Project Boundaries with Nx", "summary": "Introduction When I embarked on my journey as a software developer, I delved into the...", "date_modified": "2023-06-11T12:20:53.000Z", "author": { "name": "Nacho Vazquez", "url": "https://playfulprogramming.com/unicorns/naxodev" } }, { "content_html": "This history started many years ago! I was a student, and I was going to the ITS in Pordenone. I spent two years of my life in that school, where I...", "url": "https://playfulprogramming.com/posts/my-journey-to-the-mvp-award-5k7", "title": "🏆 My journey to the MVP Award 🏆", "summary": "This history started many years ago! I was a student, and I was going to the ITS in Pordenone. I...", "date_modified": "2023-06-09T05:30:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "If you've worked in web development, there's a good chance that you've come across the term \"VDOM\" or Virtual DOM. The VDOM is the secret sauce tha...", "url": "https://playfulprogramming.com/posts/unraveling-the-magic-of-the-virtual-dom", "title": "Unraveling the Magic of the Virtual DOM", "summary": "The VDOM is the secret sauce that empowers developers to create the captivating, dynamic web applications that we use every day.", "date_modified": "2023-06-08T00:00:00.000Z", "author": { "name": "Sarah Gerrard", "url": "https://playfulprogramming.com/unicorns/ladybluenotes" } }, { "content_html": "Performance is a crucial aspect of web development, as it affects the user experience, accessibility, and business goals of your applications.\nI de...", "url": "https://playfulprogramming.com/posts/how-to-boost-your-web-performance-with-html5-features-4027", "title": "How to Boost Your Web Performance with HTML5 Features", "summary": "Performance is a crucial aspect of web development, as it affects the user experience, accessibility,...", "date_modified": "2023-06-07T13:29:10.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Hey Folks, Today it's time to learn how you can build an infinite query with React Query. To build an infinite query you have to use the useInfinit...", "url": "https://playfulprogramming.com/posts/react-query-infinite-queries-2909", "title": "React Query - Infinite Queries", "summary": "Hey Folks, Today it's time to learn how you can build an infinite query with React Query. To build...", "date_modified": "2023-06-07T05:30:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Safari 17 Beta is the latest version of Apple's web browser, which was released on June 5, 2023. It includes many new features and improvements for...", "url": "https://playfulprogramming.com/posts/safari-17-beta-a-game-changer-for-pwas-on-macos-ddp", "title": "Safari 17 Beta: A Game Changer for PWAs on MacOS", "summary": "Safari 17 Beta is the latest version of Apple's web browser, which was released on June 5, 2023. It...", "date_modified": "2023-06-06T15:20:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "When developing Firebase functions, it's common to have everything in a single repository - all the Firebase Functions for your project. This is us...", "url": "https://playfulprogramming.com/posts/organize-your-firebase-functions-for-easier-deployments-and-maintenance-127l", "title": "Organize Your Firebase Functions For Easier Deployments and Maintenance", "summary": "When developing Firebase functions, it's common to have everything in a single repository - all the...", "date_modified": "2023-06-06T10:11:48.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Hello! If you read my articles often here on devto you probably noticed that I also publish them on my website leonardomontini.dev . It's a static ...", "url": "https://playfulprogramming.com/posts/astro-coding-session-series-feature-on-my-blog-4e0p", "title": "Astro Coding Session: \"Series\" feature on my blog", "summary": "Hello! If you read my articles often here on devto you probably noticed that I also publish them on...", "date_modified": "2023-06-05T10:35:08.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "One of the new features in Visual Studio 2022 is the support for HTTP files, which are text files that contain HTTP requests and responses. HTTP fi...", "url": "https://playfulprogramming.com/posts/visual-studio-2022-a-new-way-to-work-with-http-requests-and-responses-41hp", "title": "Visual Studio 2022: A New Way to Work with HTTP Requests and Responses", "summary": "One of the new features in Visual Studio 2022 is the support for HTTP files, which are text files...", "date_modified": "2023-06-01T12:43:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Hey Folks, Today it's time to learn how you can paginate a list with ReactQuery. It's common to create a pagination of a list to improve the user i...", "url": "https://playfulprogramming.com/posts/react-query-paginated-list-4m77", "title": "React Query - Paginated List", "summary": "Hey Folks, Today it's time to learn how you can paginate a list with ReactQuery. It's common to...", "date_modified": "2023-06-01T06:14:11.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "After using Warp for over a couple of months (and collecting feedback from colleagues already using it), the time has come. Is it better than Fig ?...", "url": "https://playfulprogramming.com/posts/enhancing-your-terminal-experience-warp-or-fig-g15", "title": "Enhancing your terminal experience: Warp or Fig?", "summary": "After using Warp for over a couple of months (and collecting feedback from colleagues already using...", "date_modified": "2023-05-31T07:34:31.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Cover image by DALL-E. The defaultProject setting for the Nx CLI was originally inherited from the Angular CLI. In integrated and standalone Nx wor...", "url": "https://playfulprogramming.com/posts/stop-using-the-defaultproject-nx-cli-setting-and-start-using-nxdefaultproject-2ka5", "title": "Stop using the defaultProject Nx CLI setting and start using NX_DEFAULT_PROJECT", "summary": "The defaultProject Nx CLI setting is deprecated. However, there's a hidden alternative.", "date_modified": "2023-05-30T06:26:51.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "In this article, I will explain what ConfigureAwait is, why it is important to use it correctly, and how to use it with some code examples. What is...", "url": "https://playfulprogramming.com/posts/understanding-and-using-configureawait-in-asynchronous-programming-2da3", "title": "Understanding and Using ConfigureAwait in Asynchronous Programming", "summary": "In this article, I will explain what ConfigureAwait is, why it is important to use it correctly, and...", "date_modified": "2023-05-29T12:22:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Microsoft Build 2023 was a three-day event that showcased the latest innovations and tools for developers. The event focused on how developers can ...", "url": "https://playfulprogramming.com/posts/the-top-5-best-takeaways-from-microsoft-build-2023-43nh", "title": "The Top 5 Best Takeaways from Microsoft Build 2023", "summary": "Microsoft Build 2023 was a three-day event that showcased the latest innovations and tools for...", "date_modified": "2023-05-26T21:34:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I recently shared a video where I showed how Copilot Chat can write tests for you , a funny demo, but today's article will not be about AI. The thi...", "url": "https://playfulprogramming.com/posts/how-to-convince-your-project-managerclient-to-let-you-write-unit-tests-5cje", "title": "How to Convince your Project Manager/Client to let you write Unit Tests", "summary": "I recently shared a video where I showed how Copilot Chat can write tests for you, a funny demo, but...", "date_modified": "2023-05-24T20:23:40.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "PowerShell is a powerful scripting language that can automate tasks, manage configuration, and interact with various systems and services. However,...", "url": "https://playfulprogramming.com/posts/how-to-write-better-powershell-scripts-architecture-and-best-practices-emh", "title": "How to Write Better PowerShell Scripts: Architecture and Best Practices", "summary": "PowerShell is a powerful scripting language that can automate tasks, manage configuration, and...", "date_modified": "2023-05-23T08:22:56.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "I recently got access to the new Copilot CLI, which basically gives you the full power of GitHub Copilot but in your favourite terminal so... time ...", "url": "https://playfulprogramming.com/posts/playing-with-copilot-cli-on-top-of-warp-terminal-1a77", "title": "Playing with Copilot CLI on top of Warp terminal", "summary": "I recently got access to the new Copilot CLI, which basically gives you the full power of GitHub...", "date_modified": "2023-05-23T07:50:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "We don't write tests because we don't have time. How many times have you heard that? Or maybe you said it yourself? I know you did, we all do at so...", "url": "https://playfulprogramming.com/posts/copilot-chat-writes-unit-tests-for-you-1c82", "title": "Copilot Chat writes Unit Tests for you!", "summary": "We don't write tests because we don't have time. How many times have you heard that? Or maybe you...", "date_modified": "2023-05-18T06:53:23.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hey Folks, Today it's time to learn how you can abort an ongoing request with ReactQuery. Before moving to the example, I want to introduce the Abo...", "url": "https://playfulprogramming.com/posts/react-query-abort-request-31j6", "title": "React Query - Abort Request", "summary": "Hey Folks, Today it's time to learn how you can abort an ongoing request with ReactQuery. Before...", "date_modified": "2023-05-17T05:29:28.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "As I mentioned in my two previous articles, JavaScript is a single-threaded language , which means it can only execute one task at a time. This can...", "url": "https://playfulprogramming.com/posts/how-to-unleash-the-power-of-multithreading-in-javascript-with-web-workers-20m5", "title": "How to Unleash the Power of Multithreading in JavaScript with Web Workers", "summary": "As I mentioned in my two previous articles, JavaScript is a single-threaded language, which means it...", "date_modified": "2023-05-16T13:04:52.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Hey Folks, Sometimes to improve the user experience you can decide to bet on the success of your code, so you can assume that the code will go in t...", "url": "https://playfulprogramming.com/posts/improve-user-experience-with-optimistic-update-56bp", "title": "Improve user experience with optimistic update", "summary": "Hey Folks, Sometimes to improve the user experience you can decide to bet on the success of your...", "date_modified": "2023-05-11T05:56:50.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Visual Studio is great to write code and create something amazing, but sometimes, you may want to use it for a different purpose: presenting your c...", "url": "https://playfulprogramming.com/posts/how-to-use-visual-studio-like-a-pro-when-presenting-your-code-5955", "title": "How to Use Visual Studio Like a Pro When Presenting Your Code", "summary": "Visual Studio is great to write code and create something amazing, but sometimes, you may want to use...", "date_modified": "2023-05-10T07:10:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "In my previous article I described how to use Async and Await in Vanilla JavaScript. Async and Await in Vanilla JavaScript In this article, I would...", "url": "https://playfulprogramming.com/posts/how-to-use-promiseall-and-promiseraceto-speed-up-your-javascript-code-3obh", "title": "How to Use Promise.all and Promise.race to Speed Up Your JavaScript Code", "summary": "In my previous article I described how to use Async and Await in Vanilla JavaScript. ...", "date_modified": "2023-05-09T12:35:00.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "GitHub Copilot CLI comes with three aliases: ?? : Ask for a generic shell command git? : Ask for a git command gh? : Ask for a GitHub CLI command T...", "url": "https://playfulprogramming.com/posts/github-copilot-x-cli-is-your-new-git-assistant-1edn", "title": "GitHub Copilot CLI is your new GIT assistant", "summary": "GitHub Copilot CLI comes with three aliases: ??: Ask for a generic shell command git?: Ask for a...", "date_modified": "2023-05-08T06:58:26.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In the last couple of years I work a lot with Blazor WebAssembly for my personal projects and, first of all, for my main job.\nTime to time I need t...", "url": "https://playfulprogramming.com/posts/async-and-await-in-vanilla-javascript-2mep", "title": "Async and Await in Vanilla JavaScript", "summary": "In the last couple of years I work a lot with Blazor WebAssembly for my personal projects and, first...", "date_modified": "2023-05-04T18:47:01.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Hey Folks, Today I want to share two important things if you are using ReactQuery. The first is how the keys are composed, and the second is how to...", "url": "https://playfulprogramming.com/posts/react-query-keys-prefetching-42pa", "title": "React Query - Keys & Prefetching", "summary": "Hey Folks, Today I want to share two important things if you are using ReactQuery. The first is how...", "date_modified": "2023-05-03T05:30:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "A few days ago I was working on my blog leonardomontini.dev as I'd like to give it a strong restyle and move from Gatsby to Astro. I also took the ...", "url": "https://playfulprogramming.com/posts/using-copilot-x-cli-to-reorganize-my-blog-30ga", "title": "Using Copilot: CLI to reorganize my blog", "summary": "A few days ago I was working on my blog leonardomontini.dev as I'd like to give it a strong restyle...", "date_modified": "2023-05-01T19:41:43.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In this post, I'm going to show you how to create Azure Functions with PowerShell and Visual Studio Code. Azure Functions are serverless applicatio...", "url": "https://playfulprogramming.com/posts/create-an-azure-function-with-powershell-and-visual-studio-code-3k9n", "title": "Create an Azure Function with PowerShell and Visual Studio Code", "summary": "In this post, I'm going to show you how to create Azure Functions with PowerShell and Visual Studio...", "date_modified": "2023-04-28T13:03:41.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "We’re used to lazy loading modules or components in Angular. But what about lazy loading services? Wait, what? Yes, we can. In this article, we wil...", "url": "https://playfulprogramming.com/posts/lazy-loading-services-in-angular-what-yes-we-can-2gah", "title": "Lazy loading services in Angular. What?! Yes, we can.", "summary": "We’re used to lazy loading modules or components in Angular. But what about lazy loading services?...", "date_modified": "2023-04-26T07:25:51.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Hey folks, Do you know that you can enable or disable a query in react query? Noooo! Ok, it's time to learn it! Some specific hooks must be enabled...", "url": "https://playfulprogramming.com/posts/react-query-enable-query-hj5", "title": "React Query - Enable Query", "summary": "Hey folks, Do you know that you can enable or disable a query in react query? Noooo! Ok, it's time to...", "date_modified": "2023-04-26T05:30:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When I moved from Windows to Mac a year ago I also developed the habit of using the terminal much more. It might be because at first I was just con...", "url": "https://playfulprogramming.com/posts/trying-out-a-new-terminal-warp-3pnh", "title": "Trying out a new terminal: Warp", "summary": "When I moved from Windows to Mac a year ago I also developed the habit of using the terminal much...", "date_modified": "2023-04-25T17:10:46.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "A Crash Course to Two-Factor Authentication Two-Factor Authentication (2FA) is a security feature that adds an extra layer of protection to your on...", "url": "https://playfulprogramming.com/posts/crash-course-to-two-factor-authentication", "title": "A Crash Course to Two-Factor Authentication", "summary": "Two-Factor Authentication is a security feature that adds an extra layer of protection to your online accounts.", "date_modified": "2023-04-24T20:08:26.988Z", "author": { "name": "Mark Spratt", "url": "https://playfulprogramming.com/unicorns/hopelezz" } }, { "content_html": "Do you know Javascript? After the success of the previous video , I've decided to make a second one with 10 more challenges to test your knowledge ...", "url": "https://playfulprogramming.com/posts/10-more-javascript-challenges-3812", "title": "10 more Javascript Challenges!", "summary": "Do you know Javascript? After the success of the previous video, I've decided to make a second one...", "date_modified": "2023-04-24T12:06:46.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "ASP.NET and Visual Studio are powerful tools for web application development, but like any software, they can generate temporary files and caches t...", "url": "https://playfulprogramming.com/posts/how-to-clean-up-aspnet-and-visual-studio-cache-and-temp-files-2oee", "title": "How to Clean Up ASP.NET and Visual Studio Cache and Temp Files", "summary": "ASP.NET and Visual Studio are powerful tools for web application development, but like any software,...", "date_modified": "2023-04-21T12:14:28.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Topics covered in this article: How it works today How it can be done in Angular v16 How to migrate to the new API How to test it Caveats How it wo...", "url": "https://playfulprogramming.com/posts/new-way-of-passing-data-to-dynamically-created-components-new-feature--27kf", "title": "New way of passing data to dynamically created components (New Feature 🎉)", "summary": "Topics covered in this article: How it works today How it can be done in Angular v16 How...", "date_modified": "2023-04-19T15:11:15.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Hey folks, Did you know that you can filter your data in react query? Noooo! Ok, it's time to learn it! To filter the data in your useQuery hook, y...", "url": "https://playfulprogramming.com/posts/react-query-filter-your-data-3cgl", "title": "React Query - Filter Your Data", "summary": "Hey folks, Did you know that you can filter your data in react query? Noooo! Ok, it's time to learn...", "date_modified": "2023-04-19T05:55:52.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I worked as a Full Stack Web Developer on what I realized it was to me a toxic workplace for software developers and I decided to quit. Today, exac...", "url": "https://playfulprogramming.com/posts/i-quit-from-a-toxic-software-development-workplace-4g3a", "title": "I QUIT from a TOXIC Software Development Workplace", "summary": "I worked as a Full Stack Web Developer on what I realized it was to me a toxic workplace for software...", "date_modified": "2023-04-17T10:49:06.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Wait, what? Slash commands are available on GitHub? I recorded a two minutes video to showcase how it works: Just open up a text editor, it can be ...", "url": "https://playfulprogramming.com/posts/github-slash-commands-3coh", "title": "GitHub Slash Commands!", "summary": "Wait, what? Slash commands are available on GitHub? I recorded a two minutes video to showcase how...", "date_modified": "2023-04-16T19:02:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When I started to play with templates and dynamic content in angular, I get surprised by multiple directives in angular to work with it ng-template...", "url": "https://playfulprogramming.com/posts/why-and-when-use-ng-template-ngcontent-and-ngcontainer-in-angular-2kho", "title": "Why and When Use Ng-template, NgContent, and NgContainer in Angular", "summary": "When I started to play with templates and dynamic content in angular, I get surprised by multiple...", "date_modified": "2023-04-13T16:48:41.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Every application should handle an authentication flow; in this article, you'll learn how to build an authentication flow in your React Application...", "url": "https://playfulprogramming.com/posts/react-query-authentication-flow-id2", "title": "React Query - Authentication Flow", "summary": "Every application should handle an authentication flow; in this article, you'll learn how to build an...", "date_modified": "2023-04-12T06:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "npm or yarn , what does this project use? Or maybe it's pnpm? Or Bun? Well, let's just use ! Is this a new package manager? No, no, don't worry ^^...", "url": "https://playfulprogramming.com/posts/never-use-the-wrong-package-manager-again-33ff", "title": "Never Use the WRONG Package Manager Again!", "summary": "npm or yarn, what does this project use? Or maybe it's pnpm? Or Bun? Well, let's just use ni! Is...", "date_modified": "2023-04-11T09:09:37.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Photo by Drew Beamer on Unsplash I started using Angular in 2017 when version 4 was released. And I have seen this framework growing since then. In...", "url": "https://playfulprogramming.com/posts/angular-the-framework-of-past-present-and-future-87d", "title": "Angular: The Framework of Past, Present, and Future", "summary": "Photo by Drew Beamer on Unsplash I started using Angular in 2017 when version 4 was released. And I...", "date_modified": "2023-04-06T22:34:23.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Hi folks, In release 1.32 , Playwright released a new cool feature for us, the UI Mode! This feature is still in beta yet, but you can use it by ad...", "url": "https://playfulprogramming.com/posts/playwright-ui-mode-20la", "title": "Playwright - UI Mode", "summary": "Hi folks, In release 1.32, Playwright released a new cool feature for us, the UI Mode! This feature...", "date_modified": "2023-04-06T06:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Pass router info to routed component inputs Topics covered in this article: How it works today How it will work in Angular v16 How to use it How to...", "url": "https://playfulprogramming.com/posts/bind-route-info-to-component-inputs-new-router-feature-35ll", "title": "Bind Route Info to Component Inputs (New Router feature)", "summary": "Pass router info to routed component inputs Topics covered in this...", "date_modified": "2023-04-05T15:41:34.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Hey Folks, In this post, you'll learn how to debug and check whatever happens in your React Query application. It's normal when you begin to learn ...", "url": "https://playfulprogramming.com/posts/react-query-devtools-f1b", "title": "React Query - DevTools", "summary": "Hey Folks, In this post, you'll learn how to debug and check whatever happens in your React Query...", "date_modified": "2023-04-05T06:30:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Stop! 🛑 You no longer need to open GitHub and search 🔎 for that issue you were assigned to. You can do it from Visual Studio Code! 📈 Two weeks a...", "url": "https://playfulprogramming.com/posts/manage-github-issues-from-visual-studio-code-3pop", "title": "Manage GitHub Issues from Visual Studio Code", "summary": "Stop! 🛑 You no longer need to open GitHub and search 🔎 for that issue you were assigned to. You can...", "date_modified": "2023-04-03T13:36:03.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In some applications, you need to create a full-text search to improve the search of data. In some scenarios, you build this using an API and leave...", "url": "https://playfulprogramming.com/posts/oramasearch-a-full-text-search-in-your-react-application-20k0", "title": "OramaSearch, a full-text search in your React application", "summary": "In some applications, you need to create a full-text search to improve the search of data. In some...", "date_modified": "2023-03-30T06:03:59.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hey folks, Today it is time to talk about two hooks exposed by react query: useIsFetching and useIsMutation. Each of these hooks could be used to u...", "url": "https://playfulprogramming.com/posts/react-query-useisfetching-useismutation-4dkb", "title": "React Query - useIsFetching & useIsMutation", "summary": "Hey folks, Today it is time to talk about two hooks exposed by react query: useIsFetching and...", "date_modified": "2023-03-29T05:49:40.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Doing Code Review 📖 on a GitHub Pull Request without leaving Visual Studio Code? Easy! 👇 Last week we learned how to create a PR from VSCode, tod...", "url": "https://playfulprogramming.com/posts/code-review-on-a-github-pull-request-from-visual-studio-code-328l", "title": "Code Review on a GitHub Pull Request from Visual Studio Code", "summary": "Doing Code Review 📖 on a GitHub Pull Request without leaving Visual Studio Code? Easy! 👇 Last week...", "date_modified": "2023-03-28T14:05:31.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Introduction A few months ago I started to talk about my journey as a Technical Instructor for LinkedIn Learning. My Journey as LinkedIn Technical ...", "url": "https://playfulprogramming.com/posts/my-linkedin-course-learning-github-by-numbers-237j", "title": "My LinkedIn Course \"Learning GitHub\" by numbers", "summary": "Introduction A few months ago I started to talk about my journey as a Technical Instructor...", "date_modified": "2023-03-27T07:10:34.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "You've spent hours in your favorite streamer's chat. You've gotten to see all the critical moments of their streams live, joined in on community jo...", "url": "https://playfulprogramming.com/posts/advice-for-new-twitch-streamers", "title": "Advice for New Twitch Streamers", "summary": "Twitch streaming can be fun and fulfilling, but has various roadblocks in the way for newcomers. Here's how you can overcome them and grow your Twitch channel.", "date_modified": "2023-03-25T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Recently, we rewrote our community blog for \"Playful Programming\" to use Astro, a static site generator framework . One of the fan-favorite feature...", "url": "https://playfulprogramming.com/posts/object-mutation", "title": "What is Object Mutation in JavaScript?", "summary": "When working with objects, you may hear the term \"mutation\". What is that? How does it work? How do let and const REALLY differ from each other? This and more:", "date_modified": "2023-03-25T19:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "It is quite common, especially in medium/large projects, to have to run multiple projects in debug mode at the same time.\nThe simplest example is a...", "url": "https://playfulprogramming.com/posts/debugging-multiple-net-projects-in-vs-code-28kn", "title": "Debugging Multiple .NET Projects in VS Code", "summary": "It is quite common, especially in medium/large projects, to have to run multiple projects in debug...", "date_modified": "2023-03-23T09:51:43.000Z", "author": { "name": "Emanuele Bartolesi", "url": "https://playfulprogramming.com/unicorns/kasuken" } }, { "content_html": "Did anyone say the word Productivity ? We're all used to the GitHub User Interface so we usually navigate to GitHub, then search for our repository...", "url": "https://playfulprogramming.com/posts/create-a-pull-request-from-visual-studio-code-18nh", "title": "Create a Pull Request from Visual Studio Code on GitHub", "summary": "Did anyone say the word Productivity? We're all used to the GitHub User Interface so we usually...", "date_modified": "2023-03-22T10:46:18.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hey Folks, It's time to talk about the second core concept in React Query, mutation. What is it? Mutations are actions that a user can do in your a...", "url": "https://playfulprogramming.com/posts/react-query-usemutation-2cmg", "title": "React Query - useMutation", "summary": "Hey Folks, It's time to talk about the second core concept in React Query, mutation. What is...", "date_modified": "2023-03-22T06:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "How to Fork a repository on GitHub is as easy as pressing a button, we take this for granted, but why is it required? Wouldn’t just cloning the rep...", "url": "https://playfulprogramming.com/posts/what-the-fork-are-you-doing-4n68", "title": "What the FORK are you doing?!", "summary": "How to Fork a repository on GitHub is as easy as pressing a button, we take this for granted, but why...", "date_modified": "2023-03-20T11:34:37.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In JavaScript, you're able to use a class as a template for your objects: class Car {\n wheels = 4;\n \n honk() {\n console.log(\"Beep b...", "url": "https://playfulprogramming.com/posts/javascript-bind-usage", "title": "Mastering JavaScript's `this` keyword using `bind`", "summary": "JavaScript's `this` keyword is imperative when dealing with classes in JavaScript, but can introduce some headaches. Let's solve that using the `bind` method", "date_modified": "2023-03-16T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hey Folks, It's time to take a journey on react query . Don't you know it? Perfect, you are in the right place 😁 Introduction What is React Query?...", "url": "https://playfulprogramming.com/posts/react-query-usequery-36i", "title": "React Query - useQuery", "summary": "Hey Folks, It's time to take a journey on react query. Don't you know it? Perfect, you are in the...", "date_modified": "2023-03-15T05:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Do you know Javascript? The language we all love has some weird and sometimes unexpected behaviours. It is a good idea to know them, mostly to avoi...", "url": "https://playfulprogramming.com/posts/do-you-know-javascript-1g0b", "title": "Do you know JavaScript?", "summary": "Do you know Javascript? The language we all love has some weird and sometimes unexpected...", "date_modified": "2023-03-14T12:45:42.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Free resources for developers, board games and chess... what do they have in common? You can find them in some GitHub repositories! Ok, but why? Gi...", "url": "https://playfulprogramming.com/posts/the-awesome-side-of-github-awesome-lists-2a5h", "title": "The Awesome Side of GitHub - Awesome Lists", "summary": "Free resources for developers, board games and chess... what do they have in common? You can find...", "date_modified": "2023-03-07T09:03:43.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "One of the rites of passage for a programming Twitch streamer is building your own chat bot. There's a plethora of tools and libraries available to...", "url": "https://playfulprogramming.com/posts/twitch-chatbot-in-bash", "title": "Deep Dive: Writing a Twitch Chat Bot in Bash", "summary": "bash? You mean the terminal where I do my git commands?", "date_modified": "2023-03-05T21:07:09.945Z", "author": { "name": "Sarah Schulte", "url": "https://playfulprogramming.com/unicorns/badcop" } }, { "content_html": "Amidst all the conversation around Signals the recent weeks, I have forgotten to talk about arguably the most important topic. Why should you care?...", "url": "https://playfulprogramming.com/posts/making-the-case-for-signals-in-javascript-4c7i", "title": "Making the Case for Signals in JavaScript", "summary": "Amidst all the conversation around Signals the recent weeks, I have forgotten to talk about arguably...", "date_modified": "2023-03-03T19:06:06.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Functions are an integral part of all JavaScript applications, React apps included. While I've written about how peculiar their usage can be, thank...", "url": "https://playfulprogramming.com/posts/functions-are-killing-react-performance", "title": "Functions Are Killing Your React App's Performance", "summary": "If you've ever built a production React application, you've likely ran into various performance problems along the way. Here are the most common and how to fix them.", "date_modified": "2023-03-01T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "How does the old Winston Churchill quote go? Those who fail to learn from history are doomed to repeat it Although a more ironic addendum might add...", "url": "https://playfulprogramming.com/posts/react-vs-signals-10-years-later-3k71", "title": "React vs Signals: 10 Years Later", "summary": "How does the old Winston Churchill quote go? Those who fail to learn from history are doomed to...", "date_modified": "2023-03-01T17:27:05.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "One of the processes I typically do in my daily work is interactive rebase. I commit a lot, and then before pushing the result, I try to make the h...", "url": "https://playfulprogramming.com/posts/why-i-love-gitlens-in-my-vscode-part-3-14fm", "title": "Why I love GitLens in my VsCode - Interactive Rebase", "summary": "One of the processes I typically do in my daily work is interactive rebase. I commit a lot, and then...", "date_modified": "2023-02-28T07:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "There has been some buzz recently in the frontend world around the term \"Signals\". In seemingly short order they seem to be everywhere showing up i...", "url": "https://playfulprogramming.com/posts/the-evolution-of-signals-in-javascript-8ob", "title": "The Evolution of Signals in JavaScript", "summary": "There has been some buzz recently in the frontend world around the term \"Signals\". In seemingly short...", "date_modified": "2023-02-27T19:05:20.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Photo by Clay Banks on Unsplash This is Learning was started in 2020 by @layzee. I presented how we built this community at the GDE summit in Berli...", "url": "https://playfulprogramming.com/posts/how-we-built-this-is-learning-community-g34", "title": "How we built This is Learning Community", "summary": "Photo by Clay Banks on Unsplash This is Learning was started in 2020 by @layzee. I presented how we...", "date_modified": "2023-02-27T00:15:51.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Hey folks, Today it's time to speak about how to parametrize tests with Playwright. There are cases where we want to test the same behaviour but wi...", "url": "https://playfulprogramming.com/posts/playwright-parametrize-tests-2p2", "title": "Playwright - Parametrize tests", "summary": "Hey folks, Today it's time to speak about how to parametrize tests with Playwright. There are cases...", "date_modified": "2023-02-23T07:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When you work on multiple projects, and this happens quite often if you're into Open Source, you will find yourself in a situation where you need t...", "url": "https://playfulprogramming.com/posts/manage-multiple-nodejs-versions-with-nvm-ap3", "title": "Manage multiple Node.js versions with NVM", "summary": "When you work on multiple projects, and this happens quite often if you're into Open Source, you will...", "date_modified": "2023-02-22T13:10:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When you work with git, you want to get info about commits and who changed the codebase quickly. With GitLens, you can get much info about your cur...", "url": "https://playfulprogramming.com/posts/why-i-love-gitlens-in-my-vscode-part-2-4i11", "title": "Why I love GitLens in my VsCode - Blame & Compare", "summary": "When you work with git, you want to get info about commits and who changed the codebase...", "date_modified": "2023-02-21T07:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "This article is very old!: HouseForm has been replaced with TanStack Form! To learn more, visit the link below. 🌐 TanStack homepage TL;DR? I made ...", "url": "https://playfulprogramming.com/posts/formik-works-great-heres-why-i-wrote-my-own", "title": "Formik Works Great; Here's Why I Wrote My Own", "summary": "Formik works incredibly, but I have some concerns with it. As a result, I ended up writing my own library called \"HouseForm\" to compete. Here's why.", "date_modified": "2023-02-18T04:45:30.247Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In this path with Playwright we spent a lot of time speaking about e2e tests and component testing in the frontend world. But now its time to spill...", "url": "https://playfulprogramming.com/posts/playwright-not-just-for-frontend-2cam", "title": "Playwright - Not just for Frontend", "summary": "In this path with Playwright we spent a lot of time speaking about e2e tests and component testing in...", "date_modified": "2023-02-16T07:00:38.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "In my daily routine, I work with git, and I suppose it's the same for you. I know all the standard commands to work with it in my terminal, and I l...", "url": "https://playfulprogramming.com/posts/why-i-love-gitlens-in-my-vscode-part-1-5cmp", "title": "Why I love GitLens in my VsCode - First Steps", "summary": "In my daily routine, I work with git, and I suppose it's the same for you. I know all the standard...", "date_modified": "2023-02-14T07:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Why do you need to move commits between branches? Let's imagine this scenario: You're so happy, the first building block of that new feature is rea...", "url": "https://playfulprogramming.com/posts/move-commits-between-branches-in-git-3-different-methods-22bb", "title": "Move Commits Between Branches in Git - 3 Different Methods 🍒", "summary": "Why do you need to move commits between branches? Let's imagine this scenario: You're so happy, the...", "date_modified": "2023-02-13T07:58:08.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "On a project I finally hit 100% Code Coverage 🎯 what could go wrong now? I tested ALL lines of my code, there are no bugs! Well... not really. If ...", "url": "https://playfulprogramming.com/posts/100-code-coverage-is-a-lie-1i1a", "title": "100% Code Coverage is a Lie 🎯", "summary": "On a project I finally hit 100% Code Coverage 🎯 what could go wrong now? I tested ALL lines of my...", "date_modified": "2023-02-09T18:20:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hey Folks, Today I'll speak about parallelism and sharding with Playwright, so don't waste time and jump into it. By default, Playwright runs your ...", "url": "https://playfulprogramming.com/posts/playwright-parallelism-and-sharding-58h9", "title": "Playwright - Parallelism and sharding", "summary": "Hey Folks, Today I'll speak about parallelism and sharding with Playwright, so don't waste time and...", "date_modified": "2023-02-09T07:00:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Cover art by DALL·E 2. It's been three years since Testing Angular routing components with the RouterTestingModule . This article revisits integrat...", "url": "https://playfulprogramming.com/posts/testing-angular-routing-components-with-routertestingharness-providelocationmocks-and-providerouter-oi8", "title": "Testing Angular routing components with RouterTestingHarness, provideLocationMocks, and provideRouter", "summary": "Learn how to implement integrated routing component tests with RouterTestingHarness, provideRouter, and provideLocationMocks.", "date_modified": "2023-02-08T23:54:59.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Recently I was looking into setting up templates for creating new projects. Obviously, a GitHub template was the first option, but I was not a huge...", "url": "https://playfulprogramming.com/posts/android-studio-project-templates", "title": "Creating project templates for Android Studio", "summary": "Showing how we can build a Android Studio plugin to provide our own project templates in the Android Studio new project wizard", "date_modified": "2023-02-05T14:17:00.247Z", "author": { "name": "Sasikanth Miriyampalli", "url": "https://playfulprogramming.com/unicorns/sasikanth" } }, { "content_html": "Hi there, Today I want to speak about Visual comparisons with Playwright. In some projects is crucial to respect the same size for the component on...", "url": "https://playfulprogramming.com/posts/playwright-visual-comparisons-gbc", "title": "Playwright - Visual Comparisons", "summary": "Hi there, Today I want to speak about Visual comparisons with Playwright. In some projects is...", "date_modified": "2023-02-02T07:51:48.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I get asked on every single video what is this autocomplete I’ve got on my terminal, and the answer is... drum rolls... fig.io ! Actually, it's mu...", "url": "https://playfulprogramming.com/posts/autocomplete-and-artificial-intelligence-in-your-terminal-27fc", "title": "Autocomplete and Artificial Intelligence in your Terminal", "summary": "I get asked on every single video what is this autocomplete I’ve got on my terminal, and the answer...", "date_modified": "2023-02-01T21:08:36.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When talking about unit testing, the first definition that comes into our head is to test the minor testable parts of an app, like functions, metho...", "url": "https://playfulprogramming.com/posts/common-pitfalls-in-angular-component-testing-3e1f", "title": "Common TestBed Pitfalls in Angular Component Testing", "summary": "When talking about unit testing, the first definition that comes into our head is to test the minor...", "date_modified": "2023-01-28T08:12:23.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "TL;DR: Nothing! Angular 15 simply doesn't ship anymore environment files by default.\nYou can still create them and configure their replacement base...", "url": "https://playfulprogramming.com/posts/angular-15-what-happened-to-environmentts-koh", "title": "Angular 15: what happened to environment.ts", "summary": "TL;DR: Nothing! Angular 15 simply doesn't ship anymore environment files by default. You...", "date_modified": "2023-01-27T19:21:20.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "Hi there, Today I want to talk about how to mock API with Playwright. To do that, I add a new feature to the usual example. When one of the players...", "url": "https://playfulprogramming.com/posts/playwright-mock-api-5em4", "title": "Playwright - Mock API", "summary": "Hi there, Today I want to talk about how to mock API with Playwright. To do that, I add a new...", "date_modified": "2023-01-26T07:32:48.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "While puzzling around with Nx' Webpack Module Federation support, I stumbled upon an issue that strangely looks like none cared about before.\nI'm t...", "url": "https://playfulprogramming.com/posts/nx-module-federation-bad-angular-routing-1ac9", "title": "Nx Module Federation bad Angular routing", "summary": "While puzzling around with Nx' Webpack Module Federation support, I stumbled upon an issue that...", "date_modified": "2023-01-22T12:37:33.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "I heard about \"Hey, GitHub\" (now called Copilot Voice) for the first time last November, in a very well presented panel by @blackgirlbytes, ( Rizèl...", "url": "https://playfulprogramming.com/posts/hey-github-using-copilot-with-your-voice-6ao", "title": "Copilot Voice - You can now TALK with GitHub CopilotX!", "summary": "I heard about \"Hey, GitHub\" (now called Copilot Voice) for the first time last November, in a very...", "date_modified": "2023-01-20T15:00:13.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hi there, Today I want to speak about integrating Playwright in your GitHub action CI. So don't waste time and let's start. To start, you have to c...", "url": "https://playfulprogramming.com/posts/playwright-ci-59m2", "title": "Playwright - CI", "summary": "Hi there, Today I want to speak about integrating Playwright in your GitHub action CI. So don't waste...", "date_modified": "2023-01-19T09:00:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Yes, that’s normal! Why? Because of how Angular does change detection under the hood! To better understand how the async pipe works, let’s create o...", "url": "https://playfulprogramming.com/posts/async-pipe-is-not-pure", "title": "Async pipe is not pure 🤯", "summary": "Learn how angular's async pipe is not pure and how that's not a problem, by building async pipe from scratch.", "date_modified": "2023-01-18T18:00:00.284Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajahollari" } }, { "content_html": "Yes, that’s normal! Why? Because of how Angular does change detection under the hood! To better understand how the async pipe works, let’s create o...", "url": "https://playfulprogramming.com/posts/async-pipe-is-not-pure-5h6p", "title": "Async pipe is not pure 🤯", "summary": "Yes, that’s normal! Why? Because of how Angular does change detection under the hood! To better...", "date_modified": "2023-01-16T15:48:11.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "If you read my last post introducing UUIDs , you'll remember that I said: UUIDv2 is weird . After this, I left a very short (one or two sentences) ...", "url": "https://playfulprogramming.com/posts/what-happened-to-uuid-v2", "title": "What Happened to UUIDv2?", "summary": "You may have heard that \"UUIDv2 is bad\". Maybe you've never even heard of them and thought UUIDs went from v1 to v3. Why is that? What did UUIDv2 do wrong?", "date_modified": "2023-01-15T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Oftentimes, in computer programming, you'll find yourself needing a way to give a unique identifier to a digital asset. For example, items such as ...", "url": "https://playfulprogramming.com/posts/what-are-uuids", "title": "What are UUIDs?", "summary": "When discussing ID generation in software, you may have heard of a UUID. What are they? Are they useful? What are the different versions? Let's explore that.", "date_modified": "2023-01-14T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "I'm quite sure all of these happened to you at least once: You committed a change with the wrong message (typo, wrong tense, etc.) You committed a ...", "url": "https://playfulprogramming.com/posts/4-ways-to-undo-a-git-commit-amend-vs-reset-5dem", "title": "⏪ 4 Ways to Undo a Git Commit - Amend vs Reset", "summary": "I'm quite sure all of these happened to you at least once: You committed a change with the wrong...", "date_modified": "2023-01-12T13:21:45.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In previous article we analyzed a generic workflow for the creation of a directive capable of adding a native checkbox element to a basic form in p...", "url": "https://playfulprogramming.com/posts/material-forms-mat-checkbox-disabling-controls-2jc6", "title": "Material forms: mat-checkbox disabling controls", "summary": "In previous article we analyzed a generic workflow for the creation of a directive capable of adding...", "date_modified": "2023-01-12T10:55:51.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "Hi there, Today I'll speak about a beta feature in Playwright: Components. The team is building a new feature to write component tests with Playwri...", "url": "https://playfulprogramming.com/posts/playwright-components-testing-enn", "title": "Playwright - Components testing", "summary": "Hi there, Today I'll speak about a beta feature in Playwright: Components. The team is building a...", "date_modified": "2023-01-12T09:00:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "There's a plethora of triggers you can use to run a GitHub Action. You can run it on a schedule, on a push or a pull request, or even on a release....", "url": "https://playfulprogramming.com/posts/manually-trigger-a-github-action-with-workflowdispatch-3mga", "title": "Manually Trigger a GitHub Action with workflow_dispatch", "summary": "There's a plethora of triggers you can use to run a GitHub Action. You can run it on a schedule, on a...", "date_modified": "2023-01-10T19:16:22.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Intro During my daily work, sometimes I have to switch between different projects: backend frontend, nodejs, react, angular etc. etc. I used to thi...", "url": "https://playfulprogramming.com/posts/visual-studio-code-tips-tricks-profile-4e0l", "title": "Visual Studio Code - Tips & Tricks - Profile", "summary": "Intro During my daily work, sometimes I have to switch between different projects: backend...", "date_modified": "2023-01-10T09:00:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "##How to write a directive to add it.\nAnd why you shouldn't. If as a coder you never found yourself having wasted an unjustifiable amount of time t...", "url": "https://playfulprogramming.com/posts/angular-forms-checkbox-disabling-controls-29np", "title": "Angular forms: checkbox disabling controls", "summary": "How to write a directive to add it. And why you shouldn't. If as a coder you...", "date_modified": "2023-01-09T10:24:47.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "In the previous article, we saw how to set up a pipeline with AWS Amplify, but as long as things are simple everything works.\nLet's complicate the ...", "url": "https://playfulprogramming.com/posts/aws-amplify-lets-add-some-unit-tests-into-our-pipeline-5f7l", "title": "AWS Amplify: Let's add some unit tests into our pipeline", "summary": "In the previous article, we saw how to set up a pipeline with AWS Amplify, but as long as things are...", "date_modified": "2023-01-06T13:18:11.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "TL;DR; Ninja is available directly in the windows images Use to set up the MSVC environment for building\nwith Ninja. You need nested quotes for CX...", "url": "https://playfulprogramming.com/posts/a-linux-c-programmers-adventure-in", "title": "A Linux C++ programmers adventure in improving Windows CI on GitHub actions", "summary": "TL;DR; Ninja is available directly in the windows images Use to set up the MSVC environment for building\nwith Ninja. You need nested quotes for CX...", "date_modified": "2023-01-06T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "I've had a lot of fun over the years writing TypeScript, and I've delved deep into the cursed amazing land of generics. This post is going to be a ...", "url": "https://playfulprogramming.com/posts/fun-with-types", "title": "Fun with Types", "summary": "Making hilarious things with no emitted code.", "date_modified": "2023-01-05T20:35:30.000Z", "author": { "name": "Maisy Dinosaur", "url": "https://playfulprogramming.com/unicorns/maisydino" } }, { "content_html": "Green squares on GitHub aren't just a mere activity indicator. Move a step back and look at the bigger picture: they tell a story, your story. This...", "url": "https://playfulprogramming.com/posts/my-github-contribution-history-2014-2023-1ebh", "title": "My GitHub Contribution History (2014-2023)", "summary": "Green squares on GitHub aren't just a mere activity indicator. Move a step back and look at the...", "date_modified": "2023-01-05T16:01:05.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hey there, Today I want to speak about Fixtures, a vital friend if you're going to work with Playwright and you want to share data between your tes...", "url": "https://playfulprogramming.com/posts/playwright-fixtures-4cj1", "title": "Playwright - Fixtures", "summary": "Hey there, Today I want to speak about Fixtures, a vital friend if you're going to work with...", "date_modified": "2023-01-05T09:00:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "GitHub Actions can bring your project to life, for real! If you never used them, this video tutorial will help you to get started by showing the bu...", "url": "https://playfulprogramming.com/posts/running-automated-tests-with-github-actions-41e3", "title": "Running Automated Tests with GitHub Actions", "summary": "GitHub Actions can bring your project to life, for real! If you never used them, this video tutorial...", "date_modified": "2023-01-03T15:23:55.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "This article is an advanced look at how Angular works under-the-hood. The contents within may not be clear if you're not already fairly familiar wi...", "url": "https://playfulprogramming.com/posts/angular-internals-zonejs", "title": "Angular Internals: How Reactivity Works with Zone.js", "summary": "Reactivity is core to JavaScript frameworks; changing data should cause a re-render. How does this work in Angular? Let's dive into the Angular source code to see.", "date_modified": "2023-01-02T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In the first two articles of this series we learned how AnimationRendererFactory generates its renderers.\nNow we're gonna look at what \"animating r...", "url": "https://playfulprogramming.com/posts/animationrenderer-listening-and-playing-4i3a", "title": "AnimationRenderer: listening and playing", "summary": "In the first two articles of this series we learned how AnimationRendererFactory generates its...", "date_modified": "2023-01-02T10:59:34.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "The company I work for is an AWS partner and it is natural that many of the applications we build are based on the services offered by Amazon. We'r...", "url": "https://playfulprogramming.com/posts/cicd-pipelines-with-aws-amplify-5a1b", "title": "CI/CD pipelines with AWS Amplify", "summary": "The company I work for is an AWS partner and it is natural that many of the applications we build are...", "date_modified": "2022-12-30T09:54:59.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "The wonderful thing about glimpsing into the future is that the path is never completely clear. We can look at trends, and look at innovations and ...", "url": "https://playfulprogramming.com/posts/javascript-frameworks-heading-into-2023-nln", "title": "JavaScript Frameworks - Heading into 2023", "summary": "The wonderful thing about glimpsing into the future is that the path is never completely clear. We...", "date_modified": "2022-12-29T20:09:40.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Hi there, today you will learn how to generate the code for your tests. First of all, you have to run the application, so type in your terminal npm...", "url": "https://playfulprogramming.com/posts/playwright-generate-tests-code-n2p", "title": "Playwright - Generate tests' code", "summary": "Hi there, today you will learn how to generate the code for your tests. First of all, you have to...", "date_modified": "2022-12-29T09:00:46.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "One of the pain points that I am sure some of us have come across when using Firebase projects that have been generated with Firebase CLI is code s...", "url": "https://playfulprogramming.com/posts/supercharge-your-firebase-app-development-using-nx-301n", "title": "Supercharge your Firebase App Development using NX", "summary": "One of the pain points that I am sure some of us have come across when using Firebase projects that...", "date_modified": "2022-12-28T08:49:07.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "This post keeps digging into AnimationRendererFactory creation routine, with a focus on triggers registering logic. AnimationRenderer, the real on...", "url": "https://playfulprogramming.com/posts/angular-registering-animation-triggers-5gpg", "title": "Angular registering animation triggers", "summary": "This post keeps digging into AnimationRendererFactory creation routine, with a focus on triggers...", "date_modified": "2022-12-27T11:11:48.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "A few weeks ago Vercel released Edge Config , a new feature available to everyone so I tried it because I'm curious. I developed an app with Qwik t...", "url": "https://playfulprogramming.com/posts/who-is-the-goat-vercel-edge-config-stores-my-answer-5c6m", "title": "Who is the GOAT? 🔮 Vercel Edge Config stores my answer", "summary": "A few weeks ago Vercel released Edge Config, a new feature available to everyone so I tried it...", "date_modified": "2022-12-23T10:28:10.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Debug your tests One of the most popular things done by developers is to debug the code using console.log . But today I want to show you how to deb...", "url": "https://playfulprogramming.com/posts/playwright-debug-your-tests-1jeh", "title": "Playwright - debug your tests", "summary": "Debug your tests One of the most popular things done by developers is to debug the code...", "date_modified": "2022-12-21T09:00:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "This article is intended to be the beginning of a short series about Angular transition animations mechanism source code, a niche in Angular codeba...", "url": "https://playfulprogramming.com/posts/animationfactory-how-angular-creates-animation-renderers-1m6b", "title": "AnimationFactory: how Angular creates animation renderers", "summary": "This article is intended to be the beginning of a short series about Angular transition animations...", "date_modified": "2022-12-20T11:08:14.000Z", "author": { "name": "Gianpiero Errigo", "url": "https://playfulprogramming.com/unicorns/gianpiero_errigo" } }, { "content_html": "GitHub Actions are so cool, you can automate your workflow for free and they’re really easy to set up. However, since the actions run on GitHub, ev...", "url": "https://playfulprogramming.com/posts/how-to-run-a-github-action-in-local-live-demo-4116", "title": "How to run a GitHub Action in local - LIVE DEMO", "summary": "GitHub Actions are so cool, you can automate your workflow for free and they’re really easy to set...", "date_modified": "2022-12-18T18:26:08.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Today I'll show you step by step how easy it is to deploy a Fastify server on Azure Function. Steps to create a Fastify server Project folder creat...", "url": "https://playfulprogramming.com/posts/fastify-on-azure-web-app-is-super-straightforward-1de3", "title": "Fastify on Azure Web App is super straightforward", "summary": "Today I'll show you step by step how easy it is to deploy a Fastify server on Azure Function. ...", "date_modified": "2022-12-17T13:16:52.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Photo by Mantas Hesthaven on Unsplash This is going to be challenging to write. This year felt like my last 10 years combined. If you follow me on ...", "url": "https://playfulprogramming.com/posts/my-year-in-review-341d", "title": "My year in review", "summary": "Photo by Mantas Hesthaven on Unsplash This is going to be challenging to write. This year felt like...", "date_modified": "2022-12-14T23:02:02.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "What are you going to learn in this post? In this post, you will learn how to write tests with Playwright, using assertions, locators and something...", "url": "https://playfulprogramming.com/posts/playwright-how-to-write-tests-1m5d", "title": "Playwright - How to write tests", "summary": "What are you going to learn in this post? In this post, you will learn how to write tests...", "date_modified": "2022-12-14T09:30:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When Merging a Pull Request on GitHub, you mainly have three options, with a merge commit, squash or rebase. Is there anything wrong in always doin...", "url": "https://playfulprogramming.com/posts/how-to-close-a-pull-request-merge-commit-vs-squash-vs-rebase-on-github-14pi", "title": "How to Close a Pull Request - Merge Commit vs Squash vs Rebase on GitHub", "summary": "When Merging a Pull Request on GitHub, you mainly have three options, with a merge commit, squash or...", "date_modified": "2022-12-12T19:40:44.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Today I did some experiments with Python, I decided to do this activity with GitHub Codespaces without installing Python on my machine. Steps GitHu...", "url": "https://playfulprogramming.com/posts/vscode-github-codespaces-for-my-python-playground-9ih", "title": "VSCode & GitHub Codespaces for my Python playground", "summary": "Today I did some experiments with Python, I decided to do this activity with GitHub Codespaces...", "date_modified": "2022-12-10T19:33:34.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Everyone is going crazy for ChatGPT so I wanted to give it a try myself. I'm not the best person to talk about AI or how it works under the hood, s...", "url": "https://playfulprogramming.com/posts/chat-gpt-wrote-this-the-power-of-open-source-how-your-contributions-can-make-a-difference-4clk", "title": "Chat GPT wrote THIS | The Power of Open Source: How Your Contributions Can Make a Difference", "summary": "Everyone is going crazy for ChatGPT so I wanted to give it a try myself. I'm not the best person to...", "date_modified": "2022-12-08T15:42:11.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In the last period, in the frontend ecosystem, a new e2e tool has come up and it has started to become famous; its name is Playwright. In this shor...", "url": "https://playfulprogramming.com/posts/playwright-lets-start-2mdj", "title": "Playwright - Let's start", "summary": "In the last period, in the frontend ecosystem, a new e2e tool has come up and it has started to...", "date_modified": "2022-12-07T09:00:44.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi 👋 today I want to share with you 5 extensions that are vital in my daily job. I don't like too complex configurations, I like the idea of ​​bei...", "url": "https://playfulprogramming.com/posts/vscode-my-5-vital-extensions-to-be-productive-11db", "title": "VSCode: my 5 vital extensions to be productive", "summary": "Hi 👋 today I want to share with you 5 extensions that are vital in my daily job. I don't like too...", "date_modified": "2022-12-03T15:55:13.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "If you're familiar with my content, you know I often talk about how to find new Open Source projects and repositories that are waiting our contribu...", "url": "https://playfulprogramming.com/posts/4-beginner-friendly-open-source-projects-26g3", "title": "4 Beginner Friendly Open Source Projects", "summary": "If you're familiar with my content, you know I often talk about how to find new Open Source projects...", "date_modified": "2022-12-01T15:28:20.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Today I was talking with my friend Leifer , and he asked me some about Functional Guards in Angular (14/15) with some questions. How functional Rou...", "url": "https://playfulprogramming.com/posts/how-to-use-functional-router-guards-in-angular-23kf", "title": "How To Use Functional Router Guards in Angular", "summary": "Today I was talking with my friend Leifer, and he asked me some about Functional Guards in Angular...", "date_modified": "2022-11-30T07:20:24.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Preface Is your team aware of the relations between your modules? Is a team member able to understand what is affected by the changes in a new feat...", "url": "https://playfulprogramming.com/posts/be-awerness-in-your-codebase-with-nx-1d3j", "title": "Be aware of your codebase with Nx", "summary": "Preface Is your team aware of the relations between your modules? Is a team member able to...", "date_modified": "2022-11-29T09:00:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I recently discovered the Visual Studio Code - Dev Containers feature and I thought to share with you it because in my opinion, it's so cool. I'm c...", "url": "https://playfulprogramming.com/posts/tidy-up-your-machine-with-visual-studio-code-dev-containers-256n", "title": "Tidy up your machine with Visual Studio Code Dev Containers", "summary": "I recently discovered the Visual Studio Code - Dev Containers feature and I thought to share with you...", "date_modified": "2022-11-26T19:35:50.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Today I launched my Discord server to talk about Open Source and Web Development, feel free to join: https://discord.gg/bqwyEa6We6 Merge conflicts ...", "url": "https://playfulprogramming.com/posts/resolving-merge-conflicts-with-visual-studio-code-1mn1", "title": "Resolving Merge Conflicts with Visual Studio Code", "summary": "Today I launched my Discord server to talk about Open Source and Web Development, feel free to join:...", "date_modified": "2022-11-22T17:45:40.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Cover photo by Karen Vardazaryan on Unsplash. Sequences A sequence is a YAML node that contains an ordered list of zero to n YAML nodes (mappings, ...", "url": "https://playfulprogramming.com/posts/yaml-collections-sequences-and-mappings-4meb", "title": "YAML collections: Sequences and mappings", "summary": "A quick overview of YAML sequences (arrays/lists) and mappings (hash maps/associative arrays).", "date_modified": "2022-11-21T17:14:55.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "After two days of conference I'm waiting for the flight to go home and I thought to share with you my vibes and thoughts. They have been intense da...", "url": "https://playfulprogramming.com/posts/conferences-good-vibes-3o64", "title": "Conferences = Good vibes", "summary": "After two days of conference I'm waiting for the flight to go home and I thought to share with you my...", "date_modified": "2022-11-19T14:29:12.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "I'll share the link later, but let me spend a few words on how I got to this point first! This isn't a technical article, but I hope it can inspire...", "url": "https://playfulprogramming.com/posts/from-being-super-shy-to-my-first-live-coding-session-56oo", "title": "🔴 From being super shy, to my first LIVE Coding session", "summary": "I'll share the link later, but let me spend a few words on how I got to this point first! This isn't...", "date_modified": "2022-11-12T15:17:33.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Contributing to Open Source projects that are hosted on GitHub has a barrier: git . Some fresh developers might already be confident in the languag...", "url": "https://playfulprogramming.com/posts/use-github-desktop-to-open-your-first-pull-request-5b6l", "title": "Use GitHub Desktop to open your first Pull Request", "summary": "Contributing to Open Source projects that are hosted on GitHub has a barrier: git. Some fresh...", "date_modified": "2022-11-10T17:38:51.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Recently I'm developing an Angular application, but with the increasing complexity and pressing releases, the need to perform rapid deploys is huge...", "url": "https://playfulprogramming.com/posts/feature-flags-with-azure-and-angular-22jd", "title": "Feature Flags with Azure and Angular", "summary": "Recently I'm developing an Angular application, but with the increasing complexity and pressing...", "date_modified": "2022-11-10T12:39:27.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "Hi folks, today I'm going to speak about another cool VsCode Extension. In many projects, I love using GitHub Actions as CI/CD tool, but switching ...", "url": "https://playfulprogramming.com/posts/working-with-github-from-your-best-editor-2dhh", "title": "Working with GitHub Actions from your best editor", "summary": "Hi folks, today I'm going to speak about another cool VsCode Extension. In many projects, I love...", "date_modified": "2022-11-08T09:00:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "It's been a while since I wrote a piece about a SolidJS technology innovation. It's been two years now since we added Suspense on the server with S...", "url": "https://playfulprogramming.com/posts/client-side-routing-without-the-javascript-3k1i", "title": "Client-side Routing without the JavaScript", "summary": "It's been a while since I wrote a piece about a SolidJS technology innovation. It's been two years...", "date_modified": "2022-11-07T16:17:37.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Working as a consultant I often carry out refactoring activities. I want to talk about that in this article. Refactoring Performing this type of ac...", "url": "https://playfulprogramming.com/posts/lets-keep-it-green-4g9h", "title": "Let's keep it green ✅", "summary": "Working as a consultant I often carry out refactoring activities. I want to talk about that in this...", "date_modified": "2022-11-04T11:07:18.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "In my daily work routine, many times I have to switch from VsCode and Github to create a PR, review a PR, check a GitHub Action, and more. Therefor...", "url": "https://playfulprogramming.com/posts/working-with-github-from-your-best-editor-4cbc", "title": "Working with Github from your best editor", "summary": "In my daily work routine, many times I have to switch from VsCode and Github to create a PR, review a...", "date_modified": "2022-11-03T10:00:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Since version 14, we can play with Standalone Components as an easy way to build module-less applications. One benefit of Standalone components is ...", "url": "https://playfulprogramming.com/posts/head-start-with-angular-14-and-standalone-components-5ffl", "title": "Head Start With Standalone Components In Angular", "summary": "Since version 14, we can play with Standalone Components as an easy way to build module-less...", "date_modified": "2022-11-03T07:32:11.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Hello everyone, Leonardo here! Today we talk about GitHub and some cool features it offers to improve the context and the communication between dev...", "url": "https://playfulprogramming.com/posts/some-cool-github-features-to-enhance-your-development-experience-2fj9", "title": "Some cool GitHub features to enhance your development experience", "summary": "Hello everyone, Leonardo here! Today we talk about GitHub and some cool features it offers to...", "date_modified": "2022-11-01T13:21:10.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Preface Many developers don't know very well which is the line between Javascript and Typescript. Probably, many of them waste much time understand...", "url": "https://playfulprogramming.com/posts/validate-your-data-with-zod-3i36", "title": "Validate your data with Zod", "summary": "Preface Many developers don't know very well which is the line between Javascript and...", "date_modified": "2022-10-31T10:00:44.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I recently gave a talk on testing and I focused the speech on the life cycle of a successful software. The participants talked to me and pointed ou...", "url": "https://playfulprogramming.com/posts/in-which-phase-is-your-software-5253", "title": "In which phase is your software?", "summary": "I recently gave a talk on testing and I focused the speech on the life cycle of a successful...", "date_modified": "2022-10-28T16:18:26.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "When we build an Angular application with multiple modules in a large app, the main script file becomes a giant monster. One alternative to improve...", "url": "https://playfulprogramming.com/posts/working-with-lazy-loading-modules-and-preload-routing-strategies-in-angular-5385", "title": "Working With Lazy Loading Modules and Preload Routing Strategies In Angular", "summary": "When we build an Angular application with multiple modules in a large app, the main script file...", "date_modified": "2022-10-26T12:50:46.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Setting up an Alias Repeating the same git commands over and over again can be such a waste of time! And some of the most powerful ones are usually...", "url": "https://playfulprogramming.com/posts/learn-git-alias-and-boost-your-productivity-16od", "title": "🕵️‍♂️ Learn git alias and boost your productivity", "summary": "Setting up an Alias Repeating the same git commands over and over again can be such a...", "date_modified": "2022-10-22T18:32:58.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Ok, it's not a super secret feature, but I noticed some of my colleagues and friends do not use it at all while I think it's quite handy, so I'm sh...", "url": "https://playfulprogramming.com/posts/open-visual-studio-code-from-the-terminal-1obk", "title": "Open Visual Studio Code from the Terminal", "summary": "Ok, it's not a super secret feature, but I noticed some of my colleagues and friends do not use it at...", "date_modified": "2022-10-14T17:30:08.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Do you want to add a new feature on Visual Studio Code, or fix an existing bug? Here’s how to do that! Let's see together how to move the first ste...", "url": "https://playfulprogramming.com/posts/how-to-contribute-to-visual-studio-code-on-github-4b6c", "title": "How to contribute to Visual Studio Code on GitHub", "summary": "Do you want to add a new feature on Visual Studio Code, or fix an existing bug? Here’s how to do...", "date_modified": "2022-10-12T16:04:30.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "It's been some time since I started my extra-work FREE mentoring path through the Mentorcruise platform. I decided to follow the willing students w...", "url": "https://playfulprogramming.com/posts/the-power-of-mentoring-1klj", "title": "The Power of Mentoring", "summary": "It's been some time since I started my extra-work FREE mentoring path through the Mentorcruise...", "date_modified": "2022-10-12T16:02:35.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "What is a Code Smell? Let me provide you with my personal definition and some examples to get a better picture of what we’re talking about. If you ...", "url": "https://playfulprogramming.com/posts/how-to-find-code-smells-with-examples-ob0", "title": "How to find Code Smells - with examples", "summary": "What is a Code Smell? Let me provide you with my personal definition and some examples to...", "date_modified": "2022-10-10T07:00:56.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Dimensions are weird. While most web apps seem to focus on the x and y axis, representing a 2D plane that the user interacts with, there's actually a", "url": "https://playfulprogramming.com/posts/css-stacking-context", "title": "Why Z-Index Isn’t Working: CSS Stacking Contexts", "summary": "z-index is a CSS property that helps control the z-axis height of an element, but it often doesn't seem to work. Why is that? How does it REALLY work?", "date_modified": "2022-10-06T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "One of the major blockers for newcomers to Open Source is that unpleasant impression of not feeling ready yet. But the thing is, how does one feel ...", "url": "https://playfulprogramming.com/posts/not-feeling-ready-for-open-source-260c", "title": "Not feeling ready for Open Source?", "summary": "One of the major blockers for newcomers to Open Source is that unpleasant impression of not feeling...", "date_modified": "2022-10-05T05:52:32.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hacktoberfest is starting tomorrow!! Are you ready?? In case you're quite new to git, I will try to explain in a simple way how to use the basic co...", "url": "https://playfulprogramming.com/posts/51-basic-git-commands-you-need-for-hacktoberfest-2022-glj", "title": "5+1 Basic GIT Commands you Need for Hacktoberfest 2022", "summary": "Hacktoberfest is starting tomorrow!! Are you ready?? In case you're quite new to git, I will try to...", "date_modified": "2022-09-30T15:14:50.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "“You should never use function calls on Angular templates!” — That’s what you will see all over the internet! And I’m here to prove to you that tha...", "url": "https://playfulprogramming.com/posts/its-ok-to-use-function-calls-in-angular-templates-4029", "title": "It’s ok to use function calls in Angular templates!", "summary": "“You should never use function calls on Angular templates!” — That’s what you will see all over the...", "date_modified": "2022-09-28T15:39:15.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Hacktoberfest will start in a few days, are you ready?? Let me check my gear... git updated to the latest version, RGB ram is shining in my desktop...", "url": "https://playfulprogramming.com/posts/how-to-find-a-repository-for-hacktoberfest-2022-138o", "title": "How to find a repository for Hacktoberfest 2022", "summary": "Hacktoberfest will start in a few days, are you ready?? Let me check my gear... git updated to the...", "date_modified": "2022-09-27T14:33:01.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "When we need to have different versions and use cases and make it flexible to the changes, however, some stuff becomes a bit complex. For example, ...", "url": "https://playfulprogramming.com/posts/compound-components-in-angular-l7m", "title": "How to Build Compound Components in Angular", "summary": "When we need to have different versions and use cases and make it flexible to the changes, however,...", "date_modified": "2022-09-27T12:11:39.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "The introduction of dynamic islands in iPhone 14 piqued the interest of many designers and developers - coming up with creative ways to utilize the...", "url": "https://playfulprogramming.com/posts/dynamic-island-animations-with-popmotion-in-angular-3pgb", "title": "Dynamic Island Animations with Popmotion in Angular", "summary": "The introduction of dynamic islands in iPhone 14 piqued the interest of many designers and developers...", "date_modified": "2022-09-26T06:03:41.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "Classes and methods might get really long, making you lose context of what the code is about. Visual Studio Code recently added a new cool feature ...", "url": "https://playfulprogramming.com/posts/sticky-scroll-in-vscode-44h2", "title": "🧲 Sticky Scroll in vscode", "summary": "Classes and methods might get really long, making you lose context of what the code is about. Visual...", "date_modified": "2022-09-24T10:47:03.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "September is almost over and Hacktoberfest is to begin soon! But what is Hacktoberfest ? It is not an Anonymous hacking anniversary, but a global e...", "url": "https://playfulprogramming.com/posts/hacktoberfest-2022-is-almost-there-get-ready-4ifb", "title": "Hacktoberfest 2022 is almost there! Get ready!", "summary": "September is almost over and Hacktoberfest is to begin soon! But what is Hacktoberfest? It is not an...", "date_modified": "2022-09-21T14:18:43.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Is the title a clickbait? Nope, let me explain. Learning new stuff is amazing and courses and tutorials are a great help, until, you realize you’re...", "url": "https://playfulprogramming.com/posts/tutorials-are-wrong-255c", "title": "Tutorials are Wrong", "summary": "Is the title a clickbait? Nope, let me explain. Learning new stuff is amazing and courses and...", "date_modified": "2022-09-17T12:01:11.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Working with Angular has its gotchas, but what makes it really a joy to start off, is its language service. What’s a language service? A language s...", "url": "https://playfulprogramming.com/posts/introduction-to-angular-language-service-1dam", "title": "Introduction to Angular Language Service", "summary": "Working with Angular has its gotchas, but what makes it really a joy to start off, is its language...", "date_modified": "2022-09-16T16:12:28.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "A few weeks ago I decided to create an e-commerce storefront based on real GraphQL APIs to sell items.\nBefore jumping into the code I decided to de...", "url": "https://playfulprogramming.com/posts/qwik-web-revolution-by-default-4omp", "title": "Qwik: web revolution by default", "summary": "A few weeks ago I decided to create an e-commerce storefront based on real GraphQL APIs to sell...", "date_modified": "2022-09-12T09:57:11.000Z", "author": { "name": "Giorgio Boa", "url": "https://playfulprogramming.com/unicorns/gioboa" } }, { "content_html": "What if I tell you that you get paid in real money - with Open Source? Wait , that's not a scam or a get-rich-quick article. Let me explain. We all...", "url": "https://playfulprogramming.com/posts/get-paid-while-contributing-to-open-source-1l11", "title": "💰 Get paid while contributing to Open Source", "summary": "What if I tell you that you get paid in real money - with Open Source? Wait, that's not a scam or a...", "date_modified": "2022-09-11T12:13:56.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "You can find a video version of this article on my YouTube channel . Did you know that you can have a huge impact in contributing to Open Source, e...", "url": "https://playfulprogramming.com/posts/open-source-is-not-only-writing-code-2hpj", "title": "Open Source is not only writing code 🙅‍♂️🧑‍💻", "summary": "You can find a video version of this article on my YouTube channel. Did you know that you can...", "date_modified": "2022-08-31T15:32:02.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Cover photo by Clay Banks on Unsplash. A standalone component is independent from an Angular module. It directly references the declarables (compon...", "url": "https://playfulprogramming.com/posts/the-local-component-scope-of-standalone-angular-components-3g60", "title": "The local component scope of standalone Angular components", "summary": "The local component scope of a standalone Angular component is managed by listing declarable dependencies in the Component.imports metadata option.", "date_modified": "2022-08-31T07:03:12.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Laura Cleffman on Unsplash. It's been 4 years since I started looking into standalone Angular applications, that is Angular applicat...", "url": "https://playfulprogramming.com/posts/angular-revisited-standalone-angular-applications-the-replacement-for-ngmodules-238m", "title": "Angular Revisited: Standalone Angular applications, the replacement for NgModules", "summary": "The future is now, old man. Standalone Angular applications are now a viable alternative to classic NgModule-based Angular applications.", "date_modified": "2022-08-30T14:00:17.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Maybe you've heard the term Resumability thrown around recently. Maybe someone gushing over Miško Hevery's new Qwik framework. Maybe you've heard m...", "url": "https://playfulprogramming.com/posts/resumability-wtf-2gcm", "title": "Resumability, WTF?", "summary": "Maybe you've heard the term Resumability thrown around recently. Maybe someone gushing over Miško...", "date_modified": "2022-08-23T20:22:00.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "You can find a video version of this article on my YouTube Channel . Introduction Opensource Guide Known projects Good First Issue & Help Wanted Ho...", "url": "https://playfulprogramming.com/posts/how-to-find-an-open-source-project-to-contribute-to-3093", "title": "How to find 🔎 an Open Source project to contribute to", "summary": "You can find a video version of this article on my YouTube Channel. Introduction Opensource...", "date_modified": "2022-08-23T14:56:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "In recent years, we've seen frameworks like React and Vue develop utilities to share code that uses lifecycle methods. What does that look like? I ...", "url": "https://playfulprogramming.com/posts/angular-extend-class", "title": "Sharing Lifecycle Methods Between Angular Components", "summary": "Sharing code between components in Angular is TOUGH. Here's one way you can do so by utilizing base components that you extend - and why you shouldn't use them.", "date_modified": "2022-08-20T21:52:59.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Please note: this guide specifically covers the Java Edition version of Minecraft. Bedrock Edition does not use data packs, but provides customizat...", "url": "https://playfulprogramming.com/posts/minecraft-data-packs-scoreboards", "title": "Minecraft Data Pack Programming: Scoreboard Usage", "summary": "Learn data pack development in Minecraft - using player scoreboards, variables, and operations!", "date_modified": "2022-08-20T19:10:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "You can find a video version of this article on my YouTube Channel . Intro {#intro} Today we're building together a weighted random generator. You ...", "url": "https://playfulprogramming.com/posts/weighted-random-generator-in-typescript-with-test-driven-development--hlb", "title": "Weighted 🏋️ Random generator in Typescript (with Test Driven Development 🧪)", "summary": "You can find a video version of this article on my YouTube Channel. Intro Today we're...", "date_modified": "2022-08-18T10:55:13.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "This post was first posted in my newsletter All Things Typescript focused on teaching developers how to build better mental models around Typescrip...", "url": "https://playfulprogramming.com/posts/understanding-excess-property-checking-in-typescript-ook", "title": "Understanding Excess Property Checking in Typescript", "summary": "This post was first posted in my newsletter All Things Typescript focused on teaching developers how...", "date_modified": "2022-08-17T09:06:00.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Intro Let's see the steps you need from zero to creating your first Pull Request. If you're already following me, you know I'm an Open Source enthu...", "url": "https://playfulprogramming.com/posts/how-to-create-your-first-pull-request-on-github-in-less-than-60-seconds--1ae6", "title": "⏰ How to create your First Pull Request on GitHub in less than 60 seconds!", "summary": "Intro Let's see the steps you need from zero to creating your first Pull Request. If...", "date_modified": "2022-08-09T16:22:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "I'm not sure if there's ever been a language more loathed, yet so widely used, as JavaScript. I'm not of that camp. I quite like JavaScript. Its qu...", "url": "https://playfulprogramming.com/posts/the-javascript-paradox-2njj", "title": "The JavaScript Paradox", "summary": "I'm not sure if there's ever been a language more loathed, yet so widely used, as JavaScript. I'm...", "date_modified": "2022-08-08T15:27:32.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Intro In this article I'll tell you about a cool tool I just found on npm, called npkill , that helps you cleaning node_modules from projects you n...", "url": "https://playfulprogramming.com/posts/delete-unused-nodemodules-in-a-second-and-enjoy-some-free-space-f3p", "title": "♻️ Delete unused node_modules in a second and enjoy some free space!", "summary": "Intro In this article I'll tell you about a cool tool I just found on npm, called npkill,...", "date_modified": "2022-08-05T07:07:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "If you have 59 seconds and in particular you're also on mobile, you might enjoy watching the YouTube #Shorts video. When creating and pushing a new...", "url": "https://playfulprogramming.com/posts/this-new-git-push-config-will-save-you-lot-of-frustration-27a9", "title": "⚙ This new GIT push config will save you lot of frustration!", "summary": "If you have 59 seconds and in particular you're also on mobile, you might enjoy watching the YouTube...", "date_modified": "2022-08-02T17:09:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Hello everyone! I recently posted an Article about benefits and advantages from contributing in Open Source. I released the video version on YouTub...", "url": "https://playfulprogramming.com/posts/video-how-open-source-can-change-your-life-4kg7", "title": "[Video] How Open Source can change your life", "summary": "Hello everyone! I recently posted an Article about benefits and advantages from contributing in Open...", "date_modified": "2022-07-30T09:57:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "I've recently been upgrading a Vue 2 JavaScript project using the Options API for single file components to Vue 3 typescript and taking advantage o...", "url": "https://playfulprogramming.com/posts/vue-composition-inspector", "title": "Vue Composition API Inspector", "summary": "A peek under the hood of Vue compilation. See how Vue interpretes TypeScript", "date_modified": "2022-07-30T09:30:00.000Z", "author": { "name": "William (Will) Lohan", "url": "https://playfulprogramming.com/unicorns/splatkillwill" } }, { "content_html": "Functions are weird . Consider the following code: function sayHello() {\n console.log(\"Hello\");\n}\n\nsayHello(); Seems straightforward enough, right...", "url": "https://playfulprogramming.com/posts/javascript-functions-are-values", "title": "JavaScript Fundamentals: Functions Are Values", "summary": "JavaScript functions are widely used in web development... but do you KNOW them? Let's explore the fundamentals and how they can be used in unorthodox ways", "date_modified": "2022-07-28T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "TL;DR : The video was originally posted on YouTube , for a higher-quality version you can watch it there . Add unique Trello card numbers to easily...", "url": "https://playfulprogramming.com/posts/show-trello-numbers-on-cards-25bc", "title": "🔢 Show trello numbers on cards!", "summary": "TL;DR: The video was originally posted on YouTube, for a higher-quality version you can watch it...", "date_modified": "2022-07-28T07:32:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Today at work we had a silly bug that exposes how reliant I am on Go's type system and compiler. I personally am too comfortable building a Docker ...", "url": "https://playfulprogramming.com/posts/python-none", "title": "Python None", "summary": "Interpreted languages have various footguns. Let's explore one such footgun I ran into recently with Python and how I fixed it.", "date_modified": "2022-07-27T20:00:00.945Z", "author": { "name": "William George Cook", "url": "https://playfulprogramming.com/unicorns/williamcook" } }, { "content_html": "Photo by Nick Morrison on Unsplash I had planned an Angular Course for the community for a very long time, last year I even decided to stream it. B...", "url": "https://playfulprogramming.com/posts/my-course-on-angular-getting-started-3jec", "title": "My Course on Angular Getting Started", "summary": "Photo by Nick Morrison on Unsplash I had planned an Angular Course for the community for a very long...", "date_modified": "2022-07-27T18:17:00.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "When navigating through GitHub you may land on awesome profiles with \"live\" content being updated automatically, what kind of sorcery is this? Let'...", "url": "https://playfulprogramming.com/posts/update-your-github-profile-with-your-chesscom-games-with-a-github-action-2lel", "title": "Update your GitHub profile with your chess.com games with a GitHub Action", "summary": "When navigating through GitHub you may land on awesome profiles with \"live\" content being updated...", "date_modified": "2022-07-27T10:51:00.000Z", "author": { "name": "Leonardo Montini", "url": "https://playfulprogramming.com/unicorns/balastrong" } }, { "content_html": "Project Management for Individuals Before I begin this post, I am not a project manager, but at my job, I perform a lot of project management as I ...", "url": "https://playfulprogramming.com/posts/project-management-for-individuals", "title": "Project Management for Individuals", "summary": "Having the ability to structure your projects (and these don't exclusively have to be programming related) gives you a massive advantage when it comes to being organised, and keeping your life organised.", "date_modified": "2022-07-26T15:45:03.000Z", "author": { "name": "Alex Chadwick", "url": "https://playfulprogramming.com/unicorns/alexchadwick" } }, { "content_html": "This post is an extract from my new newsletter The Pragmatic Dev focused on covering developer tools, tips, tricks, and related resources. Please s...", "url": "https://playfulprogramming.com/posts/why-you-should-be-using-it-test-driven-development-tdd-272", "title": "Why you should be using it Test Driven Development (TDD)", "summary": "This post is an extract from my new newsletter The Pragmatic Dev focused on covering developer tools,...", "date_modified": "2022-07-26T11:21:00.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Introduction In this day and age, the programming ecosystem has become so rich and complex that asking questions is inevitable for any developer, r...", "url": "https://playfulprogramming.com/posts/how-to-ask-good-questions", "title": "How to ask better questions", "summary": "We all ask questions from time to time, so here are some of my favourite tips when it comes to how to improve the quality of your questions.", "date_modified": "2022-07-20T20:10:03.000Z", "author": { "name": "Alex Chadwick", "url": "https://playfulprogramming.com/unicorns/alexchadwick" } }, { "content_html": "Defining Mutable and Immutable Mutable means \"can change\". Immutable means \"cannot change\". And these meanings remain the same in the technology w...", "url": "https://playfulprogramming.com/posts/new-post-mutable-vs-immutable", "title": "Mutable vs Immutable Data Types", "summary": "Using mutable data types can be dangerous in multi-threaded applications. To help that we can make sure of thread safer immutable data types", "date_modified": "2022-07-20T16:56:03.000Z", "author": { "name": "Alex Chadwick", "url": "https://playfulprogramming.com/unicorns/alexchadwick" } }, { "content_html": "Primitive obsession is an extremely common code smell, and when identified and fix, it greatly helps to reduce the amount of bugs that you may find...", "url": "https://playfulprogramming.com/posts/what-is-primitive-obsession", "title": "What is Primitive obsession and how to fix it", "summary": "Primitive obsession is an extremely common code smell, and when identified and fix, it greatly helps to reduce the amount of bugs that you may find in your code.", "date_modified": "2022-07-19T14:52:03.000Z", "author": { "name": "Alex Chadwick", "url": "https://playfulprogramming.com/unicorns/alexchadwick" } }, { "content_html": "When you read JavaScript/Typescript code, have you ever encountered an imported package and wanted to learn more about it? For instance, go to the ...", "url": "https://playfulprogramming.com/posts/i-created-a-vs-code-extension-npm-imported-packages-lens-17eg", "title": "I created a VS Code Extension - NPM Imported Packages Lens", "summary": "When you read JavaScript/Typescript code, have you ever encountered an imported package and wanted to...", "date_modified": "2022-07-18T09:05:19.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Sometimes there are problems that have no universally good solutions. There is some tradeoff to be made. Some perspectives that can't be protected....", "url": "https://playfulprogramming.com/posts/the-cost-of-consistency-in-ui-frameworks-4agi", "title": "The Cost of Consistency in UI Frameworks", "summary": "Sometimes there are problems that have no universally good solutions. There is some tradeoff to be...", "date_modified": "2022-07-12T16:58:20.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Many programmers use a loop or filter where HashMap data structure could be considered. Finding user by id using Loops let userIdToBeSearched = 103...", "url": "https://playfulprogramming.com/posts/when-to-use-map-instead-of-loop", "title": "When to use HashMap instead of Loop", "summary": "Learn to use when to use HashMap instead of Loop", "date_modified": "2022-06-24T05:12:03.284Z", "author": { "name": "Kaleem", "url": "https://playfulprogramming.com/unicorns/kaleem" } }, { "content_html": "NOTE As I write this blog post, the AngularJS has already reached EOL. It's been 10 months now. Introduction I came across AngularJS for the first ...", "url": "https://playfulprogramming.com/posts/angularjs-vs-angular-1gh6", "title": "AngularJS vs Angular", "summary": "NOTE As I write this blog post, the AngularJS has already reached EOL. It's been 10 months now. ...", "date_modified": "2022-06-19T21:59:56.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Please note: this guide specifically covers the Java Edition version of Minecraft. Bedrock Edition does not use data packs, but provides customizat...", "url": "https://playfulprogramming.com/posts/minecraft-data-packs-cmd-syntax", "title": "Minecraft Data Pack Programming: Command Syntax", "summary": "Learn the beginnings of data pack development in Minecraft - using positions, entity selectors, and conditional logic in commands!", "date_modified": "2022-06-15T21:12:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "Please note: this guide specifically covers the Java Edition version of Minecraft. Bedrock Edition does not use data packs, but provides customizat...", "url": "https://playfulprogramming.com/posts/minecraft-data-packs-introduction", "title": "Minecraft Data Pack Programming: Introduction", "summary": "Learn the beginnings of data pack development in Minecraft - using commands and functions to add custom behavior from scratch!", "date_modified": "2022-06-14T21:12:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "Python has a secret superpower with a similarly stupendous name: Magic Methods. These methods can fundamentally change the way you code with Python...", "url": "https://playfulprogramming.com/posts/guide-to-python-magic-methods", "title": "A Guide to Python's Secret Superpower: Magic Methods", "summary": "Python has a secret superpower with a similarly stupendous name: Magic Methods. These methods can fundamentally change the way you code with Python...", "date_modified": "2022-06-08T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Deciding on the approaches and tools to use to build on web these days can be a challenging prospect. There are many different options available an...", "url": "https://playfulprogramming.com/posts/patterns-for-building-javascript-websites-in-2022-5a93", "title": "Patterns for Building JavaScript Websites in 2022", "summary": "Deciding on the approaches and tools to use to build on web these days can be a challenging prospect....", "date_modified": "2022-06-08T16:11:03.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "One of the reasons I prefer front end frameworks like Vue and React over Angular, is what I like to call DOM Pollution. Unlike Vue and React, which...", "url": "https://playfulprogramming.com/posts/dom-pollution-why-i-prefer-vue-over-angular", "title": "Why I prefer Vue over Angular: DOM Pollution", "summary": "Angular differs from Vue in some keys ways, including its \"Incremental rendering\". This shift introduces something I call \"DOM Pollution\"; its why I prefer Vue over Angular.", "date_modified": "2022-06-06T10:08:00.000Z", "author": { "name": "William (Will) Lohan", "url": "https://playfulprogramming.com/unicorns/splatkillwill" } }, { "content_html": "Windows Subsystem for Linux (WSL) lets you run software designed for Linux. This gives Windows users access to tools and web developers environment...", "url": "https://playfulprogramming.com/posts/windows-subsystem-for-linux", "title": "Windows Subsystem for Linux", "summary": "Utilize the best of both worlds — Windows and Linux — without having to dual boot. Windows Subset for Linux (WSL) lets you run software designed for Linux in Windows.", "date_modified": "2022-05-24T22:07:20.000Z", "author": { "name": "William (Will) Lohan", "url": "https://playfulprogramming.com/unicorns/splatkillwill" } }, { "content_html": "I've been sitting on writing this article for 2 years. In my heart this was the article I was going to write even before I read @swyx's quintessential", "url": "https://playfulprogramming.com/posts/marko-for-sites-solid-for-apps-2c7d", "title": "Marko for Sites, Solid for Apps", "summary": "I've been sitting on writing this article for 2 years. In my heart this was the article I was going...", "date_modified": "2022-04-25T18:27:04.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "There are different ways to build a website. One of them was Multi-Page Applications (MPAs) which went out of fashion about a decade ago and are ha...", "url": "https://playfulprogramming.com/posts/island-architecture-5e87", "title": "Island Architecture", "summary": "There are different ways to build a website. One of them was Multi-Page Applications (MPAs) which...", "date_modified": "2022-04-20T19:22:08.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "A Regular Expression – or regex for short– is a syntax that allows you to match strings with specific patterns. Think of it as a suped-up text sear...", "url": "https://playfulprogramming.com/posts/the-complete-guide-to-regular-expressions-regex", "title": "The Complete Guide to Regular Expressions (Regex)", "summary": "A Regular Expression – or regex for short – is a syntax that allows you to match strings with specific patterns. Think of it as a suped-up text search", "date_modified": "2022-04-17T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Photo by Annie Spratt on Unsplash In the last couple of years, the number of developers contributing to Open Source has grown exponentially. The Gi...", "url": "https://playfulprogramming.com/posts/how-github-is-improving-developer-experience-8jj", "title": "How GitHub is Improving Developer Experience", "summary": "Photo by Annie Spratt on Unsplash In the last couple of years, the number of developers contributing...", "date_modified": "2022-04-14T11:25:47.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Before I wrote this, I was in the middle of writing a Twitter thread about performance on the web and the unintended impact tools developers choose...", "url": "https://playfulprogramming.com/posts/performance-choosing-the-right-tools-4lii", "title": "Performance: Choosing The Right Tools...", "summary": "Before I wrote this, I was in the middle of writing a Twitter thread about performance on the web and...", "date_modified": "2022-04-14T07:04:20.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "When we build an app, some data like the menu and options don't change with frequency. The best approach is to cache it because when the user moves...", "url": "https://playfulprogramming.com/posts/how-caching-data-in-angular-with-rxjs-27mj", "title": "How Caching Data in Angular with Rxjs", "summary": "When we build an app, some data like the menu and options don't change with frequency. The best...", "date_modified": "2022-04-12T18:58:00.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "If you are reading this, you've probably heard of SSR (Server-side rendering), SSG (Static site generation) and CSR (Client-side rendering). A brie...", "url": "https://playfulprogramming.com/posts/incremental-static-regeneration-for-angular-34co", "title": "Incremental Static Regeneration for Angular", "summary": "If you are reading this, you've probably heard of SSR (Server-side rendering), SSG (Static site...", "date_modified": "2022-04-09T17:26:21.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "Angular help us to convert values for display using Pipes; the pipes are a way to transform input data to a desired or wished output. A bad practic...", "url": "https://playfulprogramming.com/posts/using-pipes-to-transform-data-in-angular-3obi", "title": "Using Pipes to Transform Data in Angular", "summary": "Angular help us to convert values for display using Pipes; the pipes are a way to transform input...", "date_modified": "2022-04-08T16:49:00.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Live reloading changes to our codebase is one of the core tenants of a great developer experience. When we make changes to our codebase, we want to...", "url": "https://playfulprogramming.com/posts/live-reloading-in-golang-using-air-1lho", "title": "Live Reloading in Golang using Air", "summary": "Live reloading changes to our codebase is one of the core tenants of a great developer experience....", "date_modified": "2022-04-07T07:45:18.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "That is an ambitious title for an article. An ambitious goal in general. Hydration, the process of spreading JavaScript interactivity back into our...", "url": "https://playfulprogramming.com/posts/conquering-javascript-hydration-a9f", "title": "Conquering JavaScript Hydration", "summary": "That is an ambitious title for an article. An ambitious goal in general. Hydration, the process of...", "date_modified": "2022-03-21T14:50:07.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "If you used to adopt Visual Studio in the past probably you already know something about Snippets.\nThis feature exists out-of-the-box in VsCode too...", "url": "https://playfulprogramming.com/posts/visual-studio-code-tips-tricks-snippets-5041", "title": "Visual Studio Code - Tips & Tricks - Snippets", "summary": "If you used to adopt Visual Studio in the past probably you already know something about...", "date_modified": "2022-03-21T07:53:21.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Photo by Luca Bravo on Unsplash Note : Due to NDA, we won't mention the client's name. We finished migrating to Nx from Angular CLI last year, and ...", "url": "https://playfulprogramming.com/posts/why-and-how-we-migrated-to-nx-from-angular-cli-5a61", "title": "Why and How we migrated to Nx from Angular CLI", "summary": "Photo by Luca Bravo on Unsplash Note: Due to NDA, we won't mention the client's name. We finished...", "date_modified": "2022-03-18T12:51:49.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "CSS animations emit events that we can listen to using Javascript. There are slight differences in how we attach event listeners between a vanilla ...", "url": "https://playfulprogramming.com/posts/css-animation-events-in-angular-3p03", "title": "CSS Animation Events in Angular", "summary": "CSS animations emit events that we can listen to using Javascript. There are slight differences in...", "date_modified": "2022-03-18T01:51:18.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "In Rxjs, when we work with observables handling the errors is a bit confusing for beginners because you can think of a try-catch, but Rxjs came wit...", "url": "https://playfulprogramming.com/posts/how-to-handle-and-catch-errors-in-rxjs-3kei", "title": "How to handle and catch errors in Rxjs", "summary": "In Rxjs, when we work with observables handling the errors is a bit confusing for beginners because...", "date_modified": "2022-03-11T17:18:00.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "In Typescript 4.3, typescript introduced the const assertions. const assertions are used to tell the Typescript compiler one of the following: Obje...", "url": "https://playfulprogramming.com/posts/const-assertions-in-typescript-2j71", "title": "const assertions in Typescript", "summary": "In Typescript 4.3, typescript introduced the const assertions. const assertions are used to tell the...", "date_modified": "2022-02-25T11:35:40.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "React’s useEffect is a powerful API with lots of capabilities, and therefore flexibility. Unfortunately, this flexibility often leads to abuse and ...", "url": "https://playfulprogramming.com/posts/rules-of-reacts-useeffect", "title": "Rules of React's useEffect", "summary": "useEffect is prolific in React apps. Here are four rules associated with the hook and in-depth explanations of why they're important.", "date_modified": "2022-02-22T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "A tuple type is an array with a predefined length and predefined types in each index position in the array. The types inside this array do not have...", "url": "https://playfulprogramming.com/posts/the-tuple-type-in-typescript-nb7", "title": "The Tuple Type in Typescript", "summary": "A tuple type is an array with a predefined length and predefined types in each index position in the...", "date_modified": "2022-02-22T07:49:25.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Visual Studio Code is one of the best code editors in this moment.\nIts Palette has many features but probably not all devs know them.\nLet’s look at...", "url": "https://playfulprogramming.com/posts/visual-studio-code-tips-tricks-command-palette-and-its-friends-2bhi", "title": "Visual Studio Code - Tips & Tricks - Command Palette and its friends", "summary": "Visual Studio Code is one of the best code editors in this moment. Its Palette has many features but...", "date_modified": "2022-02-21T06:27:16.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When we start to build the application and feel the code duplicated are in several places, our first idea is inheritance , because it solves our pr...", "url": "https://playfulprogramming.com/posts/composition-and-inheritance-in-angular-46a", "title": "Composition and inheritance in Angular", "summary": "When we start to build the application and feel the code duplicated are in several places, our first...", "date_modified": "2022-02-20T16:29:00.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Everyone wants to write code in a fast bug-free way without thinking about its style most of the time. That’s why in this post I will talk about co...", "url": "https://playfulprogramming.com/posts/configure-prettier-and-eslint-with-angular-526c", "title": "Configure Prettier and ESLint with Angular", "summary": "Everyone wants to write code in a fast bug-free way without thinking about its style most of the...", "date_modified": "2022-02-19T19:48:34.000Z", "author": { "name": "Enea Jahollari", "url": "https://playfulprogramming.com/unicorns/eneajaho" } }, { "content_html": "When Misko Hevery (creator of AngularJS) approaches you to look at his new framework, well, you stop and listen. I was already aware of Qwik and sa...", "url": "https://playfulprogramming.com/posts/resumable-javascript-with-qwik-2i29", "title": "Resumable JavaScript with Qwik", "summary": "When Misko Hevery (creator of AngularJS) approaches you to look at his new framework, well, you stop...", "date_modified": "2022-02-17T15:27:13.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "When we build components in an application, we maybe need to share or send data from parent to child or without a direct connection. Angular provid...", "url": "https://playfulprogramming.com/posts/how-to-share-data-between-components-in-angular-4i60", "title": "How to share data between components in Angular", "summary": "When we build components in an application, we maybe need to share or send data from parent to child...", "date_modified": "2022-02-14T07:30:28.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Arrays are already well described in typescript, but sometimes we need to be more strict with our types. For instance, we need to have a not empty ...", "url": "https://playfulprogramming.com/posts/typescript-readonlynotemptyarray-2id7", "title": "Typescript - (ReadOnly)NotEmptyArray", "summary": "Arrays are already well described in typescript, but sometimes we need to be more strict with our...", "date_modified": "2022-02-14T06:40:37.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "What is the doomsday rule? Before I get to how my program works, I should probably explain what the doomsday rule is. The doomsday rule is an algor...", "url": "https://playfulprogramming.com/posts/doomsday-rule", "title": "Doomsday Rule", "summary": "In this blog I talk about the Doomsday Rule, how it works, how to put it into code then how to make a program that tests you.", "date_modified": "2022-02-10T22:12:03.284Z", "author": { "name": "Joshua Hawkins", "url": "https://playfulprogramming.com/unicorns/SkyHawk_0" } }, { "content_html": "Hello Folks 👋\nToday we'll see how to handle seed with Prisma. Seeding allows you to re-create consistently the same data in your database and it c...", "url": "https://playfulprogramming.com/posts/its-prisma-time-seeding-43h4", "title": "It's Prisma Time - Seeding", "summary": "Hello Folks 👋 Today we'll see how to handle seed with Prisma. Seeding allows you to re-create...", "date_modified": "2022-02-04T06:57:04.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hydration is the name given to the process in JavaScript frameworks to initializing the page in the browser after it has previously been server ren...", "url": "https://playfulprogramming.com/posts/why-efficient-hydration-in-javascript-frameworks-is-so-challenging-1ca3", "title": "Why Efficient Hydration in JavaScript Frameworks is so Challenging", "summary": "Hydration is the name given to the process in JavaScript frameworks to initializing the page in the...", "date_modified": "2022-02-03T15:19:56.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Hello Guys 👋,\nToday it's time to speak about migrations. Migrations in Prisma are managed by Prisma Migrate .\nPrisma Migrate is an imperative data...", "url": "https://playfulprogramming.com/posts/its-prisma-time-migrations-7pk", "title": "It's Prisma Time - Migrations", "summary": "Hello Guys 👋, Today it's time to speak about migrations. Migrations in Prisma are managed by Prisma...", "date_modified": "2022-02-02T07:36:09.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hello Folks 👋\nToday it's time to see how we can execute our own queries. In prisma we can run two kind of custom queries: \"Actionable\" queries (IN...", "url": "https://playfulprogramming.com/posts/its-prisma-time-execute-your-own-queries-4olp", "title": "It's Prisma Time - Execute your own queries", "summary": "Hello Folks 👋 Today it's time to see how we can execute our own queries. In prisma we can run two...", "date_modified": "2022-01-28T07:10:53.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "You’ve just gotten done with your React 18 upgrade , and, after some light QA testing, don’t find anything. “An easy upgrade,” you think. Unfortuna...", "url": "https://playfulprogramming.com/posts/why-react-18-broke-your-app", "title": "Why React 18 Broke Your App", "summary": "React 18's internal changes improved a lot, but may have broken your app in the process. Here's why and how you can fix it", "date_modified": "2022-01-27T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hi Guys 👋\nToday we are going to see how to enable logging in Prisma, so don't waste time and let's start! In Prisma we have 4 type of logging quer...", "url": "https://playfulprogramming.com/posts/its-prisma-time-logging-4i7m", "title": "It's Prisma Time - Logging", "summary": "Hi Guys 👋 Today we are going to see how to enable logging in Prisma, so don't waste time and let's...", "date_modified": "2022-01-26T06:50:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Return? It never went away. Or at least that is what some smug \"told you so\" is going to say. But for those who haven't been living under a rock fo...", "url": "https://playfulprogramming.com/posts/the-return-of-server-side-routing-b05", "title": "The Return of Server Side Routing", "summary": "Return? It never went away. Or at least that is what some smug \"told you so\" is going to say. But for...", "date_modified": "2022-01-26T00:33:23.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Hello Guys 👋\nToday it's time to speak about transactions. Transactions are a pillar of the database world, and they help us to make consistency in...", "url": "https://playfulprogramming.com/posts/its-prisma-time-transactions-ji5", "title": "It's Prisma Time - Transactions", "summary": "Hello Guys 👋 Today it's time to speak about transactions. Transactions are a pillar of the database...", "date_modified": "2022-01-20T07:19:05.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "If you've spent much time in software development, you've undoubtedly heard the expression “test-driven development” or \"TDD\" for short. The idea b...", "url": "https://playfulprogramming.com/posts/documentation-driven-development", "title": "A Better Way To Code: Documentation Driven Development", "summary": "Test Driven Development is often taught to improve a your workflow; I present Documentation Driven Development as an alternative approach.", "date_modified": "2022-01-18T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "I am very new to blogging, so I thought I would write a little bit about myself. I am a software developer, programming since October 2020.\nI have ...", "url": "https://playfulprogramming.com/posts/how-to-get-started-with-net", "title": "How to get started with .NET", "summary": "Did you know that 35% of developers are using .NET? This is a great article to read to get started with .NET.", "date_modified": "2022-01-18T19:20:19.000Z", "author": { "name": "Bobrossrtx", "url": "https://playfulprogramming.com/unicorns/bobrossrtx" } }, { "content_html": "Welcome back Folks 👋\nToday we are seeing how to aggregate and group data. Let's start from the first one.\nTo aggregate data in Prisma you have to ...", "url": "https://playfulprogramming.com/posts/its-prisma-time-aggregate-and-groupby-36a7", "title": "It's Prisma Time - Aggregate and GroupBy", "summary": "Welcome back Folks 👋 Today we are seeing how to aggregate and group data. Let's start from the...", "date_modified": "2022-01-18T08:44:57.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Guys 👋\nToday we are going to see how to paginate our results.\nSo don't waste time and let's go! With Prisma there are two ways to paginate resu...", "url": "https://playfulprogramming.com/posts/its-prisma-time-pagination-218e", "title": "It's Prisma Time - Pagination", "summary": "Hi Guys 👋 Today we are going to see how to paginate our results. So don't waste time and let's...", "date_modified": "2022-01-13T07:10:33.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When we want to test our code, some things have dependencies inside, and you don't want to call these stuff. You won't be sure your code works, not...", "url": "https://playfulprogramming.com/posts/how-to-mock-dependencies-with-jest-457l", "title": "How to Mock dependencies with Jest", "summary": "When we want to test our code, some things have dependencies inside, and you don't want to call these...", "date_modified": "2022-01-12T09:26:13.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Welcome back Guys,\nToday it's time to get our record using the select command. Let's start with a simple example (copy and paste the setup method i...", "url": "https://playfulprogramming.com/posts/its-prisma-time-select-3lie", "title": "It's Prisma Time - Select", "summary": "Welcome back Guys, Today it's time to get our record using the select command. Let's start with a...", "date_modified": "2022-01-11T07:03:04.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "React 18 is the latest in a long line of major releases of React. With it you gain access to: new features for Suspense , new useId , useSyncExtern...", "url": "https://playfulprogramming.com/posts/how-to-upgrade-to-react-18", "title": "How to Upgrade to React 18", "summary": "React 18 introduces some awesome features that I'm sure you can't wait to try! Here's how you can get started with React 18 today!", "date_modified": "2022-01-07T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hi Folks 👋\nToday it's time to learn something about the update operation, so don't waste time and let's go! The update method in Prisma is not tha...", "url": "https://playfulprogramming.com/posts/its-prisma-time-update-1mmi", "title": "It's Prisma Time - Update", "summary": "Hi Folks 👋 Today it's time to learn something about the update operation, so don't waste time and...", "date_modified": "2022-01-07T08:00:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Guys 👋\ntoday we are going to see the delete operation. Before moving to the delete operation, in the code of this article I added the next snip...", "url": "https://playfulprogramming.com/posts/its-prisma-time-delete-4036", "title": "It's Prisma Time - Delete", "summary": "Hi Guys 👋 today we are going to see the delete operation. Before moving to the delete operation, in...", "date_modified": "2022-01-05T07:20:02.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Dockertest enables us to use Docker to create containers to run our tests against. With dockertest, we can use it to create a Docker container for ...", "url": "https://playfulprogramming.com/posts/writing-tests-for-mongodb-using-dockertest-in-go-56hm", "title": "Writing Tests for MongoDB using Dockertest in Go", "summary": "Dockertest enables us to use Docker to create containers to run our tests against. With dockertest,...", "date_modified": "2022-01-03T18:31:09.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "A while back, I had a look at why you should avoid using the any type and instead use the unknown type, which you can read here . In this article, ...", "url": "https://playfulprogramming.com/posts/type-assertions-in-typescript-why-not-2jc3", "title": "Type Assertions in TypeScript - why not?", "summary": "A while back, I had a look at why you should avoid using the any type and instead use the unknown...", "date_modified": "2021-12-30T12:43:44.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Welcome Guys,\nToday it's time to add some records to the database 😁 so don't waste time and get your hand dirty. Let's start from a simple insert ...", "url": "https://playfulprogramming.com/posts/its-prisma-time-insert-fc2", "title": "It's Prisma Time - Insert", "summary": "Welcome Guys, Today it's time to add some records to the database 😁 so don't waste time and get your...", "date_modified": "2021-12-30T07:06:20.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Folks 👋\ntoday I'll show you how to create relations among your entities. So don't waste time and let's start! Before moving on, let me explain ...", "url": "https://playfulprogramming.com/posts/its-prisma-time-create-relations-1ohb", "title": "It's Prisma Time - Create Relations", "summary": "Hi Folks 👋 today I'll show you how to create relations among your entities. So don't waste time and...", "date_modified": "2021-12-28T07:21:03.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Photo by Kyle Nieber on Unsplash It's been six years since I left my job at a startup where I worked for around five years. I have a lot of good me...", "url": "https://playfulprogramming.com/posts/how-i-made-workplace-toxic-1ici", "title": "How I made workplace toxic", "summary": "Photo by Kyle Nieber on Unsplash It's been six years since I left my job at a startup where I worked...", "date_modified": "2021-12-27T17:55:33.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Angular, by default, comes with Jasmine; it is a great testing framework. I spent one year and a half running and writing tests with Jasmine, it wo...", "url": "https://playfulprogramming.com/posts/migrate-from-jasmine-to-jest-and-testing-in-angular-286i", "title": "Migrate from Jasmine to Jest and Testing Library in Angular", "summary": "Angular, by default, comes with Jasmine; it is a great testing framework. I spent one year and a half...", "date_modified": "2021-12-27T08:16:52.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Hi Guys 👋\nwelcome back.\nFinally, today it's time to create our database, so don't waste time, and get started.\nHow can you create your database?\nI...", "url": "https://playfulprogramming.com/posts/its-prisma-time-create-db-3e8n", "title": "It's Prisma Time - Create Db", "summary": "Hi Guys 👋 welcome back. Finally, today it's time to create our database, so don't waste time, and get...", "date_modified": "2021-12-23T06:51:06.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Web components enjoy large-scale usage today. From YouTube to GitHub and many other major organizations, it’s safe to say they’ve made their way in...", "url": "https://playfulprogramming.com/posts/web-components-101-history", "title": "Web Components 101: History", "summary": "Web components have had a long history to get where they are today. Let's look back to see where they came from & their immense growth!", "date_modified": "2021-12-21T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hello Folks 👋 and welcome back to this series,\ntoday it's time to create your first table with prisma, are you ready? Then let's go 💪 Before sta...", "url": "https://playfulprogramming.com/posts/its-prisma-time-create-table-3911", "title": "It's Prisma Time - Create Table", "summary": "Hello Folks 👋 and welcome back to this series, today it's time to create your first table with...", "date_modified": "2021-12-21T07:02:02.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Guys,\nwelcome to the second article of this series. Today I'll show you how to setup a project with Prisma.\nThis project in addition to prisma u...", "url": "https://playfulprogramming.com/posts/its-prisma-time-setup-ei7", "title": "It's Prisma Time - Setup", "summary": "Hi Guys, welcome to the second article of this series. Today I'll show you how to setup a project...", "date_modified": "2021-12-16T07:03:17.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "I had someone recently reach out to me to ask \"What is Suspense in the general sense?\" They said all they could find was React resources. And I tol...", "url": "https://playfulprogramming.com/posts/why-all-the-suspense-understanding-async-consistency-in-javascript-frameworks-3kdp", "title": "Why all the Suspense? Understanding Async Consistency in JavaScript Frameworks", "summary": "I had someone recently reach out to me to ask \"What is Suspense in the general sense?\" They said all...", "date_modified": "2021-12-14T19:54:19.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Hi Folks 👋 and welcome back,\nToday I want to start a new series about Prisma .\nBut before starting I want to explain the reason why of this series...", "url": "https://playfulprogramming.com/posts/its-prisma-time-introduction-3a3h", "title": "It's Prisma Time - Introduction", "summary": "Hi Folks 👋 and welcome back, Today I want to start a new series about Prisma. But before starting I...", "date_modified": "2021-12-14T07:08:16.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Alright alright, I know for a lot of the last article seemed like a big ad for Lit. That said, I promise I’m not unable to see the advantages of ot...", "url": "https://playfulprogramming.com/posts/web-components-101-framework-comparison", "title": "Web Components 101: Framework Comparison", "summary": "While web components can be used standalone, they're paired best with a framework. With that in mind, which is the best and why?", "date_modified": "2021-12-02T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "If you work with docker, typing for every action is not a good deal, and sometimes it can be a nightmare because a typo mistake breaks our process,...", "url": "https://playfulprogramming.com/posts/from-docker-to-docker-compose-way-56h", "title": "From Docker to Docker compose way!", "summary": "If you work with docker, typing for every action is not a good deal, and sometimes it can be a...", "date_modified": "2021-11-24T17:30:34.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "This article isn't going to teach you about the latest trends in frontend development. Or look in detail into the way to get the most performance o...", "url": "https://playfulprogramming.com/posts/the-quest-for-reactivescript-3ka3", "title": "The Quest for ReactiveScript", "summary": "This article isn't going to teach you about the latest trends in frontend development. Or look in...", "date_modified": "2021-11-23T15:07:50.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Motion One is a new animation library built on the Web Animations API. If you have used Popmotion or Greensock before, this library's syntax should...", "url": "https://playfulprogramming.com/posts/animate-your-angular-app-using-motion-one-4bg3", "title": "Animate your Angular App using Motion One", "summary": "Motion One is a new animation library built on the Web Animations API. If you have used Popmotion or...", "date_modified": "2021-11-18T14:07:19.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "Typescript 4.5 was just released and one of the features that stood out to me is the Template String Types as Discriminants. In this article, we ar...", "url": "https://playfulprogramming.com/posts/template-string-types-as-discriminants-in-typescript-45-4fdi", "title": "Template String Types as Discriminants in Typescript 4.5", "summary": "Typescript 4.5 was just released and one of the features that stood out to me is the Template String...", "date_modified": "2021-11-18T08:21:00.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "I've been programming for about 10 years now and by far the worst thing to navigate has been documentation. There's plenty of good books, tutorials...", "url": "https://playfulprogramming.com/posts/docs-where-can-we-do-better", "title": "Docs, Where Can We Do Better?", "summary": "My personal approach to writing docs, mainly aimed at frameworks and the like.", "date_modified": "2021-11-13T05:12:03.284Z", "author": { "name": "Maisy Dinosaur", "url": "https://playfulprogramming.com/unicorns/maisydino" } }, { "content_html": "Transitional JavaScript Apps? What? Well honestly I'm not sure I know completely myself. It is an umbrella term for the progress that has been happ...", "url": "https://playfulprogramming.com/posts/understanding-transitional-javascript-apps-27i2", "title": "Understanding Transitional JavaScript Apps", "summary": "Transitional JavaScript Apps? What? Well honestly I'm not sure I know completely myself. It is an...", "date_modified": "2021-11-12T15:19:34.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Recently we talked about what web components are and how you can build a web app utilizing them with only vanilla JavaScript . While web components...", "url": "https://playfulprogramming.com/posts/web-components-101-lit-framework", "title": "Web Components 101: Lit Framework", "summary": "Google pushed for web components, sure, but they didn't stop there. They also went on to make an amazing framework to help build them: Lit!", "date_modified": "2021-11-04T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Be ready to deploy your apps with Docker is a one of higher-demand knowledge today, and this article will guide you (and me ) from zero to survive ...", "url": "https://playfulprogramming.com/posts/docker-from-zero-to-survive-40ho", "title": "Docker from zero to survive", "summary": "Be ready to deploy your apps with Docker is a one of higher-demand knowledge today, and this article...", "date_modified": "2021-11-02T17:16:47.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "When we use Angular's schematics to generate components, unnecessary asynchronous code is added to the test setup hook for its test suite. The foll...", "url": "https://playfulprogramming.com/posts/simplifying-angular-testbed-setup-by-converting-to-synchronous-test-hooks-19cl", "title": "Simplifying Angular testbed setup by converting to synchronous test hooks", "summary": "Surprising to some, calling TestBed.compileComponents is unnecessary unless you're Google. ", "date_modified": "2021-10-30T22:10:01.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Photo by John Bakator on Unsplash NgRx Effects Effects are a powerful model for handling side effects in your application. Commonly this means when...", "url": "https://playfulprogramming.com/posts/moving-material-dialog-lifecycle-into-ngrx-effects-5d99", "title": "Moving Material Dialog Lifecycle Into NgRx Effects", "summary": "Photo by John Bakator on Unsplash NgRx Effects Effects are a powerful model for handling...", "date_modified": "2021-10-19T23:02:37.000Z", "author": { "name": "Chandler Baskins", "url": "https://playfulprogramming.com/unicorns/chandlerbaskins" } }, { "content_html": "Sometimes we have a long list of imports, with files that come from the same place, it makes our code noisy and a bit longer, something like: impo...", "url": "https://playfulprogramming.com/posts/simplify-imports-in-typescript-29jo", "title": "How to simplify and organize imports in Typescript", "summary": "Sometimes we have a long list of imports, with files that come from the same place, it makes our...", "date_modified": "2021-10-16T13:53:19.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "When we go to a party, I love to have all beers ready to drink and take one, but sometimes take time to pick from fridge to the table, and stay wa...", "url": "https://playfulprogramming.com/posts/how-to-use-angular-resolver-to-prefetch-beers-into-the-party-49g3", "title": "How to use Angular resolvers to prefetch beers to the party", "summary": "When we go to a party, I love to have all beers ready to drink and take one, but sometimes take time...", "date_modified": "2021-10-16T07:57:23.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "Photo by Callum Shaw on Unsplash Last year around August 2020, I decided to leave my full-time job and started looking for a new job and decided to...", "url": "https://playfulprogramming.com/posts/my-first-year-as-independent-consultant-49ij", "title": "My first year as Independent Consultant", "summary": "Photo by Callum Shaw on Unsplash Last year around August 2020, I decided to leave my full-time job...", "date_modified": "2021-10-15T19:25:14.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Size in JavaScript Frameworks is actually a pretty tricky thing to estimate. Even nailing down the size of runtimes is unclear. You might go to bun...", "url": "https://playfulprogramming.com/posts/javascript-framework-todomvc-size-comparison-504f", "title": "JavaScript Framework TodoMVC Size Comparison", "summary": "Size in JavaScript Frameworks is actually a pretty tricky thing to estimate. Even nailing down the...", "date_modified": "2021-10-14T14:13:08.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Different browsers come with a different set of dev tools to help developers. When it comes to animations, Chrome and Firefox have an animation ins...", "url": "https://playfulprogramming.com/posts/animation-inspector-how-devtools-can-help-when-creating-animations-2g48", "title": "Animation Inspector: How DevTools can help when Creating Animations", "summary": "Different browsers come with a different set of dev tools to help developers. When it comes to...", "date_modified": "2021-10-14T11:25:36.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "Cover photo by Marian Kroell on Unsplash. The destroyAfterEach Angular testing module teardown option addresses several long-standing issues when u...", "url": "https://playfulprogramming.com/posts/improving-angular-tests-by-enabling-angular-testing-module-teardown-38kh", "title": "Improving Angular tests by enabling Angular testing module teardown", "summary": "Introducing the ModuleTeardownOptions#destroyAfterEach option for the Angular testbed.", "date_modified": "2021-10-13T22:22:58.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Hello Folks 👋!\nToday it's time to speak about testing and how to test the code when we use RxJS.\nBefore moving our focus to the testing, I need to...", "url": "https://playfulprogramming.com/posts/rxjs-marble-testing-2gg9", "title": "RxJS - Marble Testing", "summary": "Hello Folks 👋! Today it's time to speak about testing and how to test the code when we use...", "date_modified": "2021-10-08T06:16:39.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "What's a Subject Luca? And why today do you want to speak about subjects? Is there a mistake in the publishing? Or are you simply drunk? No guys, d...", "url": "https://playfulprogramming.com/posts/rxjs-subjects-4m12", "title": "RxJS - Subjects", "summary": "What's a Subject Luca? And why today do you want to speak about subjects? Is there a mistake in the...", "date_modified": "2021-10-06T06:00:57.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "When we use external libraries, it is very common to declare a global object and use it. But the price to pay is get complex testing scenario, and...", "url": "https://playfulprogramming.com/posts/how-to-control-global-objects-in-angular-47b2", "title": "How to control global objects in Angular.", "summary": "When we use external libraries, it is very common to declare a global object and use it. But the...", "date_modified": "2021-10-05T13:31:55.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "I recently touched on how GitHub Copilot , an AI-powered code generation tool from GitHub and OpenAI, is going to shift the way we’ll need to do in...", "url": "https://playfulprogramming.com/posts/github-copilot-wont-replace-devs", "title": "GitHub Copilot: Helpful, But Not a Replacement", "summary": "GitHub Copilot is an amazing tool that I think will drastically improve the way that I code. But it won't replace me. Here's why.", "date_modified": "2021-10-04T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hi Folks 👋\nafter many articles in which I have illustrated the different types of operators already included in the RxJS library, today I show you...", "url": "https://playfulprogramming.com/posts/rxjs-custom-operators-5gah", "title": "RxJS - Custom Operators", "summary": "Hi Folks 👋 after many articles in which I have illustrated the different types of operators already...", "date_modified": "2021-10-04T06:14:29.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Folk 👋,\nin the previous articles we've seen that when we subscribe to an observable, the observable restarts every time and do not remember the...", "url": "https://playfulprogramming.com/posts/rxjs-multicast-operator-1k9i", "title": "RxJS - Multicast Operator", "summary": "Hi Folk 👋, in the previous articles we've seen that when we subscribe to an observable, the...", "date_modified": "2021-10-01T06:23:32.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "One of the best practice in our work is handle the errors, so today I'll show you some operators in RxJS to handle the errors.\nLet's start :) catch...", "url": "https://playfulprogramming.com/posts/rxjs-error-handling-operators-57op", "title": "RxJS - Error Handling Operators", "summary": "One of the best practice in our work is handle the errors, so today I'll show you some operators in...", "date_modified": "2021-09-29T06:03:31.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "One of the easiest things is a burger. The burger has the same base but changes its content, so let's build our burger component. Today we explain ...", "url": "https://playfulprogramming.com/posts/use-angular-content-projection-for-prepare-a-burger-46pj", "title": "How to use Angular content projection to prepare a burger", "summary": "One of the easiest things is a burger. The burger has the same base but changes its content, so let's...", "date_modified": "2021-09-27T15:13:40.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "How we define our types in Typescript impacts how effective typescript is at warning us when we make mistakes. If we take a broad approach i.e. to ...", "url": "https://playfulprogramming.com/posts/better-types-using-discriminated-unions-in-typescript-4i3g", "title": "Better Types using Discriminated Unions in TypeScript", "summary": "How we define our types in Typescript impacts how effective typescript is at warning us when we make...", "date_modified": "2021-09-27T08:03:07.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Hi Guys and welcome back,\ntoday I'll illustrate you two simple types of the pipeable operators: Conditional Operators and Mathematical Operators.\nN...", "url": "https://playfulprogramming.com/posts/rxjs-conditional-mathematical-operators-1hh7", "title": "RxJS - Conditional & Mathematical Operators", "summary": "Hi Guys and welcome back, today I'll illustrate you two simple types of the pipeable operators:...", "date_modified": "2021-09-27T06:14:27.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back Guys,\nToday I'll show you some utility operators.\nLet's start :) tap Used to perform side-effects for notifications from the source ob...", "url": "https://playfulprogramming.com/posts/rxjs-utility-operators-904", "title": "RxJS - Utility Operators", "summary": "Welcome back Guys, Today I'll show you some utility operators. Let's start :) tap Used to...", "date_modified": "2021-09-24T05:59:52.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Most of you probably have heard of Animate.css . It is an open-source CSS animation library with lots of predefined animations. Animate.css groups ...", "url": "https://playfulprogramming.com/posts/animate-your-angular-app-using-animate-css-46c5", "title": "Animate your Angular App using Animate.css", "summary": "Most of you probably have heard of Animate.css. It is an open-source CSS animation library with lots...", "date_modified": "2021-09-22T14:22:17.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "Hi Guys and Welcome Back,\nToday I'll speak about the Join Operators. Some of these operators are similar to other operators shown in the Creation O...", "url": "https://playfulprogramming.com/posts/rxjs-join-operators-2lam", "title": "RxJS - Join Operators", "summary": "Hi Guys and Welcome Back, Today I'll speak about the Join Operators. Some of these operators are...", "date_modified": "2021-09-22T06:07:48.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back,\nToday I'll speak about the Transformation Operators. These operators are used to modify the value received.\nBut cut the chatter, and ...", "url": "https://playfulprogramming.com/posts/rxjs-transformation-operators-173o", "title": "RxJS - Transformation Operators", "summary": "Welcome back, Today I'll speak about the Transformation Operators. These operators are used to modify...", "date_modified": "2021-09-20T06:40:29.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Photo by Christin Hume on Unsplash My friend Vinit Shahdeo asked me to share my experience as Software Engineer, here is the article from Vinit sha...", "url": "https://playfulprogramming.com/posts/my-lessons-learned-as-software-engineer-3bae", "title": "My Lessons learned as Software Engineer", "summary": "Photo by Christin Hume on Unsplash My friend Vinit Shahdeo asked me to share my experience as...", "date_modified": "2021-09-19T12:17:22.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "After I finished the first article I wasn't sure how long it would be before we'd have enough topics for the next round. But given the continuing a...", "url": "https://playfulprogramming.com/posts/javascript-vs-javascript-round-2-fight-2m44", "title": "JavaScript vs JavaScript: Round 2. Fight!", "summary": "After I finished the first article I wasn't sure how long it would be before we'd have enough topics...", "date_modified": "2021-09-17T14:01:56.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Welcome back Guys, Today we'll start with the Filtering Operators. As you can imagine these operators are used to filter our sources.\nWell, let's g...", "url": "https://playfulprogramming.com/posts/rxjs-filtering-operators-pe1", "title": "RxJS - Filtering Operators", "summary": "Welcome back Guys, Today we'll start with the Filtering Operators. As you can imagine these...", "date_modified": "2021-09-17T06:00:17.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Previously, we covered various approaches that you can take to narrowing types in Typescript. Type narrowing is the process of moving the type of a...", "url": "https://playfulprogramming.com/posts/custom-type-guards-in-typescript-4kep", "title": "Custom Type Guards in Typescript", "summary": "Previously, we covered various approaches that you can take to narrowing types in Typescript. Type...", "date_modified": "2021-09-16T07:53:40.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Welcome back guys,\ntoday I'll start to show you the Creation operators in RxJS. The Creation Operators are used to create new observables. They are...", "url": "https://playfulprogramming.com/posts/rxjs-creation-operators-6bh", "title": "RxJS - Creation Operators", "summary": "Welcome back guys, today I'll start to show you the Creation operators in RxJS. The Creation...", "date_modified": "2021-09-15T06:30:11.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Animations add life to your application and can greatly increase your app's overall user experience. Animation is a complex topic and can be intimi...", "url": "https://playfulprogramming.com/posts/3-easy-ways-to-add-animation-to-your-angular-applications-2537", "title": "3 Easy Ways to Add Animation to your Angular Applications", "summary": "Animations add life to your application and can greatly increase your app's overall user experience....", "date_modified": "2021-09-14T12:50:18.000Z", "author": { "name": "William Juan", "url": "https://playfulprogramming.com/unicorns/williamjuan27" } }, { "content_html": "Hi guy,\nbefore continuing with the operators, today I want to explain the Marble Diagrams .\nThe Marble Diagrams is a timeline where you can illustr...", "url": "https://playfulprogramming.com/posts/rxjs-marble-diagrams-4jmg", "title": "RxJS - Marble Diagrams", "summary": "Hi guy, before continuing with the operators, today I want to explain the Marble Diagrams. The Marble...", "date_modified": "2021-09-13T05:59:11.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Guys and welcome back, today I introduce the concepts of Operators .\nOperators are functions. Isn't it easy? Operators are functions of two type...", "url": "https://playfulprogramming.com/posts/rxjs-operators-20mi", "title": "RxJS - Operators", "summary": "Hi Guys and welcome back, today I introduce the concepts of Operators. Operators are functions. Isn't...", "date_modified": "2021-09-10T04:53:36.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back guys,\ntoday the topics of the article are Observers and Subscriptions . Observer An observer is a consumer of values. An observer is s...", "url": "https://playfulprogramming.com/posts/rxjs-observer-and-subscription-5cg3", "title": "RxJS - Observer and Subscription", "summary": "Welcome back guys, today the topics of the article are Observers and Subscriptions. ...", "date_modified": "2021-09-08T05:31:15.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi Guys,\nToday I want to start a little series about Reactive Programming with RxJS .\nI start from the basic core concepts behind of this Programmi...", "url": "https://playfulprogramming.com/posts/rxjs-observable-597e", "title": "RxJS - Observable", "summary": "Hi Guys, Today I want to start a little series about Reactive Programming with RxJS. I start from the...", "date_modified": "2021-09-06T05:52:55.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "From time to time, we come across situations where the type isn't known beforehand, i.e. could be anything. Before TS v3, we would use the any type...", "url": "https://playfulprogramming.com/posts/typescript-why-you-should-use-unknown-instead-of-any-2ccc", "title": "Typescript: why you should use unknown instead of any", "summary": "From time to time, we come across situations where the type isn't known beforehand, i.e. could be...", "date_modified": "2021-09-02T08:53:53.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Marko recently released a preview for its upcoming Tags API . This is pretty exciting as it adds a minimal API layer over Marko 's state management...", "url": "https://playfulprogramming.com/posts/taking-marko-s-tags-api-for-a-test-drive-2n6i", "title": "Taking Marko's Tags API for a Test Drive", "summary": "Marko recently released a preview for its upcoming Tags API. This is pretty exciting as it adds a...", "date_modified": "2021-08-31T19:27:23.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Photo by SIMON LEE on Unsplash Forms can be complicated Seriously. I feel like the days of wysiwig forms are over. Long gone are the days where we ...", "url": "https://playfulprogramming.com/posts/reactive-forms-in-angular-cel", "title": "Reactive Forms in Angular", "summary": "Photo by SIMON LEE on Unsplash Forms can be complicated Seriously. I feel like the days...", "date_modified": "2021-08-26T13:43:08.000Z", "author": { "name": "Chandler Baskins", "url": "https://playfulprogramming.com/unicorns/chandlerbaskins" } }, { "content_html": "In the spirit of my last few articles, where we have looked into Template Literal Types and Types and Mocking , we are going to dissect another top...", "url": "https://playfulprogramming.com/posts/type-narrowing-in-typescript-3bdp", "title": "Type Narrowing in TypeScript", "summary": "In the spirit of my last few articles, where we have looked into Template Literal Types and Types and...", "date_modified": "2021-08-26T09:41:32.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Cover photo by Michael Burrows on Pexels. End-to-end tests are relatively slow and with a large test suite, it is very valuable to be able to run o...", "url": "https://playfulprogramming.com/posts/filtering-protractor-end-to-end-tests-with-angular-cli-1don", "title": "Filtering Protractor end-to-end tests with Angular CLI", "summary": "Demonstrating the \"grep\" and \"invertGrep\" test filtering options of Angular CLI's Protractor builder.", "date_modified": "2021-08-25T20:01:40.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "With software development, we are often presented with alternative choices for libraries and tools that appear to accomplish the same sort of thing...", "url": "https://playfulprogramming.com/posts/javascript-vs-javascript-fight-53fa", "title": "JavaScript vs JavaScript. Fight!", "summary": "With software development, we are often presented with alternative choices for libraries and tools...", "date_modified": "2021-08-19T14:12:54.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "When we create a component, you can reuse it in some places, and his style should also relate to his container or the context. We use the host-cont...", "url": "https://playfulprogramming.com/posts/how-theme-child-components-in-angular-using-host-context-3mnh", "title": "How to create theme relation between components in Angular", "summary": "When we create a component, you can reuse it in some places, and his style should also relate to his...", "date_modified": "2021-08-04T07:28:16.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "When we build components it needs to be flexible, because they can be used in many places or contexts, sometimes change layout and colors. For exam...", "url": "https://playfulprogramming.com/posts/how-to-theme-components-in-angular-2c9h", "title": "How to theme components in Angular", "summary": "When we build components it needs to be flexible, because they can be used in many places or...", "date_modified": "2021-08-02T11:27:02.000Z", "author": { "name": "Dany Paredes", "url": "https://playfulprogramming.com/unicorns/danywalls" } }, { "content_html": "GitHub Copilot was recently announced! In the past few years, we’ve seen artificial intelligence (AI) revolutionize aspects of technology such as i...", "url": "https://playfulprogramming.com/posts/github-copilot-breaks-bad-interviews", "title": "GitHub Copilot Breaks Bad Interviews", "summary": "GitHub Copilot is a huge step forward for tech. Luckily, it improves our lives. Unfortunately, it will break your interviews. Here's why.", "date_modified": "2021-07-22T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Svelte is an amazing JavaScript framework that has been getting a lot of attention the last year. While it has been around since late 2016 it has r...", "url": "https://playfulprogramming.com/posts/3-lessons-from-react-that-can-make-you-a-better-svelte-developer-23c4", "title": "3 Lessons from React that can make you a better Svelte Developer", "summary": "Svelte is an amazing JavaScript framework that has been getting a lot of attention the last year....", "date_modified": "2021-07-22T18:01:14.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Docker development containers enable developers to set up development environment faster and consistently. With docker development containers, you ...", "url": "https://playfulprogramming.com/posts/my-impressions-of-docker-development-containers-23d4", "title": "My Impressions of Docker Development Containers", "summary": "Docker development containers enable developers to set up development environment faster and...", "date_modified": "2021-07-22T13:49:54.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Many modern web apps today are built using components. While frameworks like React exist to add an implementation, web components seek to make thos...", "url": "https://playfulprogramming.com/posts/intro-to-web-components-vanilla-js", "title": "Web Components 101: Vanilla JS", "summary": "One of the ways web components differs from a framework is that it works right in the browser. Here's how to build them from scratch.", "date_modified": "2021-07-15T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "There was a time that I would have never imagined the need to write an article like this. If you were to ask someone how a website worked, even 10 ...", "url": "https://playfulprogramming.com/posts/building-javascript-frameworks-to-conquer-ecommerce-3glc", "title": "Building JavaScript Frameworks to Conquer eCommerce", "summary": "There was a time that I would have never imagined the need to write an article like this. If you were...", "date_modified": "2021-07-14T14:42:07.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Last week we released SolidJS 1.0 . A JavaScript framework built on a foundation of ideas long ago dismissed, that accomplishes what some thought t...", "url": "https://playfulprogramming.com/posts/javascript-frameworks-and-metagaming-pb5", "title": "JavaScript Frameworks and Metagaming", "summary": "Last week we released SolidJS 1.0. A JavaScript framework built on a foundation of ideas long ago...", "date_modified": "2021-07-06T15:14:07.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "With my focus recently going back to look at optimization for the Solid 1.0 release, I thought I'd revisit my The Real Cost of UI Components articl...", "url": "https://playfulprogramming.com/posts/the-real-cost-of-ui-components-revisited-4d23", "title": "The Real Cost of UI Components Revisited", "summary": "With my focus recently going back to look at optimization for the Solid 1.0 release, I thought I'd...", "date_modified": "2021-06-25T16:21:18.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "In this article, we will take a closer look at template literal types and how you can take advantage of them in your day-to-day activities as a dev...", "url": "https://playfulprogramming.com/posts/template-literal-types-in-typescript-4fe8", "title": "Template Literal Types in TypeScript", "summary": "In this article, we will take a closer look at template literal types and how you can take advantage...", "date_modified": "2021-06-24T06:39:45.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "In this article, we will learn how to extend Scully functionality through plugins. We will do this by building an RSS Plugin. This plugin will gene...", "url": "https://playfulprogramming.com/posts/building-an-rss-scully-plugin-angular-1lg", "title": "Building an RSS Scully Plugin - Angular", "summary": "In this article, we will learn how to extend Scully functionality through plugins. We will do this by...", "date_modified": "2021-06-17T07:06:05.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "In this article, we are going to learn how to create functions which are easy to test and mock using TypeScript utility types. Let's take the follo...", "url": "https://playfulprogramming.com/posts/types-and-mocking-typescript-1m00", "title": "Types and Mocking - Typescript", "summary": "In this article, we are going to learn how to create functions which are easy to test and mock using...", "date_modified": "2021-06-09T06:53:47.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "In 2017 Tom Dale, wrote Compilers are the New Frameworks . And he was right. In 2017 things were already heading that way and have only continued o...", "url": "https://playfulprogramming.com/posts/a-look-at-compilation-in-javascript-frameworks-3caj", "title": "A Look at Compilation in JavaScript Frameworks", "summary": "In 2017 Tom Dale, wrote Compilers are the New Frameworks. And he was right. In 2017 things were alrea...", "date_modified": "2021-06-01T21:58:09.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Cover photo by Ian Schneider on Unsplash. Hey everyone, my name is Santosh. In this article, I will tell you how I ramped up my career and ended up...", "url": "https://playfulprogramming.com/posts/my-developer-journey-how-i-went-from-making-1-000-to-better-salary-11om", "title": "My Developer Journey – How I Went from Making $1,000 to Better Salary", "summary": "Cover photo by Ian Schneider on Unsplash. Hey everyone, my name is Santosh. In this article, I will...", "date_modified": "2021-05-31T17:35:32.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "If you’ve come across this article but haven't heard about web accessibility (often shortened to \"A11Y\") before, that's okay. We're all learning at...", "url": "https://playfulprogramming.com/posts/intro-to-web-accessibility", "title": "Introduction to Web Accessibility (A11Y)", "summary": "Accessibility allows as many people to use your product as possible. That, in turn, generates more profit. Here's how to improve it on web.", "date_modified": "2021-05-30T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Interviewing for frontend engineering positions can be difficult. There’s a lot to keep in mind for any interview, but frontend interviews always s...", "url": "https://playfulprogramming.com/posts/how-to-interview-frontend-engineers", "title": "How to Interview Frontend Engineers", "summary": "Interviewing for frontend engineering positions can be difficult. Let's walk through some things you should focus on while interviewing.", "date_modified": "2021-05-28T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In this episode of Nx After Dark, we're creating an Nx workspace for an Angular 12 app called Energy Insights. We're also setting up a GitHub Actio...", "url": "https://playfulprogramming.com/posts/setting-up-an-angular-12-workspace-with-nx-and-github-actions-32l5", "title": "Setting up an Angular 12 workspace with Nx and GitHub Actions", "summary": "Setting up an Angular 12 workspace with Nx. Also setting up a GitHub Actions CI workflow with Nx Cloud support.", "date_modified": "2021-05-21T13:21:54.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "I decided to do a quick tally and I realized I've written almost 70 articles in the last 2 and a half years. That's a lot of material. I've learned...", "url": "https://playfulprogramming.com/posts/two-years-of-writing-about-designing-javascript-frameworks-2018-2020-3ha5", "title": "Two Years of Writing about Designing JavaScript Frameworks (2018-2020)", "summary": "I decided to do a quick tally and I realized I've written almost 70 articles in the last 2 and a half...", "date_modified": "2021-05-19T14:28:18.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "A couple of years ago in the The Real Cost of UI Components , I explored the cost of components in JavaScript frameworks. I asked whether component...", "url": "https://playfulprogramming.com/posts/components-are-pure-overhead-hpm", "title": "Components are Pure Overhead", "summary": "A couple of years ago in the The Real Cost of UI Components, I explored the cost of components in Jav...", "date_modified": "2021-05-10T17:13:15.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Python list comprehensions allow for powerful and readable list mutations. In this article, we'll learn many different ways in how they can be used...", "url": "https://playfulprogramming.com/posts/python-list-comprehension-guide", "title": "Python List Comprehension - The Comprehensive Guide", "summary": "Python is a language with broad and powerful APIs. One such API is 'List Comprehensions'. Let's learn to use them to improve your code!", "date_modified": "2021-05-07T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In this episode of Nx After Dark, we're creating an Nx workspace for .NET project by using nx-dotnet . We're also setting up a GitHub Actions workf...", "url": "https://playfulprogramming.com/posts/setting-up-an-nx-workspace-with-nx-dotnet-893", "title": "Setting up an Nx workspace with nx-dotnet", "summary": "Setting up an Nx workspace for .NET development with nx-dotnet. Also setting up a GitHub Actions CI workflow.", "date_modified": "2021-05-05T21:56:13.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Every once in a while, you end up in a situation where you need some variation of a type. For instance, you might want to omit some keys, retain so...", "url": "https://playfulprogramming.com/posts/transforming-types-in-typescript-with-utility-types-3mhl", "title": "Transforming Types in TypeScript with Utility Types", "summary": "Every once in a while, you end up in a situation where you need some variation of a type. For instanc...", "date_modified": "2021-05-05T17:44:10.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "Tech recruiting is difficult. Interviews are tricky for candidates - and for interviewers. One of the untold challenges of interviewing is knowing ...", "url": "https://playfulprogramming.com/posts/corbin-advice-to-technical-interviewers", "title": "My Advice to Technical Interviewers", "summary": "Interviewing candidates is tough. It just is. Here are just a few of my tips to make your tech recruiting go smoother.", "date_modified": "2021-05-03T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Zero JavaScript has been the new buzz phrase around JavaScript libraries for the last little while. And I think it's time to address the elephant (...", "url": "https://playfulprogramming.com/posts/is-0kb-of-javascript-in-your-future-48og", "title": "Is 0kb of JavaScript in your Future?", "summary": "Zero JavaScript has been the new buzz phrase around JavaScript libraries for the last little while....", "date_modified": "2021-05-03T14:27:12.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Cover photo by Le Wagon on Unsplash. This is Learning is an independent community of tech writers and content creators. We're a diverse and inclusi...", "url": "https://playfulprogramming.com/posts/welcome-to-this-is-learning-an-invitation-to-our-open-tech-authors-community-22e4", "title": "Welcome to This is Learning—an invitation to our open tech authors community", "summary": "This is Learning is the place to share what you learn. Welcome!", "date_modified": "2021-05-03T05:28:38.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "As with any form of programming, there are dozens of ways to manage data inside a React application. That said, not all methods are equally capable...", "url": "https://playfulprogramming.com/posts/master-react-unidirectional-data-flow", "title": "Master React Unidirectional Data Flow", "summary": "Making sure your app's code is structured well is critical. Mastering React Unidirectionality is a huge part of that. Learn how to here.", "date_modified": "2021-04-27T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Have you ever created a new library? You saw a gap when creating a project at work. So you worked on it for months, and are pretty excited about th...", "url": "https://playfulprogramming.com/posts/of-chickens-and-pigs-the-dilemma-of-creator-self-promotion-51ea", "title": "Of Chickens and Pigs - The Dilemma of Creator Self Promotion", "summary": "Have you ever created a new library? You saw a gap when creating a project at work. So you worked on...", "date_modified": "2021-04-22T18:18:01.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "In this article, we are going to learn how you can speed your Scully builds by re-using Angular build artifacts in GitHub Actions. In order to stat...", "url": "https://playfulprogramming.com/posts/speeding-up-angular-scully-builds-in-github-actions-559g", "title": "Speeding Up Angular Scully Builds in GitHub Actions", "summary": "In this article, we are going to learn how you can speed your Scully builds by re-using Angular build...", "date_modified": "2021-04-19T07:38:45.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "If you’ve been active in the programming community within the past few years, you’ve undoubtedly heard of Rust . Its technical foundation and vibra...", "url": "https://playfulprogramming.com/posts/rust-enums-matching-options-api", "title": "Rust Enums, Matching, & Options API", "summary": "Rust allows you to build super-fast and flexible applications. Let's build one leveraging enums, pattern matching, and the Options API.", "date_modified": "2021-04-16T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "The plugin architecture is a well-known software design pattern used for its flexibility, extensibility, and isolation. It consists of a core syste...", "url": "https://playfulprogramming.com/posts/plugin-architecture-for-angular-libraries-using-dependency-injection-5d8k", "title": "Plugin Architecture for Angular Libraries using Dependency Injection", "summary": "The plugin architecture is a well-known software design pattern used for its flexibility, extensibili...", "date_modified": "2021-04-06T19:43:00.000Z", "author": { "name": "Nacho Vazquez", "url": "https://playfulprogramming.com/unicorns/naxodev" } }, { "content_html": "In this article, I wish to finally address the question \"What is Solid not as good at?\" The list might not be very long but it exists. No tool is t...", "url": "https://playfulprogramming.com/posts/5-places-solidjs-is-not-the-best-5019", "title": "5 Places SolidJS is not the Best", "summary": "In this article, I wish to finally address the question \"What is Solid not as good at?\" The list migh...", "date_modified": "2021-04-06T16:24:00.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "This article is part of the Angular Architectural Patterns series. Grouping Folders in an Nx and Monorepo context are folders that only contain oth...", "url": "https://playfulprogramming.com/posts/semantic-grouping-folders-with-nx-3467", "title": "Semantic Grouping Folders with Nx", "summary": "Photo by Barn Images on Unsplash This article is part of the Angular Architectural Patterns s...", "date_modified": "2021-04-06T05:30:07.000Z", "author": { "name": "Nacho Vazquez", "url": "https://playfulprogramming.com/unicorns/naxodev" } }, { "content_html": "If you're new to web development, it can be difficult to figure out when (and how) to use the package manager most commonly used to install app dep...", "url": "https://playfulprogramming.com/posts/how-to-use-npm", "title": "WebDev 101: How to use npm and Yarn", "summary": "You've heard a lot about Node, NPM, and Yarn - but aren't sure what they are. Let's introduce them in-depth and answer questions about them!", "date_modified": "2021-04-05T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Hi guy and welcome back :)\nToday I'll talk about the Rest Parameters and the Rest Arguments.\nSometimes we need to write a simple code like this: fu...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-rest-parameters-rest-arguments-4jl7", "title": "Typescript - Tips & Tricks - Rest Parameters & Rest Arguments", "summary": "Hi guy and welcome back :) Today I'll talk about the Rest Parameters and the Rest...", "date_modified": "2021-04-02T06:11:02.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "This is my personal journey, so if you are here hoping for the general \"How To\" guide you won't find it here. Instead, if you are interested in how...", "url": "https://playfulprogramming.com/posts/learning-to-appreciate-react-server-components-49ka", "title": "Learning to Appreciate React Server Components", "summary": "This is my personal journey, so if you are here hoping for the general \"How To\" guide you won't find...", "date_modified": "2021-03-31T17:46:07.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Original cover photo by Edgar Chaparro on Unsplash. Original publication date: 2020-05-22. This tutorial is part of the Angular Architectural Patte...", "url": "https://playfulprogramming.com/posts/how-to-set-up-an-nx-style-monorepo-workspace-with-the-angular-cli-part-5-2hk7", "title": "How to set up an Nx-style monorepo workspace with the Angular CLI: Part 5", "summary": "In the final part of this tutorial, we create the seatmap data access, seat listing feature, shared buttons UI, and shared formatting utilities library. Finally, we compare our approach with the full Nx toolchain.", "date_modified": "2021-03-31T12:15:31.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Edgar Chaparro on Unsplash. Original publication date: 2020-05-19. This tutorial is part of the Angular Architectural Patte...", "url": "https://playfulprogramming.com/posts/how-to-set-up-an-nx-style-monorepo-workspace-with-the-angular-cli-part-4-2coa", "title": "How to set up an Nx-style monorepo workspace with the Angular CLI: Part 4", "summary": "In Part 4 of this tutorial, we create the check-in data access and check-in feature shell libraries. We create the check-in desktop application, review and verify how much our tool automated and finally create the mobile check-in application.", "date_modified": "2021-03-31T12:15:22.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Edgar Chaparro on Unsplash. Original publication date: 2020-05-15. This tutorial is part of the Angular Architectural Patte...", "url": "https://playfulprogramming.com/posts/how-to-set-up-an-nx-style-monorepo-workspace-with-the-angular-cli-part-3-4bb6", "title": "How to set up an Nx-style monorepo workspace with the Angular CLI: Part 3", "summary": "In Part 3 of this tutorial, we create the passenger info and flight search feature libraries. We use the generate project tool to create the mobile booking application and its test project. Finally, we create a mobile version of the flight search component template.", "date_modified": "2021-03-31T12:15:14.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Edgar Chaparro on Unsplash. Original publication date: 2020-05-12. This tutorial is part of the Angular Architectural Patte...", "url": "https://playfulprogramming.com/posts/how-to-set-up-an-nx-style-monorepo-workspace-with-the-angular-cli-part-2-1e2j", "title": "How to set up an Nx-style monorepo workspace with the Angular CLI: Part 2", "summary": "In Part 2 of this tutorial, we'll set up our custom generate project tool and create the shared and booking data access libraries with NgRx. To honor the flow of dependencies, we extract a shared environments library.", "date_modified": "2021-03-31T12:15:06.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Edgar Chaparro on Unsplash. Original publication date: 2020-05-10. The Nx toolchain by Nrwl helps us work in a so-called wo...", "url": "https://playfulprogramming.com/posts/how-to-set-up-an-nx-style-monorepo-workspace-with-the-angular-cli-part-1-16b5", "title": "How to set up an Nx-style monorepo workspace with the Angular CLI: Part 1", "summary": "In this step-by-step tutorial, we set up an Nx-style monorepo workspace with the Angular CLI. In this first part, we create an application project, an end-to-end test project, and a feature shell library.", "date_modified": "2021-03-31T12:14:53.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Hi Guys,\nToday I'll show you some advanced utilities exposed by the typescript language.\nLet's start! Utilities for Types Partial This utility allo...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-advanced-types-3pp8", "title": "Typescript - Tips & Tricks - Advanced Types", "summary": "Hi Guys, Today I'll show you some advanced utilities exposed by the typescript language. Let's...", "date_modified": "2021-03-31T06:06:58.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "In this article, we are going to look at how we can build a webhook to trigger a GitHub action workflow manually. This can be especially useful whe...", "url": "https://playfulprogramming.com/posts/github-actions-trigger-via-webhooks-28dg", "title": "GitHub Actions Trigger Via Webhooks", "summary": "In this article, we are going to look at how we can build a webhook to trigger a GitHub action workfl...", "date_modified": "2021-03-29T12:01:29.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "In some cases, we need to manipulate some types to create new types. In these cases, we have to use the Mapped Types.\nLet's start explaining the st...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-mapped-types-5bkn", "title": "Typescript - Tips & Tricks - Mapped Types", "summary": "In some cases, we need to manipulate some types to create new types. In these cases, we have to use...", "date_modified": "2021-03-29T06:03:18.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Today I talk about the infer keyword.\nSometimes, we need to get the value type of an array or get the return type of a function. To do this I need ...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-infer-keyword-23pf", "title": "Typescript - Tips & Tricks - infer keyword", "summary": "Today I talk about the infer keyword. Sometimes, we need to get the value type of an array or get the...", "date_modified": "2021-03-26T06:50:57.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Cover photo by Cassey Cambridge on Pixy. Original publication date: 2020-03-28. Updated for Angular CDK and Angular Material version 9.2. A compone...", "url": "https://playfulprogramming.com/posts/create-a-component-harness-for-your-tests-with-angular-cdk-46bg", "title": "Create a component harness for your tests with Angular CDK", "summary": "Learn how to create and consume a custom component harness using Angular CDK. With a step-by-step case study, we run it in unit tests and end-to-end tests.", "date_modified": "2021-03-24T15:04:50.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by John Moeses Bauan on Unsplash. Original publication date: 2020-03-23. This article is part of the Angular Architectural Patterns ser...", "url": "https://playfulprogramming.com/posts/tiny-angular-application-projects-in-nx-workspaces-229a", "title": "Tiny Angular application projects in Nx workspaces", "summary": "Extract workspace libraries to get tiny Angular application projects. We'll create assets, styles, and environments libraries for an Nx workspace. Step-by-step commands and instructions.", "date_modified": "2021-03-24T14:43:24.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Pixabay on Pexels. Original publication date: 2020-02-06. 🇪🇸 Spanish version by Alberto Basalo Ivy is enabled by default In previo...", "url": "https://playfulprogramming.com/posts/a-look-at-major-features-in-the-angular-ivy-version-9-release-4dn7", "title": "A look at major features in the Angular Ivy version 9 release", "summary": "AOT everywhere, dynamic globalisation, strict mode, Bazel, and much more.", "date_modified": "2021-03-24T14:29:14.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Science in HD on Unsplash. Original publication date: 2020-01-27. The Angular Ivy version 9 release comes with major testing additio...", "url": "https://playfulprogramming.com/posts/next-level-testing-in-angular-ivy-version-9-25oc", "title": "Next-level testing in Angular Ivy version 9", "summary": "AOT, faster tests, stronger types, and component harnesses.", "date_modified": "2021-03-24T14:18:32.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Goh Rhy Yan on Unsplash. Original publication date: 2020-01-20. In the Template Compiler and View Engine era of Angular, published l...", "url": "https://playfulprogramming.com/posts/the-angular-ivy-guide-for-library-authors-9md", "title": "The Angular Ivy guide for library authors", "summary": "How to respond to Angular Ivy in 2020/2021 if you're a library author.", "date_modified": "2021-03-24T14:08:51.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Pixabay on Pexels. Original publication date: 2019-12-26. The Angular Ivy runtime introduces a new concept called component features...", "url": "https://playfulprogramming.com/posts/component-features-with-angular-ivy-213h", "title": "Component features with Angular Ivy", "summary": "The Angular Ivy runtime introduces a new concept called component features. Component features are mixins for components. They add, remove or modify traits at runtime.", "date_modified": "2021-03-24T13:59:36.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Experimental props. Cover photo by rawpixel.com on Pexels. Original publication date: 2019-05-07. Using the power of Angular’s dependency injection...", "url": "https://playfulprogramming.com/posts/faking-dependencies-in-angular-applications-4d2f", "title": "Faking dependencies in Angular applications", "summary": "Create components and directives for manual tests.", "date_modified": "2021-03-24T13:44:32.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Let’s prepare our experimental gear. Cover photo by deepakrit on Pixabay. Original publication date: 2019-04-29. Dependency injection is a key feat...", "url": "https://playfulprogramming.com/posts/testing-and-faking-angular-dependencies-p9i", "title": "Testing and faking Angular dependencies", "summary": "Learn the ins an outs of Angular dependency injection in automated tests.", "date_modified": "2021-03-24T13:34:23.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "We want our components to be lean, mean Angular-powered machines. Cover photo by Alessandro Ranica on Unsplash. Original publication date: 2019-09-...", "url": "https://playfulprogramming.com/posts/lean-angular-components-1abl", "title": "Lean Angular components", "summary": "Building a robust component architecture.", "date_modified": "2021-03-24T12:43:12.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "In some cases, we need to detect if an object/type has specific properties or characteristics.\nLet me show you a simple case type TypeName =\n ...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-conditional-type-5gll", "title": "Typescript - Tips & Tricks - Conditional Type", "summary": "In some cases, we need to detect if an object/type has specific properties or characteristics. Let me...", "date_modified": "2021-03-24T07:10:26.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "My recent article How React is not reactive, and why you shouldn't care opened up a much larger debate on the definition of reactive programming in...", "url": "https://playfulprogramming.com/posts/what-the-hell-is-reactive-programming-anyway-31p5", "title": "What the hell is Reactive Programming anyway?", "summary": "My recent article How React is not reactive, and why you shouldn't care opened up a much larger debat...", "date_modified": "2021-03-23T08:10:18.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Presenters are component level services that encapsulate complex presentational logic and user interaction. They can be platform- or framework-agno...", "url": "https://playfulprogramming.com/posts/presenters-with-angular-2l7l", "title": "Presenters with Angular", "summary": "Learn how to extract presenters from presentational components. We discuss stateful and stateless presenters, component-to-presenter ratios and when to use a component or a pipe instead of a presenter.", "date_modified": "2021-03-22T21:49:28.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Jessica Ruscello on Unsplash. Original publication date: 2020-03-31. Presentational components are literally the user interface of o...", "url": "https://playfulprogramming.com/posts/presentational-components-with-angular-3961", "title": "Presentational components with Angular", "summary": "Presentational components encapsulate presentation and UI behaviour. They can be stateful or stateless and are connected to the application state through their data binding API.", "date_modified": "2021-03-22T21:35:55.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Liquid samples in a laboratory. Cover photo by Louis Reed on Unsplash. Original publication date: 2018-11-19. To test a container component, we wil...", "url": "https://playfulprogramming.com/posts/testing-angular-container-components-33io", "title": "Testing Angular container components", "summary": "Learn tactics for testing RxJS observables and application state commands. Opt out of Angular testing modules for blazingly fast unit tests.", "date_modified": "2021-03-22T21:06:02.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "There are some cases, where we need to detect the type of the object to get the correct implementation of our method.\nLet me show you a case type S...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-type-guard-50e5", "title": "Typescript - Tips & Tricks - Type Guard", "summary": "There are some cases, where we need to detect the type of the object to get the correct...", "date_modified": "2021-03-22T07:13:17.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "There are times that we need to create some assertions to be sure an object respects some rules.\nA common case is to check if an object is defined;...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-assert-function-29kj", "title": "Typescript - Tips & Tricks - Assert Function", "summary": "There are times that we need to create some assertions to be sure an object respects some rules. A...", "date_modified": "2021-03-19T07:13:10.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "If the title agrees with you, you can stop reading right now. Move on to the next article. In technology, we tend to grab on to differences to come...", "url": "https://playfulprogramming.com/posts/how-react-isn-t-reactive-and-why-you-shouldn-t-care-152m", "title": "How React isn't reactive, and why you shouldn't care", "summary": "If the title agrees with you, you can stop reading right now. Move on to the next article. In technol...", "date_modified": "2021-03-18T14:41:16.000Z", "author": { "name": "Ryan Carniato", "url": "https://playfulprogramming.com/unicorns/ryansolid" } }, { "content_html": "Today I want to talk about the never type .\nAs you can understand, this type identifies a piece of code that will never be executed or represents a...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-never-type-5f0p", "title": "Typescript - Tips & Tricks - Never type", "summary": "Today I want to talk about the never type. As you can understand, this type identifies a piece of...", "date_modified": "2021-03-17T07:07:35.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "In some cases, you have a field that you initialize in a method, and if you follow the flow of the code you are sure that this field is initialized...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-non-null-assertion-operator-21eb", "title": "Typescript - Tips & Tricks - Non-null assertion operator", "summary": "In some cases, you have a field that you initialize in a method, and if you follow the flow of the...", "date_modified": "2021-03-15T07:13:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Tuple types allow you to express an array with a fixed number of elements whose types are known, but need not be the same.\nThis definition is picki...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-tuple-3ep7", "title": "Typescript - Tips & Tricks - Tuple", "summary": "Tuple types allow you to express an array with a fixed number of elements whose types are known, but...", "date_modified": "2021-03-12T07:10:33.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Cover photo by Helena Lopes on Unsplash. \"You should always try to be a better person than you were yesterday.\" I genuinely believe in the above qu...", "url": "https://playfulprogramming.com/posts/how-empathy-from-my-manager-changed-my-life-1ac0", "title": "How empathy from my manager changed my life", "summary": "Cover photo by Helena Lopes on Unsplash. \"You should always try to be a better person than you were...", "date_modified": "2021-03-10T10:14:50.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "function sortAndReverse(list: number[]): number[] {\n return list.sort().reverse();\n}\n\nconst list = [1, 4, 5, 2];\nsortAndReverse(list);\nconsole.log...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-readonly-array-jg2", "title": "Typescript - Tips & Tricks - Readonly Array", "summary": "function sortAndReverse(list: number[]): number[] { return list.sort().reverse(); } const list =...", "date_modified": "2021-03-10T07:21:31.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "In this article, we are going to take a look at the Platform Module from Angular CDK. The platform module provides you with information about the c...", "url": "https://playfulprogramming.com/posts/angular-cdk-platform-module-2pac", "title": "Angular CDK - Platform Module", "summary": "In this article, we are going to take a look at the Platform Module from Angular CDK. The platform mo...", "date_modified": "2021-03-08T16:46:09.000Z", "author": { "name": "Maina Wycliffe", "url": "https://playfulprogramming.com/unicorns/mainawycliffe" } }, { "content_html": "How many times we expect an object property to have a value but it isn't? In these cases, unfortunately, we spend a lot of time searching for who c...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-readonly-modifier-52pp", "title": "Typescript - Tips & Tricks - readonly modifier", "summary": "How many times we expect an object property to have a value but it isn't? In these cases,...", "date_modified": "2021-03-08T07:20:08.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back guys, today I'll speak about the \"Index Signature\" .\nIn some cases, we need to create some special types like dictionaries.\nThese spec...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-index-signature-2og6", "title": "Typescript - Tips & Tricks - Index Signature", "summary": "Welcome back guys, today I'll speak about the \"Index Signature\". In some cases, we need to create...", "date_modified": "2021-03-05T07:16:45.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi guys and welcome back,\nToday I'll talk about the optional modifier.\nSometimes we have objects that have some optional properties.\nIn these cases...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-optional-modifier-48pg", "title": "Typescript - Tips & Tricks - Optional modifier", "summary": "Hi guys and welcome back, Today I'll talk about the optional modifier. Sometimes we have objects that...", "date_modified": "2021-03-03T07:03:28.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi guys, today I'll talk about the difference between any and unknown . Any Any type is a particular type in typescript.\nIf you use this type, the ...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-any-vs-unknown-2ho6", "title": "Typescript - Tips & Tricks - any vs. unknown", "summary": "Hi guys, today I'll talk about the difference between any and unknown. Any Any type is a particular...", "date_modified": "2021-03-01T07:11:42.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hello everybody and welcome back, today I'll talk about this parameter . Sometimes we need to create functions that have to know the context to run...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-this-parameter-7n6", "title": "Typescript - Tips & Tricks - this parameter", "summary": "Hello everybody and welcome back, today I'll talk about this parameter. Sometimes we need to create...", "date_modified": "2021-02-26T07:04:34.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back, guys!\nThe topic of today is Overloaded Functions . All self-respecting programming languages ​​have overloaded functions, so typescri...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-overloaded-functions-f75", "title": "Typescript - Tips & Tricks - Overloaded Functions", "summary": "Welcome back, guys! The topic of today is Overloaded Functions. All self-respecting programming...", "date_modified": "2021-02-24T07:14:55.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Hi and welcome back!\nToday I talk about Union and Intersection . In some cases, we have to combine different types to create new types, or sometime...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-union-and-intersection-1a9l", "title": "Typescript - Tips & Tricks - Union and Intersection", "summary": "Hi and welcome back! Today I talk about Union and Intersection. In some cases, we have to combine...", "date_modified": "2021-02-22T07:08:00.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back!\nToday I'll talk about the keyof operator. This operator helps us to extract the object's properties such as Literal-types type Person...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-keyof-4an0", "title": "Typescript - Tips & Tricks - keyof", "summary": "Welcome back! Today I'll talk about the keyof operator. This operator helps us to extract the...", "date_modified": "2021-02-19T07:15:37.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Welcome back!\nToday I show you the Literal Types . This feature permits you to create a set of relationship values. type Direction = \"North\" | \"Sou...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-literal-types-10md", "title": "Typescript - Tips & Tricks - Literal Types", "summary": "Welcome back! Today I show you the Literal Types. This feature permits you to create a set of...", "date_modified": "2021-02-17T07:16:17.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Today I want to start a series of tips and tricks about Typescript.\nI will try to publish two/three tips & tricks a week.\nBefore start, I want to e...", "url": "https://playfulprogramming.com/posts/typescript-tips-tricks-typeof-nfi", "title": "Typescript - Tips & Tricks - typeof", "summary": "Today I want to start a series of tips and tricks about Typescript. I will try to publish two/three...", "date_modified": "2021-02-15T06:59:50.000Z", "author": { "name": "Luca Del Puppo", "url": "https://playfulprogramming.com/unicorns/puppo" } }, { "content_html": "Since I transitioned from working all day on my personal MacBook Pro to receiving a work computer for a new engineering position, I decided to go f...", "url": "https://playfulprogramming.com/posts/living-off-the-ipad-as-an-engineer", "title": "Living off the iPad as an Engineer", "summary": "Tips on how to get yourself a proper development environment on the iPad to fully exploit its potential.", "date_modified": "2021-02-11T00:00:00.000Z", "author": { "name": "Pierre Jacquier", "url": "https://playfulprogramming.com/unicorns/pierremtb" } }, { "content_html": "Standardised shipping containers. Photo by chuttersnap on Unsplash. Original publication date: 2018-11-06. With the Model-View-Presenter design pat...", "url": "https://playfulprogramming.com/posts/container-components-with-angular-4o05", "title": "Container components with Angular", "summary": "Container components are extracted from mixed Angular components to increase the maintainability, testability and scalability of our Angular apps.", "date_modified": "2020-12-30T00:32:09.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Some time ago, I received a bug report that, in short, said \"your class does not work with CRTP\". I was very confused by\nthis statement. First a sh...", "url": "https://playfulprogramming.com/posts/the-accidentally-sliced-crtp-base", "title": "The accidentally sliced CRTP base", "summary": "Some time ago, I received a bug report that, in short, said \"your class does not work with CRTP\". I was very confused by\nthis statement. First a sh...", "date_modified": "2020-12-22T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Where there's smoke, there's fire. Cover photo by blickpixel on Pixabay. In this article, we create a smoke test suite for Angular applications by ...", "url": "https://playfulprogramming.com/posts/50-lines-of-code-smoke-test-for-any-angular-application-1c0n", "title": "50 lines of code smoke test for any Angular application", "summary": "Where there's smoke, there's fire. Use this top-level integrated test suite for any Angular application.", "date_modified": "2020-12-20T22:47:47.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Carl Raw on Unsplash. Nx integrates ESLint to our web projects out-of-the-box, but how about linting stylesheets? There are...", "url": "https://playfulprogramming.com/posts/incremental-stylesheet-linting-with-stylelint-and-the-nx-toolchain-3f5g", "title": "Incremental stylesheet linting with Stylelint and the Nx toolchain", "summary": "Add and configure Stylelint. Then automate Stylelint workflows in your Nx workspace.", "date_modified": "2020-12-17T22:22:38.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Anastasia Taioglou on Unsplash. Updated to Nx version 11.0.18. Nx version 11 has built-in support for Angular version 11 and ESLint ...", "url": "https://playfulprogramming.com/posts/the-ultimate-migration-guide-to-angular-eslint-eslint-and-nx-11-1eh2", "title": "The ultimate migration guide to angular-eslint, ESLint and Nx 11", "summary": "How to set up a new Nx workspace using angular-eslint or migrate an existing Nx workspace from ESLint or TSLint.", "date_modified": "2020-12-13T23:30:20.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Programming terminology can be rather confusing. The first time I'd heard about \"React Refs\", it was in the context of getting a reference to a DOM...", "url": "https://playfulprogramming.com/posts/react-refs-complete-story", "title": "React Refs: The Complete Story", "summary": "React Refs are an immensely powerful, yet often misunderstood API. Let's learn what they're capable of, and how they're usually misused.", "date_modified": "2020-12-01T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "While working on my company's shared component system, I got a request from our design team. They wanted to keep our branding consistent with inter...", "url": "https://playfulprogramming.com/posts/angular-npm-font-usage", "title": "Package Font Files on NPM for Angular Usage", "summary": "Do you use custom fonts that you want to share with multiple apps? Learn how to distribute those fonts on NPM and consume them in Angular!", "date_modified": "2020-11-24T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "An engineering process. Cover photo by energepic.com on Pexels. Original publication date: 2018-10-17. 🇪🇸 Spanish version by Estefania Garcia Gal...", "url": "https://playfulprogramming.com/posts/model-view-presenter-with-angular-533h", "title": "Model-View-Presenter with Angular", "summary": "The MVP pattern increases separation of concerns, maintainability, testability and scalability in complex Angular apps by using container components, presentational components and presenters.", "date_modified": "2020-11-24T20:32:03.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Paul Green on Unsplash. Original publication date: 2019-01-22. Tree-shakable dependencies are easier to reason about and compile to ...", "url": "https://playfulprogramming.com/posts/tree-shakable-dependencies-in-angular-projects-1ifg", "title": "Tree-shakable dependencies in Angular projects", "summary": "Since Angular version 6, we can create tree-shakable dependencies and even leave out Angular modules.", "date_modified": "2020-11-22T22:37:58.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Organising your stuff feels good! Cover photo by Bynder on Unsplash. Original publication date: 2019-06-21. SCAMs (single component Angular modules...", "url": "https://playfulprogramming.com/posts/emulating-tree-shakable-components-using-single-component-angular-modules-13do", "title": "Emulating standalone components using single component Angular modules (SCAMs)", "summary": "SCAMs are a safe, View Engine-compatible migration path towards standalone components.", "date_modified": "2020-11-20T21:54:12.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "It’s time to revisit our Angular engine room. Cover photo by Gregory Butler on Pixabay Original publication date: 2019-02-11. NgModule is arguably ...", "url": "https://playfulprogramming.com/posts/angular-revisited-tree-shakable-components-and-optional-ngmodules-36d2", "title": "Angular Revisited: Standalone components and optional NgModules", "summary": "NgModule is arguably one of the most confusing Angular concepts.", "date_modified": "2020-11-20T21:24:56.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by falconp4 on Pixabay. Original publication date: 2020-05-21. The Deno CLI is a batteries included executable with everything...", "url": "https://playfulprogramming.com/posts/a-quick-overview-of-the-deno-cli-1pm5", "title": "A quick overview of the Deno CLI", "summary": "A quick introduction to the Deno CLI. It's a batteries included executable with everything you need to develop, lint, test, and run Deno code.", "date_modified": "2020-11-19T20:40:58.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Smalltalk was the incubator for Model-View-Controller and also played a role in Model-View-Presenter. Photo by Joey deVilla . Original publication ...", "url": "https://playfulprogramming.com/posts/the-history-of-model-view-presenter-420h", "title": "The history of Model-View-Presenter", "summary": "Dust off the history books and discover the origins of the MVP pattern.", "date_modified": "2020-11-18T11:05:09.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by bamagal on Unsplash. Original publication date: 2020-01-20. What are the toughest challenges for Angular in 2020? Ivy has taken up m...", "url": "https://playfulprogramming.com/posts/how-you-can-help-angular-in-2020-4535", "title": "How you can help Angular in 2020", "summary": "2020 is the year you can help the Angular ecosystem thrive.", "date_modified": "2020-11-18T10:34:08.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Liam Tucker on Unsplash. Original publication date: 2020-09-19. Route guards can prevent activating or deactivating specifi...", "url": "https://playfulprogramming.com/posts/testing-angular-route-guards-with-the-routertestingmodule-45c9", "title": "Testing Angular route guards with the RouterTestingModule", "summary": "Learn how to test route guards in isolated unit tests. Also learn how to test route guards in practice with RouterTestingModule.", "date_modified": "2020-11-16T21:05:46.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by PublicDomainPictures on Pixabay. Original publication date: 2020-06-02. Angular's RouterTestingModule can be used to test r...", "url": "https://playfulprogramming.com/posts/testing-routed-angular-components-with-the-routertestingmodule-1791", "title": "Testing routed Angular components with the RouterTestingModule", "summary": "Learn how to stub the ActivatedRoute for shallow routed component tests. Also learn to use the RouterTestingModule for integrated routed component tests.", "date_modified": "2020-11-16T21:05:34.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Original cover photo by Dele Oke on Unsplash. Original publication date: 2020-05-25. One of the use cases for Angular's RouterTestingModule is to t...", "url": "https://playfulprogramming.com/posts/testing-angular-routing-components-with-the-routertestingmodule-4cj0", "title": "Testing Angular routing components with the RouterTestingModule", "summary": "Learn how to implement shallow and integrated routing component tests with the RouterTestingModule. Explore the Location service and its dependencies.", "date_modified": "2020-11-16T20:06:22.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Last week I tweeted on Twitter how I am moving from a Slum where I lived for 29 years to a multi-story apartment on rent. The tech community on Twi...", "url": "https://playfulprogramming.com/posts/my-journey-into-tech-1l6d", "title": "My journey into Tech", "summary": "Last week I tweeted on Twitter how I am moving from a Slum where I lived for 29 years to a multi-stor...", "date_modified": "2020-10-17T19:25:27.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Last year I started working on the home setup, which I never thought would become my home office one day. I recently purchased a new Laptop for my ...", "url": "https://playfulprogramming.com/posts/my-home-office-setup-3l3f", "title": "My Home Office Setup", "summary": "Last year I started working on the home setup, which I never thought would become my home office one...", "date_modified": "2020-10-17T18:38:10.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "As with anything in engineering, picking the right package manager for a project can be highly situational. Even in the webdev space: we have the m...", "url": "https://playfulprogramming.com/posts/using-carthage-with-react-native", "title": "Adding Carthage Dependencies into React Native", "summary": "CocoaPods is a great dependency manager, but some need Carthage still. Let's walk through how to integrate Carthage with React Native!", "date_modified": "2020-10-13T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "During my time learning programming, I found myself lacking foundational knowledge about how a computer worked under-the-hood. It wasn't until much...", "url": "https://playfulprogramming.com/posts/how-computers-speak", "title": "How Computers Speak: Assembly to AST", "summary": "Have you wondered how programming languages are able to be ran on your hardware? This article explains how your code is processed and ran", "date_modified": "2020-08-25T04:45:30.247Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "A highly toxic environment. Cover photo by ATDSPHOTO on Pixabay. The views expressed in this opinion piece are entirely my own. They do not represe...", "url": "https://playfulprogramming.com/posts/no-i-don-t-want-to-become-an-angular-gde-2576", "title": "No, I don't want to become an Angular GDE", "summary": "An opinion piece on the Angular team and GDE program management.", "date_modified": "2020-07-21T10:57:15.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Pixabay on Pexels. The views expressed in this opinion piece are entirely my own. They do not represent any organization. You're goi...", "url": "https://playfulprogramming.com/posts/angular-struggles-in-2020-1po4", "title": "Angular struggles in 2020", "summary": "An opinion piece on the Angular team management.", "date_modified": "2020-07-21T00:44:29.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "A filename extension or file type is an identifier specified as a suffix to the name of computer file. - Wikipedia A long & terse explanation of a...", "url": "https://playfulprogramming.com/posts/what-do-files-extensions-do", "title": "What do file extensions do?", "summary": "A file extension isn't the only way a file is identified, so what does it do?", "date_modified": "2020-07-11T20:58:16.292Z", "author": { "name": "Robert Mennell", "url": "https://playfulprogramming.com/unicorns/skatcat31" } }, { "content_html": "Writing changelogs for a project can be tedious. Usually, this lengthy process would start with your project manager, organizing your tickets in th...", "url": "https://playfulprogramming.com/posts/setup-standard-version", "title": "Conventional Commits for Changelogs & Releases", "summary": "Whether creating changelogs or just keeping track of git tags, releases matter. Learn how to automate your release process with conventional-commits!", "date_modified": "2020-06-23T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "One of Angular's greatest strengths over its contemporaries like React or Vue is that it's a framework. What does this mean in the practical sense?...", "url": "https://playfulprogramming.com/posts/angular-components-control-value-accessor", "title": "Better Angular Forms with ngModel & formControl", "summary": "Some components make controlling their state easier with 'formControl' and 'ngModel'. Let's see how we can build our own!", "date_modified": "2020-06-09T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Every new C/C++ programmer will eventually reach the point at which they are forced to work with pointers and will undoubtedly realize that they ex...", "url": "https://playfulprogramming.com/posts/pointers-and-references-cpp", "title": "Pointers and References in C/C++", "summary": "An overview of how pointers and references function in C/C++", "date_modified": "2020-06-02T09:40:00.000Z", "author": { "name": "Sean Miller", "url": "https://playfulprogramming.com/unicorns/seanmiller" } }, { "content_html": "Writing tests is a part of programming and the skills that allow for good test writing are deviant from the typical programming skillset. This isn'...", "url": "https://playfulprogramming.com/posts/five-suggestions-for-simpler-tests", "title": "Write Simpler Tests - 5 Suggestions for Better Tests", "summary": "Writing tests is a big skill for any engineer, but we often over-complicate them. Let's simplify our tests for better testing overall!", "date_modified": "2020-05-26T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Memory in your standard computer works in a much more abstract and complex way then you would initially expect. I'm writing this from the point of ...", "url": "https://playfulprogramming.com/posts/virtual-memory-overview", "title": "Virtual Memory Overview", "summary": "An overview of how operating systems give processes their own address space.", "date_modified": "2020-05-19T12:45:00.000Z", "author": { "name": "Sean Miller", "url": "https://playfulprogramming.com/unicorns/seanmiller" } }, { "content_html": "Some evangelicals say that before code ever exists, there always needs to be a test to know how the code should be written. That frankly isn't true...", "url": "https://playfulprogramming.com/posts/writing-better-angular-tests", "title": "Writing better tests for Angular with Angular Testing Library", "summary": "A simple explination of writing better tests for Angular applications and setting up Angular Testing Library", "date_modified": "2020-05-12T04:45:30.247Z", "author": { "name": "Robert Mennell", "url": "https://playfulprogramming.com/unicorns/skatcat31" } }, { "content_html": "In the past, Android Studio did not support AMD's CPUs for hardware emulation of an Android device. That all changed in 2018 when Google added Hype...", "url": "https://playfulprogramming.com/posts/android-studio-setup-for-ryzen-cpus", "title": "Setup Android Studio Emulator for AMD Ryzen CPUs", "summary": "While the Android Emulator isn't confined to Intel CPUs anymore, it can be tricky to setup for AMD Ryzen CPUs. Let's explain how to do so.", "date_modified": "2020-05-05T13:45:00.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Here's a classic problem in Computer Science that is said to come up in various forms on programming interviews: given an 8 x 8 chessboard, a selec...", "url": "https://playfulprogramming.com/posts/chess-knight-problem", "title": "Chess Knight Problem: A Quick & Dirty JS Solution", "summary": "I present a quick and dirty solution to a common interview question where the solution is not nearly as complex as it may first appear.", "date_modified": "2020-04-29T12:27:06.284Z", "author": { "name": "Thomas Hodges", "url": "https://playfulprogramming.com/unicorns/thodges314" } }, { "content_html": "React is a powerful JavaScript library that can make front end magic happen on screen. If you are on the path to understanding components, props, a...", "url": "https://playfulprogramming.com/posts/keeping-api-keys-secret-in-react-apps", "title": "Keeping API Keys Secret in React Apps", "summary": "Save yourself money by hiding your API keys from prying eyes and nasty bots.", "date_modified": "2020-04-20T22:07:09.945Z", "author": { "name": "Micah Dutro", "url": "https://playfulprogramming.com/unicorns/MDutro" } }, { "content_html": "While working on my React Native mobile app , the super-talented designer for the project raised an interesting question to me: \"Are we able to dra...", "url": "https://playfulprogramming.com/posts/draw-under-navbar-using-react-native", "title": "Draw under the Android NavBar Using React Native", "summary": "Android allows you to draw content under the navigation bar. It's a neat effect! Let's add that to our React Native apps.", "date_modified": "2020-04-16T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "One of the hardest parts of any front-end application (native application or website alike) is the data layer. Where do I store information? That q...", "url": "https://playfulprogramming.com/posts/data-storage-options-in-react-native", "title": "Data Storage Options for React Native", "summary": "React Native contains multiple different ways you can persist data for your application. Let's look at the choices and their pros and cons.", "date_modified": "2020-04-14T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Ask any developer running a Linux or MacOS machine, and they'll be able to tell you what makes their systems such a strong contender for software d...", "url": "https://playfulprogramming.com/posts/ultimate-windows-development-environment-guide", "title": "The Ultimate Windows Development Environment Guide", "summary": "Many developers like MacOS or Linux for development environments, but don't know that Windows has plenty to offer. Become a Windows pro!", "date_modified": "2020-04-07T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In the last article in the series, we outlined what a packet architected network was, what the OSI layers represent, and demonstrated how we could ...", "url": "https://playfulprogramming.com/posts/networking-101-udp-and-tcp", "title": "Networking 101: UDP & TCP", "summary": "If networking is analogous to physical mail, then let's take a look at the letters being sent themselves. Let's dive into UDP and TCP", "date_modified": "2020-03-31T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "In recent years, projects like Vercel's NextJS and Gatsby have garnered acclaim and higher and higher usage numbers. Not only that, but their core ...", "url": "https://playfulprogramming.com/posts/what-is-ssr-and-ssg", "title": "What is Server Side Rendering (SSR) and Static Site Generation (SSG)?", "summary": "An explanation of what server-side rendering is, what static site generation is, and how you can utilize them in React, Angular, or Vue!", "date_modified": "2020-03-24T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "If you've ever used something like Gatsby or NuxtJS , you may already be familiar with Static Site Generation (SSG). If not, here's a quick rundown...", "url": "https://playfulprogramming.com/posts/making-an-angular-blog-with-scully", "title": "Building an Angular Blog With Scully", "summary": "NuxtJS and Gatsby allow you to make SSG-enabled blogs, but Angular doesn't have an equivalent... Until now. Let's build a blog with Scully!", "date_modified": "2020-03-17T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Networking is the foundation that all interactions on the internet are built upon. Every chat you send, every website you visit, every interaction ...", "url": "https://playfulprogramming.com/posts/basic-overview-of-packets-and-osi", "title": "Networking 101: A Basic Overview of Packets and OSI", "summary": "You use networking every day - even to read this! Let's dive into explaining how we send data across a network and what the OSI model is.", "date_modified": "2020-03-11T13:45:00.284Z", "author": { "name": "Kevin Mai", "url": "https://playfulprogramming.com/unicorns/reikaze" } }, { "content_html": "I talk to engineers; I talk to a lot of engineers. I've spoken to engineers from various backgrounds and various skillsets. We all have had to face...", "url": "https://playfulprogramming.com/posts/how-to-pick-tech-stacks-for-new-projects", "title": "How to Pick Tech Stacks For New Projects", "summary": "I often get asked \"How do you pick a tech stack for your projects?\". The answer is: outline what questions you should be asking early on.", "date_modified": "2020-03-02T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Modern-day remote live communication has never been as efficient or fast as it is today. Services like Slack make it easy to join huge multi-channe...", "url": "https://playfulprogramming.com/posts/making-a-slack-bot-with-node-and-mongo", "title": "Making a Slack Bot using NodeJS and MongoDB", "summary": "Join us as we teach you how to create a Slack bot from scratch using their Node SDK and MongoDB for persistence", "date_modified": "2020-02-18T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Cover photo by Sharon McCutcheon on Unsplash. Rubber duck debugging We all know rubber duck debugging. When forcing ourselves to simplify and expla...", "url": "https://playfulprogramming.com/posts/the-quantum-duck-debugging-theory-406d", "title": "The quantum duck debugging theory", "summary": "Quantum-entangled rubber duck debugging using real-life subjects. A theory by Michael Hladky.", "date_modified": "2020-02-13T20:22:19.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Before you read this article, I want to make it very clear, I am not blaming anyone here. Keeping this in mind, let’s move ahead. Background I have...", "url": "https://playfulprogramming.com/posts/time-for-employers-to-change-their-perspective-on-open-source-contribution-14lm", "title": "Time For Employers To Change Their Perspective On Open Source Contribution", "summary": "Before you read this article, I want to make it very clear, I am not blaming anyone here. Keeping thi...", "date_modified": "2020-02-04T08:21:34.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Debugging is one of the most difficult aspects of development. Regardless of skill level, experience, or general knowledge, every developer finds t...", "url": "https://playfulprogramming.com/posts/debugging-nodejs-programs-using-chrome", "title": "Debugging NodeJS Applications Using Chrome", "summary": "Learn how to interactively debug your NodeJS applications using a GUI-based debugger built into Chrome.", "date_modified": "2020-01-21T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Let’s see why we should and how we can use in-memory-db, you can access the source code on GitHub . Why Below are two scenarios where you may need ...", "url": "https://playfulprogramming.com/posts/using-in-memory-db-with-nestjs-50ih", "title": "Using in-memory-db With NestJS", "summary": "Let’s see why we should and how we can use in-memory-db, you can access the source code on GitHub....", "date_modified": "2020-01-14T18:20:24.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "In my previous piece, we discussed NestJS services. In this piece, we’ll look at the injection scope. Provider Scope There are three modes to defin...", "url": "https://playfulprogramming.com/posts/a-deep-dive-into-the-nestjs-injection-scope-39ih", "title": "A Deep Dive Into the NestJS Injection Scope", "summary": "In my previous piece, we discussed NestJS services. In this piece, we’ll look at the injection scope....", "date_modified": "2020-01-10T19:49:47.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Service In enterprise applications, we follow the SOLID principle, where S stands for Single Responsibility. The controllers are responsible for ac...", "url": "https://playfulprogramming.com/posts/introduction-to-nestjs-services-2l5f", "title": "Introduction to NestJS Services", "summary": "Service In enterprise applications, we follow the SOLID principle, where S stands for Sing...", "date_modified": "2020-01-08T07:43:05.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "In this blog post, we will explore the controller which is the most important part of NestJS. Why We need Controllers Controllers are responsible f...", "url": "https://playfulprogramming.com/posts/nestjs-controllers-deep-dive-30fk", "title": "NestJS Controllers Deep Dive", "summary": "In this blog post, we will explore the controller which is the most important part of NestJS....", "date_modified": "2020-01-06T22:19:00.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Working on mobile games with Unity, you may come across some instances where you'll want to run native code. Whether it be to access specific senso...", "url": "https://playfulprogramming.com/posts/integrating-android-code-in-unity", "title": "Integrating Native Android Code in Unity", "summary": "Have you ever wanted to run native Java and Kotlin code from your mobile game written in Unity? Well, you can! Let's see how.", "date_modified": "2020-01-04T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "This is the first part of the series of articles on the Node.js framework known as NestJS , in this article we will see why and how to use NestJS. ...", "url": "https://playfulprogramming.com/posts/getting-started-with-nestjs-504h", "title": "Getting Started With NestJS", "summary": "This is the first part of the series of articles on the Node.js framework known as NestJS, in this ar...", "date_modified": "2020-01-02T11:18:44.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "While working on a bug in one of my projects recently, I found an issue that I could only recreate on an Android device. However, due to some cro...", "url": "https://playfulprogramming.com/posts/change-host-file-android-emulator", "title": "Change the Host File of an Android Emulator", "summary": "In order to test web applications with Android properly, you may need to edit the Android Emulator network host file. Here's how to do so.", "date_modified": "2019-12-27T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "So you have decided to learn web development. Great! But once you start looking around for tutorials, guides, and other resources, it's easy to get...", "url": "https://playfulprogramming.com/posts/intro-to-html-css-and-javascript", "title": "Introduction to HTML, CSS, and JavaScript", "summary": "Introduction to the underlying concepts of HTML, CSS, and JavaScript and how they work together.", "date_modified": "2019-12-16T13:45:00.284Z", "author": { "name": "Micah Dutro", "url": "https://playfulprogramming.com/unicorns/MDutro" } }, { "content_html": "Recently one of the .Net developer asked me the question \"why we use class rather than interfaces while using Dependency Injection\" the question wa...", "url": "https://playfulprogramming.com/posts/dependency-injection-simplified-for-net-and-java-developers-4j1l", "title": "Angular Dependency Injection Simplified for .Net and Java Developers", "summary": "Recently one of the .Net developer asked me the question \"why we use class rather than interfaces whi...", "date_modified": "2019-12-06T19:29:17.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "A well-prepared young man ready to start running. Cover photo by William Stitt on Unsplash . Updated for Angular version 11.0. Are you struggling w...", "url": "https://playfulprogramming.com/posts/how-to-get-up-and-running-with-angular-on-windows-2k32", "title": "How to get up and running with Angular on Windows", "summary": "Are you struggling with setting up an Angular development environment on Windows? Let us get you up and running in no time!", "date_modified": "2019-11-30T00:25:09.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Cover photo by Lina Trochez on Unsplash . So you took a look at TypeScript. Classes and a C-like syntax. Seems easy enough. Your manager asks you t...", "url": "https://playfulprogramming.com/posts/sorry-c-and-java-developers-this-is-not-how-typescript-works-401", "title": "Sorry C# and Java developers, this is not how TypeScript works", "summary": "JavaScript is a loosely typed programming language and TypeScript does not change that.", "date_modified": "2019-11-29T23:36:59.000Z", "author": { "name": "Lars Gyrup Brink Nielsen", "url": "https://playfulprogramming.com/unicorns/LayZee" } }, { "content_html": "Any web application relies on some fundamental technologies: HTML, CSS, and JavaScript. Even advanced front-end JavaScript frameworks such as Angul...", "url": "https://playfulprogramming.com/posts/understanding-the-dom", "title": "Web Fundamentals: Understanding the DOM", "summary": "In our eight chapter, we learn how the browser internally handles HTML and CSS to show the user webpages on-screen.", "date_modified": "2019-11-26T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Computers, on a very low level, are built upon binary (ones and zeros). Think about that — all of the text you're reading on your screen started li...", "url": "https://playfulprogramming.com/posts/non-decimal-numbers-in-tech", "title": "Binary & Hexadecimal: Intro to Non-Decimal Systems", "summary": "Learn how to convert decimal to binary and hexadecimal, how CSS colors are calculated, and how your computer interprets letters into binary.", "date_modified": "2019-11-07T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "TypeScript's popularity cannot be understated. Either you likely know someone who works with it, you've heard of it, or possibly you've been using ...", "url": "https://playfulprogramming.com/posts/introduction-to-typescript", "title": "Introduction to TypeScript — What is TypeScript?", "summary": "An introduction and explanation of what TypeScript is, is not, and what it's used for", "date_modified": "2019-10-13T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "There is a newer article available. This article is severely outdated.: To learn how to make your Figma mockups match your Android app using Jetpac...", "url": "https://playfulprogramming.com/posts/hard-grids-and-baselines-android-design-fidelity", "title": "Hard Grids & Baselines: Achieving 1:1 Android Fidelity", "summary": "Testing the limits of `firstBaselineToTopHeight` and `lastBaselineToBottomHeight` to deliver a perfect result.", "date_modified": "2019-10-07T22:07:09.945Z", "author": { "name": "Eduardo Pratti", "url": "https://playfulprogramming.com/unicorns/edpratti" } }, { "content_html": "Note: If you're not yet familiar with TypeScript, we have an introductory article you should read! 📝 Introduction to TypeScript While working in v...", "url": "https://playfulprogramming.com/posts/typescript-type-generics", "title": "TypeScript Intermediates - Type Generics", "summary": "An introduction to the type generic functionality in TypeScript", "date_modified": "2019-09-26T05:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "This is a basic summary of the different components of Android and what they can be used for. It\nis written with the assumption that you already ha...", "url": "https://playfulprogramming.com/posts/introduction-to-android-framework", "title": "Android Basics: Contexts, Intents & Lifecycle", "summary": "A basic overview of the main components of an Android app and how they interact with each other and the Android system", "date_modified": "2019-08-22T05:12:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "Internet Relay Chat is a difficult thing to get used to, especially for people who were born into this world of full graphical interfaces and messa...", "url": "https://playfulprogramming.com/posts/joining-freenode-irc", "title": "Joining Freenode IRC: A Guide", "summary": "Basic (but detailed) instructions for setting up a Freenode IRC account through various clients", "date_modified": "2019-08-22T05:12:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "Last week, I started setting up continuous integrations for some of my projects. The idea of continuous integration is to have a server that can bu...", "url": "https://playfulprogramming.com/posts/travis-ci-for-android", "title": "Continuous Integration with Travis CI for Android", "summary": "An in-depth tutorial explaining how to set up Travis CI to deploy signed builds to Google Play. Among other things", "date_modified": "2019-08-22T05:12:03.284Z", "author": { "name": "James Fenn", "url": "https://playfulprogramming.com/unicorns/fennifith" } }, { "content_html": "Why You Should Invest In Yourself? If you like stories, then this is for you, and more than that you are the part of this story and every developer...", "url": "https://playfulprogramming.com/posts/why-you-should-invest-in-yourself-1epi", "title": "Why You Should Invest In Yourself?", "summary": "Why You Should Invest In Yourself? If you like stories, then this is for you, and more...", "date_modified": "2019-08-20T19:18:21.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Photo by Markus Spiske on Unsplash Hello everyone, my name is Santosh Yadav and I want to share my Open Source journey with everyone. Introduction ...", "url": "https://playfulprogramming.com/posts/my-open-source-journey-336j", "title": "My Open Source Journey", "summary": "Photo by Markus Spiske on Unsplash Hello everyone, my name is Santosh Yadav and I want to share my O...", "date_modified": "2019-08-01T13:20:28.000Z", "author": { "name": "Santosh Yadav", "url": "https://playfulprogramming.com/unicorns/santoshyadavdev" } }, { "content_html": "Article Overview {#overview} This article was written with the idea that the reader is at least somewhat familiar with the introductory concepts of...", "url": "https://playfulprogramming.com/posts/angular-templates-start-to-source", "title": "Angular Templates — From Start to Source", "summary": "Learn how templates work in Angular. From the basics to being able to read Angular source code and write your own structural directives", "date_modified": "2019-07-11T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "Learning itself is such an interesting thing to think about. I have always been driven to learn more about the world around me. I find the act of s...", "url": "https://playfulprogramming.com/posts/uttering-hello-introduction-post", "title": "Uttering Hello — The Site's First Post", "summary": "An introduction to Unicorn Utterances, including a mission statement and general roadmap", "date_modified": "2019-06-29T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "The performance of came up in a discussion, and\nmy\nfirst thought was that from reading generated assembly code, it's a jump table, so it should be...", "url": "https://playfulprogramming.com/posts/when-performance-guarantees-hurts", "title": "When performance guarantees hurts performance - std::visit", "summary": "The performance of came up in a discussion, and\nmy\nfirst thought was that from reading generated assembly code, it's a jump table, so it should be...", "date_modified": "2018-12-22T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "A former colleague of mine recently described the steps to speak at a conference as: Write a proposal and (optionally) a talk outline. Get accepted...", "url": "https://playfulprogramming.com/posts/how-to-speak-at-conference", "title": "How to speak at a conference", "summary": "A former colleague of mine recently described the steps to speak at a conference as: Write a proposal and (optionally) a talk outline. Get accepted...", "date_modified": "2018-11-29T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Now and then, I find myself writing something like if (x == a || x == b || x == c) ... , and every time the repetition\nof x == annoys me. A number ...", "url": "https://playfulprogramming.com/posts/dry-multicomparisons", "title": "DRY multicomparisons", "summary": "Now and then, I find myself writing something like if (x == a || x == b || x == c) ... , and every time the repetition\nof x == annoys me. A number ...", "date_modified": "2018-07-14T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "You’re about to release your new Angular web app. It’s a photo sharing site and you want to test it, so you send a link to it to your hacker sist...", "url": "https://playfulprogramming.com/posts/angular-route-guards-authorization-web-mobile-application", "title": "Angular Route Guards for Web & Mobile Auth", "summary": "Learn how to use Angular route guards for authenticating & authorizing access to certain child and parent routes.", "date_modified": "2018-07-13T22:12:03.284Z", "author": { "name": "Corbin Crutchley", "url": "https://playfulprogramming.com/unicorns/crutchcorn" } }, { "content_html": "A flat map is a data structure that maps a key to a value, and that stores the data in a compact flat memory structure\nto get better cache hit rate...", "url": "https://playfulprogramming.com/posts/performance-of-flat-maps", "title": "Performance of flat maps", "summary": "A flat map is a data structure that maps a key to a value, and that stores the data in a compact flat memory structure\nto get better cache hit rate...", "date_modified": "2017-08-07T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "So I've written about compile time quick-sort twice\nbefore ( 2011 and 2015 ,) but now with C++17's\nupcoming support, I thought I'd try it again. Ge...", "url": "https://playfulprogramming.com/posts/constexpr-quicksort-in-c17", "title": "Using constexpr quick-sort in C++17", "summary": "So I've written about compile time quick-sort twice\nbefore ( 2011 and 2015 ,) but now with C++17's\nupcoming support, I thought I'd try it again. Ge...", "date_modified": "2017-06-03T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Yesterday's post about Generating lambdas for clarity and performance showed how to make use of higher order functions to improve clarity while giv...", "url": "https://playfulprogramming.com/posts/higher-order-functions-as-enabler-for", "title": "Higher order functions as an enabler for lazy evaluation", "summary": "Yesterday's post about Generating lambdas for clarity and performance showed how to make use of higher order functions to improve clarity while giv...", "date_modified": "2017-01-08T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Higher order functions , functions that operate on other functions\nor returns functions, are familiar to those who have had some experience with fu...", "url": "https://playfulprogramming.com/posts/generate-lambdas-for-clarity-and", "title": "Generate lambdas for clarity and performance", "summary": "Higher order functions , functions that operate on other functions\nor returns functions, are familiar to those who have had some experience with fu...", "date_modified": "2017-01-07T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Serializing data in C++ is a surprisingly difficult problem. There are many libraries for it with varying degrees of\nfinesse, power and ease of use...", "url": "https://playfulprogramming.com/posts/serializing-structs-with-c17-structured", "title": "Serializing structs with C++17 structured bindings", "summary": "Serializing data in C++ is a surprisingly difficult problem. There are many libraries for it with varying degrees of\nfinesse, power and ease of use...", "date_modified": "2016-12-29T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Recently I stumbled upon a question by @arne_mertz of Simplify C++ fame — if you don't read that blog, start now! — about using string literals as\n...", "url": "https://playfulprogramming.com/posts/strings-as-types-with-c17-constexpr", "title": "Expressing strings as types with C++17 constexpr lambdas", "summary": "Recently I stumbled upon a question by @arne_mertz of Simplify C++ fame — if you don't read that blog, start now! — about using string literals as\n...", "date_modified": "2016-08-25T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "We've all experienced them, the long and unhelpful compilation errors from templates, usually referring to some internal\nheader you didn't even kno...", "url": "https://playfulprogramming.com/posts/succinct-and-helpful-c-template", "title": "Succinct and helpful C++ template compilation errors", "summary": "We've all experienced them, the long and unhelpful compilation errors from templates, usually referring to some internal\nheader you didn't even kno...", "date_modified": "2016-05-18T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "We've all hand crafted comparison operators for structs with many members, and we've all cursed the tedium. It's all\nright for equality comparison,...", "url": "https://playfulprogramming.com/posts/a-flexible-lexicographical-comparator", "title": "A flexible lexicographical comparator for C++ structs", "summary": "We've all hand crafted comparison operators for structs with many members, and we've all cursed the tedium. It's all\nright for equality comparison,...", "date_modified": "2016-01-01T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "I must begin by saying that, if you found this because you have a performance problem, you should almost certainly look elsewhere. It is highly unl...", "url": "https://playfulprogramming.com/posts/cache-optimizing-priority-queue", "title": "Cache optimizing a priority queue", "summary": "I must begin by saying that, if you found this because you have a performance problem, you should almost certainly look elsewhere. It is highly unl...", "date_modified": "2015-08-03T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Edit (June 2015):: The source code is now available on GitHub . When writing unit tests, you typically don't care much about execution speed, but c...", "url": "https://playfulprogramming.com/posts/performance-observations-on-c-vector-of", "title": "Performance observations on a C++ vector of lambdas", "summary": "Edit (June 2015):: The source code is now available on GitHub . When writing unit tests, you typically don't care much about execution speed, but c...", "date_modified": "2015-06-05T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "url": "https://playfulprogramming.com/posts/compile-time-quicksort-in-idiomatic", "title": "Compile time quick-sort in idiomatic modern C++", "summary": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "date_modified": "2015-01-18T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "As previously introduced ,\nthe Trompeloeil C++ framework is a new mocking framework for C++14. If you're\nnot at all familiar with Trompeloeil , you...", "url": "https://playfulprogramming.com/posts/sequence-control-with-trompeloeil-c", "title": "Sequence control with the Trompeloeil C++ mocking framework", "summary": "As previously introduced ,\nthe Trompeloeil C++ framework is a new mocking framework for C++14. If you're\nnot at all familiar with Trompeloeil , you...", "date_modified": "2015-01-06T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Trompeloeil is a new mocking framework for C++, aimed at ease of use without\nsacrificing expressive power. In arts, trompeloeil is intended to mock...", "url": "https://playfulprogramming.com/posts/introducing-trompeloeil-c-mocking", "title": "Introducing the Trompeloeil C++ mocking framework", "summary": "Trompeloeil is a new mocking framework for C++, aimed at ease of use without\nsacrificing expressive power. In arts, trompeloeil is intended to mock...", "date_modified": "2014-12-13T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "Sometimes when crafting an interface, we want to ensure that some illegal constructs lead to compilation errors. After\nall, a good interface is eas...", "url": "https://playfulprogramming.com/posts/asserting-compilation-errors-in-c", "title": "Asserting compilation errors in C++", "summary": "Sometimes when crafting an interface, we want to ensure that some illegal constructs lead to compilation errors. After\nall, a good interface is eas...", "date_modified": "2014-08-28T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "url": "https://playfulprogramming.com/posts/strings-as-types", "title": "Expressing strings as types", "summary": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "date_modified": "2013-03-31T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "url": "https://playfulprogramming.com/posts/compile-time-messages-in-c", "title": "Compile time messages in C++", "summary": "This article is outdated!: This article was written a very long time ago, and its contents no longer apply. Read the newer version by clicking here...", "date_modified": "2011-09-28T00:00:00.000Z", "author": { "name": "Björn Fahller", "url": "https://playfulprogramming.com/unicorns/rollbear" } }, { "content_html": "A lot has been written about new features coming in the 2011 revision of ISO C++. One that has received surprisingly\nlittle attention is the