How to Use an Android Phone Camera in OBS
Mirror your phone's camera to your computer with scrcpy, and record it with OBS.
Dev tutorials, thoughts on software development, and the occasional essay.
Mirror your phone's camera to your computer with scrcpy, and record it with OBS.
Given an array of two-dimensional objects, how do you sort them by their natural reading order?
A simple web component for rendering isolated code embeds using HTML, CSS, and JavaScript.
What happens when you derive an element's color from its inherited color in CSS?
According to the people who sell AI products, it's going to take your job in the next few years. Then what?
Why should I have to opt out of something I never agreed to in the first place?
A quick guide on how to use a free and open-source tool to separate stems from audio tracks using locally installed models.
Some AI agents can execute code or connect to services. If you're not careful, you could be the victim of prompt injection and RCE attacks.
Generate a sourcemap and add it to Eleventy's global data.
A very serious eulogy that is meant to be taken literally.
My recommended settings for a fresh installation of Windows 11.
Improperly routed cables can cause the Framework 13 bezel to pop back out.
Safely wipe a drive using a bootable USB and diskpart.
Learn how to use the show(), showModal(), and close() methods to toggle an HTML dialog's visibility.
Back up your entire WSL distribution and import it on a different machine.
There's a challenge going around where folks tag each other with questions about their blogs. Here are my responses.
Why does JavaScript's parseInt treat keycap emoji as integers? Is it a bug, a feature, or both?
Learn how to decorate your Markdown code blocks with Prism to add line numbers, file names, and copy-to-clipboard buttons.
Looking back on everything I learned and tried in 2024.
Poorly designed API routes and an account creation loophole cause route collisions on Twitter.
A reference for downloading, splitting, and optimizing videos with CLI tools.
A look at some best practices for creating performant game animations in JavaScript.
Bash aliases I use to speed up my workflows.
Move files between Windows and WSL using the wslpath command-line utility.
Programmatically read your machine's IPv4 address on Linux.
After some recent incidents involving Netlify and Vercel, I decided to play it safe and move my website and another side project to Cloudflare.
Eleventy 3.0 adds a new API to optimize images anywhere on your site, without shortcodes.
In this deep dive, you'll learn about the Unicode character set and how it's encoded and decoded with UTF.
In Eleventy 3.0, virtual templates enable plugin authors to publish and share dynamic templates.
With a few lines of CSS, you can override metrics for fallback fonts to minimize layout shifts.
Subtitles can capture essential dialogue and sounds, but what about the quiet parts?
A post-mortem of my first attempt at upgrading a laptop.
The irrational fear of mutation in programming can sometimes do more harm than good.
Reflecting on an unusually eventful year in my life.
Learn how to implement a progressively enhanced theme switch component using HTML, CSS, and JavaScript.
After nearly two decades of living in the United States, I'm proud to say that I'm now officially a U.S. citizen.
With eleventy-plugin-code-demo, you can easily add interactive HTML, CSS, and JavaScript code demos to your Eleventy site using Markdown.
In JavaScript, class fields allow you to define properties on a class instance outside the constructor. In the case of function properties, it's important to understand how fields differ from methods and their potential tradeoffs.
Implement a simple algorithm that listens for a sequence of keystrokes in JavaScript.
Normally, React's Context API is used to avoid prop drilling. But you can also use it to detect if a component is a child of a particular component.
Learn how event capturing, targeting, and bubbling work in JavaScript; how to prevent an event's default behavior; how to stop event propagation; and more.
When using the font-face local() function to load fonts installed on a user's system, double-check that sure you're requesting the right font family.
Documentation is one of those things that you don't appreciate until you have to live without it.
Use JavaScript's FormData, URLSearchParams, and URL constructors to serialize an HTML form's data into a well-formatted and encoded URL.
The longer you leave tech debt unresolved, the more problems it will create for your team, until one day it becomes unbearable.
Using the properties of congruence modulo, Alice and Bob can generate a shared private key and communicate publicly, while Eve will struggle to decipher their messages.
Requiring certain characters in passwords is counterproductive and encourages bad habits that can actually weaken passwords.
Tech Twitter can be a great way to network with other developers and learn new things. But it can also be unhealthy.
Build an accessible image carousel that supports multiple input modes and is progressively enhanced with CSS scroll snap and JavaScript.
By default, WSL 2 may reserve a significant chunk of your host RAM. Thankfully, we can limit its memory usage with a .wslconfig file.