<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
                        <id>https://assertchris.dev/feed</id>
                                <link href="https://assertchris.dev/feed" rel="self"></link>
                                <title><![CDATA[assertchris.io feed]]></title>
                                
                                            <subtitle>Articles, slides, videos, and projects by Christopher Pitt</subtitle>
                                                    <updated>2026-06-10T14:34:26+00:00</updated>
                        <entry>
            <title><![CDATA[Prettier PHP Code]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-25-prettier-php-code" />
            <id>https://assertchris.dev/articles/2024-03-25-prettier-php-code</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I am so tired of looking the same thing up, so I'm going to write an article about how to automatically format PHP code in VS Code.
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-25T19:04:12+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[“What is this s#*t?!”]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-25-phpx-live" />
            <id>https://assertchris.dev/articles/2024-03-25-phpx-live</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[A few days ago, Caleb Porzio demonstrated some work he’s been doing; to replicate Phoenix LiveView in Laravel. I’ve been building PHP preprocessor stuff for a long time, and this really inspired me to try the same thing.
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-26T17:36:05+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Making a podcast app]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-26-making-a-podcast-app" />
            <id>https://assertchris.dev/articles/2024-03-26-making-a-podcast-app</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I love listening to podcasts, but I can’t find an app to play them in that I really enjoy using. When you think about it, there are a lot of moving parts to making on of these apps. Let’s explore them.
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-26T17:22:02+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Badges]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-27-badges" />
            <id>https://assertchris.dev/articles/2024-03-27-badges</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[One of our goals, with Gitstore, is to make it as easy as possible for folks to sell their stuff. Today that meant I had to create a page where maintainers could go; to copy the code required to display a dynamic badge. The purpose of the badge is to click through to another page, where customers can immediately buy stuff.
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-27T16:26:51+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[My boss won’t let me do this!]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-27-my-boss-wont-let-me-do-this" />
            <id>https://assertchris.dev/articles/2024-03-27-my-boss-wont-let-me-do-this</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I have been in many discussions, usually about testing, which begin with these words. “They’re short-sighted”, and “They don’t understand the cost to their business” usually follow. Maybe the boss is right…
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-27T16:36:54+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Making a development app]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-03-27-making-a-development-app" />
            <id>https://assertchris.dev/articles/2024-03-27-making-a-development-app</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I like to code on the go, but I don’t always like to bring my laptop with me. So, I’ve tried many iPad apps centred around coding, Git repository management, and code execution.
]]></summary>
                                        <category term="article" />
                        <updated>2024-03-27T18:05:13+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Using Forms on Custom Filament Pages]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-04-10-using-forms-on-custom-filament-pages" />
            <id>https://assertchris.dev/articles/2024-04-10-using-forms-on-custom-filament-pages</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Let me share a little secret with you, about Filament. You probably know you can make custom pages, but what’s not immediately obvious is that you can still use Filament’s form components without having to butcher a resource class or reinvent it from scratch. This isn’t well documented, but at least it’s easy once you know how…
]]></summary>
                                        <category term="article" />
                        <updated>2024-04-10T18:51:10+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Custom Web Components to Highlight Code]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-04-11-custom-web-components-to-highlight-code" />
            <id>https://assertchris.dev/articles/2024-04-11-custom-web-components-to-highlight-code</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I’ve just been down a rabbit hole. It started with wanting to cut back on boilerplate and ended with being able to highlight code in Reveal.js using tempest/highlight. Along the way, I made my first web component.
]]></summary>
                                        <category term="article" />
                        <updated>2024-04-11T09:34:23+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[A Case for High School Math]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-06-09-a-case-for-high-school-math" />
            <id>https://assertchris.dev/articles/2024-06-09-a-case-for-high-school-math</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I've come around to the idea that high school math is a gift.
Not because of why high schools teach it. It's easy to algorithmically generate and test for; which can make it seem like a good use of time. It's easy to measure. It's nicer to tell parents; &quot;after x years, your kid has improved by y&quot;.
That's not why I think it's a gift, though.
]]></summary>
                                        <category term="article" />
                        <updated>2024-06-09T09:41:18+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Friends in the Laravel community]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-07-04-friends-in-the-laravel-community" />
            <id>https://assertchris.dev/articles/2024-07-04-friends-in-the-laravel-community</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[When I saw Greg’s tweet about “friends you didn’t know you had”, I physically reacted. I think it’s a wonderful sentiment, and there are many people in Laravel that I do consider to be friends; but not because they’re specifically in Laravel. Laravel us a shared interest, not the reason they are my friends.
]]></summary>
                                        <category term="article" />
                        <updated>2024-07-04T05:32:49+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Mud Bath]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-09-06-mud-bath" />
            <id>https://assertchris.dev/articles/2024-09-06-mud-bath</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[It's been a heck of a week. Nick, from OfferZen, asked me if I wanted to bake three batches of themed cupcakes for a company get-together. This is the story of how I made the third and final batch...
]]></summary>
                                        <category term="article" />
                        <updated>2024-09-06T17:04:17+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Deno But In PHP]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-09-13-deno-but-in-php" />
            <id>https://assertchris.dev/articles/2024-09-13-deno-but-in-php</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I dig Deno, but probably not for the reasons you think. I do like JavaScript, but not as someone who likes to make full applications. It’s hard to make something useful in a short amount of time. At least that’s how it feels to me…
]]></summary>
                                        <category term="article" />
                        <updated>2024-09-13T12:57:09+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Importing From URLs]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-09-14-importing-from-urls" />
            <id>https://assertchris.dev/articles/2024-09-14-importing-from-urls</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I have just been experimenting with importing source code from URLs in PHP. I know, that thing explicitly prohibited in all new PHP installations. Remote Code Execution by design.
]]></summary>
                                        <category term="article" />
                        <updated>2024-09-14T05:08:14+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The Airport Pattern Library]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-11-10-the-airport-pattern-library" />
            <id>https://assertchris.dev/articles/2024-11-10-the-airport-pattern-library</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Seems I only wokr on this silly PHP pattern library thing when I'm in airports. There might be something to that...
]]></summary>
                                        <category term="article" />
                        <updated>2024-11-10T06:34:11+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[3D printing, the setup]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-12-27-3d-printing-the-setup" />
            <id>https://assertchris.dev/articles/2024-12-27-3d-printing-the-setup</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[t's been about a month since I got my first 3D printer. I have been having so much fun that I've hardly shared on social media. When I saw Chris tooting about getting into 3D printing; it occurred to me that my experience could help others getting started.
]]></summary>
                                        <category term="article" />
                        <updated>2024-12-27T11:37:04+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[3D printing, making thumbnails of models]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2024-12-27-3d-printing-making-thumbnails-of-models" />
            <id>https://assertchris.dev/articles/2024-12-27-3d-printing-making-thumbnails-of-models</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[One of the reasons I got a 3D printer was to learn what it would take to run a small 3D printing side-hustle. I had zero ideas about where to focus or what to print; but I saw a similar experiment run by a YouTuber. When my oldest child started asking for 3D prints I knew it was time.
]]></summary>
                                        <category term="article" />
                        <updated>2024-12-27T18:52:26+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Some Bad Writing]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-16-some-bad-writing" />
            <id>https://assertchris.dev/articles/2025-08-16-some-bad-writing</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Read an interesting, albiet brief post about actually doing the thing I claim to be so bad at that I avoid it.
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-16T21:20:58+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[More Talk Abstracts To Write]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-19-more-talk-abstracts-to-write" />
            <id>https://assertchris.dev/articles/2025-08-19-more-talk-abstracts-to-write</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Going to conferences, while living in these remote areas, made me feel like I was wanted. I loved the travel, too. The last conference I felt truly wanted at was Laravel EU (days before my youngest child was born). That was 5 years ago.
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-19T05:23:33+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[I Wrote The Talk Abstracts]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-19-i-wrote-the-talk-abstracts" />
            <id>https://assertchris.dev/articles/2025-08-19-i-wrote-the-talk-abstracts</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I came to find that the topics I want to talk about — the topics I can prattle on about, with no preparation — are topics that are difficult for organisers to justify. I had a sense about this, which I previously mentioned…
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-19T22:46:11+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Floaty in 2026]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-19-floaty-in-2026" />
            <id>https://assertchris.dev/articles/2025-08-19-floaty-in-2026</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Some time ago, I created a JS port of Pico-8. I challenged myself to host a workshop (for work people) where I taught non-coders how to make a game. Games are a powerful tool when teaching programming, because of their rapid iteration cycles, fun outcomes, and a general acceptances of newcomers.
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-19T22:59:43+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[You can just do things]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-27-you-can-just-do-things" />
            <id>https://assertchris.dev/articles/2025-08-27-you-can-just-do-things</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I was visiting a friend who had just moved house. He was chucking stuff out, and happened upon an old Thinkpad. He's stopped using it because the battery was so bad that it wouldn't run without being plugged in.
So, he gave it to me.
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-27T18:47:12+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Just Dad Things]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2025-08-31-just-dad-things" />
            <id>https://assertchris.dev/articles/2025-08-31-just-dad-things</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I have been thinking about my dad this week, more than usual.
First, I wondered how much of what remains of someone is an invention of our memories; or what they actually were.
]]></summary>
                                        <category term="article" />
                        <updated>2025-08-31T20:01:32+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The future of AI development]]></title>
            <link rel="alternate" href="https://assertchris.dev/articles/2026-05-27-the-future-of-ai-development" />
            <id>https://assertchris.dev/articles/2026-05-27-the-future-of-ai-development</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I want to tell you a story about what I learned I should be building, and what I think it means for the future of AI development. I'm a developer, and my employer recently encouraged me to start using AI in my daily work.
]]></summary>
                                        <category term="article" />
                        <updated>2026-06-10T14:34:26+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Pro PHP 8 MVC]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/pro-php-8-mvc" />
            <id>https://assertchris.dev/books/pro-php-8-mvc</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[The first edition of this book was the first book I wrote for a publisher. It sucked. So, when I got the chance to rewrite it (under the guise of a second edition), I jumped at the opportunity.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:03:53+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Procedural Generation in Godot]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/procedural-generation-in-godot" />
            <id>https://assertchris.dev/books/procedural-generation-in-godot</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This was my first foray into teaching game development in Godot. Apress wanted the book to target the upcoming version of the engine, which meant I had to write most of the book while it was still in alpha. As you can imagine, there were many revisions as APIs stabilized.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:04:29+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The Definitive Guide to AdonisJs]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/definitive-guide-to-adonisjs" />
            <id>https://assertchris.dev/books/definitive-guide-to-adonisjs</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This is a comprehensive overview of the AdonisJs framework, enjoyed over the process of building an example application.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:05:08+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The Definitive Guide to Masonite]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/definitive-guide-to-masonite" />
            <id>https://assertchris.dev/books/definitive-guide-to-masonite</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This is a comprehensive overview of the Masonite Python framework, enjoyed over the process of building an example application.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:05:47+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Making Games With Javascript]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/making-games-with-javascript" />
            <id>https://assertchris.dev/books/making-games-with-javascript</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Writing this book was eye-opening. The cover was about making games, but it was just a sneaky way to teach folks how to use modern JavaScript to build useful stuff. For the first time, I mirrored every code example with a live CodePen. This allowed readers to open and tinker with the examples without a lot of copy &amp; paste.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:06:20+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Typed PHP]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/typed-php" />
            <id>https://assertchris.dev/books/typed-php</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This old book was from a time before PHP didn't have strong typing and a million Composer plugins.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:07:40+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[React Components]]></title>
            <link rel="alternate" href="https://assertchris.dev/books/react-components" />
            <id>https://assertchris.dev/books/react-components</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This old book is about building a CMS out of React components.
]]></summary>
                                        <category term="book" />
                        <updated>2024-04-07T11:08:15+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Preprocess]]></title>
            <link rel="alternate" href="https://assertchris.dev/projects/preprocess" />
            <id>https://assertchris.dev/projects/preprocess</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I built and maintained a collection of open source libraries which brought preprocessor macros to the PHP landscape. This meant that folks could build and use custom syntax in their PHP projects, without compiling custom versions of PHP or installing extensions.
]]></summary>
                                        <category term="project" />
                        <updated>2024-04-07T00:48:05+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Floaty]]></title>
            <link rel="alternate" href="https://assertchris.dev/projects/floaty" />
            <id>https://assertchris.dev/projects/floaty</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[In mid 2023, I started building a JavaScript game engine, called Floaty. I volunteered to teach non-programmers how to program in JavaScript. The most entertaining way I could think of to do this would be to help them build a game.
]]></summary>
                                        <category term="project" />
                        <updated>2024-04-07T00:48:45+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Gitstore]]></title>
            <link rel="alternate" href="https://assertchris.dev/projects/gitstore" />
            <id>https://assertchris.dev/projects/gitstore</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Gitstore was a project I built, with Jason and Shawn. The idea was to make it easier for developers to rent out access to their private Github repositories, and to accept payments via PayPal or Stripe. At the time, nobody was doing this...
]]></summary>
                                        <category term="project" />
                        <updated>2024-04-07T19:33:01+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Zombies and Binary]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/zombies-and-binary" />
            <id>https://assertchris.dev/talks/zombies-and-binary</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Minecraft is a bit of a hidden gem when it comes to teaching. It’s capable of simulating computation and electronic circuitry. One of things that can’t be unseen once you know it’s there.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:03:42+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Cooperative Multitasking with Generators]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/cooperative-multitasking-with-generators" />
            <id>https://assertchris.dev/talks/cooperative-multitasking-with-generators</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[One day, while staring out the window at all the async/await languages playing ball, I wondered what it would take to do the same in PHP. This talk became the answer to that question.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-08-19T06:55:35+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Building and Programming Robots]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/building-and-programming-robots" />
            <id>https://assertchris.dev/talks/building-and-programming-robots</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Who is your favorite superhero? Mine is Iron Man. Not because he’s noble or even very good. It’s because he builds cool suits. I’ve never felt more like Iron Man than when I modified a LEGO Technic set so that I could control it with computer code.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:03:59+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Multi-tenant apps without fuss]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/multi-tenant-apps-without-fuss" />
            <id>https://assertchris.dev/talks/multi-tenant-apps-without-fuss</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Multi-tenant apps are cool because they can work for many brands, with a single codebase. They may generate more money than single-tenant apps, but they also tend to be a lot more complex. They don't have to be, though...
]]></summary>
                                        <category term="talk" />
                        <updated>2025-08-19T05:54:01+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Monads in PHP]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/monads-in-php" />
            <id>https://assertchris.dev/talks/monads-in-php</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Many developers get lost in the hype of object oriented design. They miss out on how expressive and
succinct their code could be if they tried functional programming.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-08-19T05:54:10+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Laravel: Idea to Product]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/laravel-idea-to-product" />
            <id>https://assertchris.dev/talks/laravel-idea-to-product</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Got an idea for a product or service? Laravel is the perfect framework to get you up and running, fast! In this workshop, we'll take a simple product idea and build it into a live web app.
]]></summary>
                                        <category term="talk" />
                        <updated>2024-10-10T15:06:30+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Build Your New Portfolio with Filament]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/build-your-new-portfolio-with-filament" />
            <id>https://assertchris.dev/talks/build-your-new-portfolio-with-filament</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[The carpenter's chair is always broken. I get it; you're far to busy building cool web things to spend time on your portfolio. Especially when you've got so many cool features you want to add. That's where this talk can help you.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-08-19T05:55:12+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Oops! I Made a Game Engine]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/oops-i-made-a-game-engine" />
            <id>https://assertchris.dev/talks/oops-i-made-a-game-engine</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I needed to teach a bunch of non-coders how to write JS, so I built a game engine. Not the wisest choice, but definitely one that taught me much about how game engines work. Follow along as I show you more of the interesting things I learned through this process.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:04:16+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Procedural content generation with Godot]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/procedural-content-generation-with-godot" />
            <id>https://assertchris.dev/talks/procedural-content-generation-with-godot</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[If you're building games on your own, you know how much effort is it is to make everything from scratch. Save yourself some time and generate some of your game's content.
This talk covers the practical aspects of content generation. You don't need to know a bunch of dry math to make engaging content or follow along with this talk.
]]></summary>
                                        <category term="talk" />
                        <updated>2024-10-10T15:07:14+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Modern Admins with Filament]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/modern-admins-with-filament" />
            <id>https://assertchris.dev/talks/modern-admins-with-filament</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Filament is an open-source admin builder for Laravel. It's built on the TALL stack, so using and customising it involves using skills you already have.
In this talk, we'll show you what we've learned while using it.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-08-19T05:55:00+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Web Components for fun and profit!]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/web-components-for-fun-and-profit" />
            <id>https://assertchris.dev/talks/web-components-for-fun-and-profit</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Web components are an underused superpower of the modern web. They allow intricate rendering and interactivity without the difficulty of modern JS frameworks or build pipelines.
I’d like to show you how they work, and some of the interesting ways I’ve used them recently. It might surprise you how well they fit into your web applications. They'll actually increase the utility of the frameworks you’re already using.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:04:36+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Playing PS2 Games in Discord]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/playing-ps2-games-in-discord" />
            <id>https://assertchris.dev/talks/playing-ps2-games-in-discord</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I wanted to play a retro couch-coop game with my friend, but they were too far away. So, I connected a game controller to the internet and created website they could use to join in the game. Follow along as I explain how I used soldering, IoT, web sockets, and video streaming to do what would have taken 3 minutes with a Steam game. 🤦‍♂️
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:04:48+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Turning Something Old Into Something New]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/turning-something-old-into-something-new" />
            <id>https://assertchris.dev/talks/turning-something-old-into-something-new</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I love taking broken retro tech and fixing it up. It’s deeply satisfying giving something a second life. Join me as I show you how I fixed and modernised a 20 year old gaming console; and how you can do the same.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:05:00+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Creating the most expensive e-book reader]]></title>
            <link rel="alternate" href="https://assertchris.dev/talks/creating-the-most-expensive-e-book-reader" />
            <id>https://assertchris.dev/talks/creating-the-most-expensive-e-book-reader</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Why settle for a fancy e-book reader, when you can use an impractically sized 35 year old device instead? Join me as I show you how to convert modern e-books into Gameboy games; and how I turned this into a free service for other masochists.
]]></summary>
                                        <category term="talk" />
                        <updated>2025-10-27T18:05:12+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Bouncy Cars]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/bouncy-cars" />
            <id>https://assertchris.dev/games/bouncy-cars</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Bouncy Cars is probably my favourite game, so far. I miss the days of sitting on a couch, giving a good friend a thorough whooping, in a racing game. If you’ve ever played Micro Machines, this slightly inferior take on the genre may interest you!
]]></summary>
                                        <category term="game" />
                        <updated>2024-04-07T19:33:36+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Invasion]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/invasion" />
            <id>https://assertchris.dev/games/invasion</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Invasion is a game about trying to stay hopeful in a hopeless situation. I made it for a game jam, around the beginning of the Russian invasion of Ukraine. Years later, war still rages. How can one talk about a game they’re proud of making, when the horrors it hints at are a reality for a dwindling population?
]]></summary>
                                        <category term="game" />
                        <updated>2024-04-07T19:33:36+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Riaan's Review]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/riaans-review" />
            <id>https://assertchris.dev/games/riaans-review</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I used to work with a lovely fellow, named Riaan. We became friends. When we left the place where we both worked, we kept in contact. Since he lives so far away from me, it's been difficult to see much of him. A week ago he asked me if he could borrow a Raspberry Pi, so that he could turn it into a games console of sorts for his kids. I suggested he borrow my SNES classic mini. We arranged to meet.
]]></summary>
                                        <category term="game" />
                        <updated>2024-04-07T19:33:35+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Sitch]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/sitch" />
            <id>https://assertchris.dev/games/sitch</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I made Sitch for a game jam (with the theme: Switch). It's about being a bad landlord; as you frantically try to enable water and power in time for your tenants to use them, and then disable them again to save money.
]]></summary>
                                        <category term="game" />
                        <updated>2024-05-15T10:07:58+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Train Trouble]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/train-trouble" />
            <id>https://assertchris.dev/games/train-trouble</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I made Train Trouble for a Nokia Game Jam. You can probably tell from the color and control schemes. I love the experience, though. It's challenging to make a game without any text or voice acting...
]]></summary>
                                        <category term="game" />
                        <updated>2024-05-15T10:11:31+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Slither Deep]]></title>
            <link rel="alternate" href="https://assertchris.dev/games/slither-deep" />
            <id>https://assertchris.dev/games/slither-deep</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Slither Deep was my third game. It took about two weeks to make, and contained everything I had learned about Godot to that point. I was fascinated with the achitecture of Minesweeper games, at the time, and this combined Minesweeper with the Roguelike genre.
]]></summary>
                                        <category term="game" />
                        <updated>2024-05-15T10:14:58+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Multi-tenant apps without fuss]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-04-07-multi-tenant-apps-without-fuss" />
            <id>https://assertchris.dev/decks/2024-04-07-multi-tenant-apps-without-fuss</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Multi-tenant apps are cool because they can work for many brands, with a single codebase. They may generate more money than single-tenant apps, but they also tend to be a lot more complex. They don't have to be, though...
]]></summary>
                                        <category term="deck" />
                        <updated>2024-05-04T16:22:35+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Building Robots]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-07-15-building-and-coding-robots" />
            <id>https://assertchris.dev/decks/2024-07-15-building-and-coding-robots</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This talk is a hands-on introduction to hobby electronics, and how you can control them using JS. I'll show you Lego Technic sets which you can manipulate with an Arduino and a bit of creativity. I'll even let you control a robot or two, using a web browser.
]]></summary>
                                        <category term="deck" />
                        <updated>2024-07-18T05:21:33+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Zombies and Binary]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-07-18-zombies-and-binary" />
            <id>https://assertchris.dev/decks/2024-07-18-zombies-and-binary</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[Minecraft is played by more than 165 million people. Imagine if just a fraction of those people could learn electrical engineering or computer programming, without even meaning to.
This talk is all about how Minecraft expresses the fundamentals of electronics and programming, and how we can encourage the next generation of electrical engineers and computer programmers in a fun environment.
]]></summary>
                                        <category term="deck" />
                        <updated>2024-07-19T05:25:49+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Herding Cats]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-09-06-herding-cats" />
            <id>https://assertchris.dev/decks/2024-09-06-herding-cats</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This talk covers the architecture of a multi-tenant sports media website, and the APIs that power their mobile apps.
]]></summary>
                                        <category term="deck" />
                        <updated>2024-09-06T13:06:21+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Build Your New Portfolio with FilamentPHP]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-10-25-build-your-new-portfolio-with-filamentphp" />
            <id>https://assertchris.dev/decks/2024-10-25-build-your-new-portfolio-with-filamentphp</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[These few introductory slides are for a workshop that I ran at PHPCon Poland 2024. Most of the workshop took place in a code editor, so check out the YouTube recording of it for more details.
]]></summary>
                                        <category term="deck" />
                        <updated>2024-10-25T10:44:56+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Monads in PHP]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2024-10-25-monads-in-php" />
            <id>https://assertchris.dev/decks/2024-10-25-monads-in-php</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[This talk is about the wonderful Monad pattern; what it is, where to find it, and how to use it.
]]></summary>
                                        <category term="deck" />
                        <updated>2024-10-26T10:39:41+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Oops! I made a game engine]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2025-02-11-oops-i-made-a-game-engine" />
            <id>https://assertchris.dev/decks/2025-02-11-oops-i-made-a-game-engine</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[I needed to teach a bunch of non-coders how to write JS, so I built a game engine. Not the wisest choice, but definitely one that taught me much about how game engines work.
]]></summary>
                                        <category term="deck" />
                        <updated>2025-02-12T11:11:04+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Building with Friday]]></title>
            <link rel="alternate" href="https://assertchris.dev/decks/2026-04-16-building-with-friday" />
            <id>https://assertchris.dev/decks/2026-04-16-building-with-friday</id>
            <author>
                <name><![CDATA[Christopher Pitt]]></name>
                                    <email><![CDATA[me@assertchris.dev]]></email>

                            </author>
            <summary type="html"><![CDATA[A live demo of Friday, my personal AI assistant, building a feature from scratch while I explain how it works.
]]></summary>
                                        <category term="deck" />
                        <updated>2026-04-16T17:16:18+00:00</updated>
        </entry>
    </feed>
