1. 2023

    1. CSS only placeholder for contenteditable elements

      Here is how to make a text area that resizes automatically and has placeholder text, with no JavaScript with this clever CSS trick!

      435 words, less than a minute read
    2. Fully Headless Setup for Raspberry Pi

      Don't feel like hooking up a monitor and keyboard to your Raspberry Pi? I'll show you how to set up your Raspberry Pi for headless SSH access using just a few commands.

      296 words, less than a minute read
    3. Self Hosted Backups with Minio, Kopia, and Tailscale

      Ditch complex SSH setups and leverage Minio's S3 compatibility with Tailscale for secure, encrypted backups.

      901 words, 3 min read
    4. Setting up my blog as an Onion service (Tor hidden service)

      See how you can use Tor and Docker to create your own hidden onion service, perfect for tech enthusiasts and privacy advocates.

      861 words, 3 min read
    5. Making the Slow Explicit: Dynamodb vs SQL

      Bad SQL habits are to blame for slow databases, not NoSQL magic. Here's my thoughts on how DynamoDB forces better code for scalability.

      963 words, 3 min read
    6. Enforcing a "Do Not Merge" label with Github Actions

      Stop accidental code deployments with a clever GitHub Actions trick using labels to prevent merging pull requests until they're truly ready.

      946 words, 3 min read
    7. Why I use Dev containers for most of my projects

      Let's explore how to use DevContainers to create a one-click development environment with all the tools and services you need.

      951 words, 3 min read
    8. Get inferred type for a generic parameter in TypeScript

      Dive into using TypeScript to extract inferred types, inspired by Zod's schema inference magic.

      458 words, 2 min read
  2. 2022

    1. Hosting websites without a static IP with Gandi LiveDNS

      Want to ditch expensive dynamic DNS and keep your home server online? I built a tool to use Gandi's free LiveDNS with lightning-fast updates – under 250ms!

      437 words, less than a minute read
    2. Solving "XML Parsing Error: no root element found" in Firefox

      A short piece about a weird XML parsing error I had to deal with, including some Rust code.

      278 words, less than a minute read