I've finally found the will to setup my own personal Git forge. In this article I'm going to present in details my set up and discuss pros and cons that come with it
Building out a 3-node NUC mini cluster on k3s
Replaced TCP Shield with playit.gg, added automated backups, refactored plugin management to Modrinth, switched to Aikar's JVM flags, and built a configuration-driven sync engine.
Mirroring a static Hugo blog onto ATProto with standard.site and Sequoia, plus the GitHub Actions wiring that republishes the records on every push without any manual steps.
Self-hosted GitHub Actions runners on a small Hetzner VPS cut my CI wall-clock from ~12 minutes to ~3 minutes for about half the price of the GitHub-hosted minutes I was burning. Here's the full setup.
Static sites can publish to AT Protocol with Sequoia. Making it work in CI required solving a state tracking problem that isn't obvious until you've created your fifth set of duplicate records.
Static Sites are simple. They're just files, and mostly text. Here's a PowerShell one-liner to make a really simple static site: We make static sites with whatever language we want, and we can publish them about anywhere for free.
Joel Griffith explains how Browserless runs headless browser automation at scale and introduces BrowserQL for querying the web with SQL-like syntax.
Netlify CTO Dana Lawson discusses her journey from the US Army to leading engineering teams and Netlify's evolution into AI-powered developer tools.
I'm James, and the code above is Hello World in PowerShell. Long ago, I worked on the PowerShell team and helped build a really beautiful and interesting scripting language. In the past couple of decades I've been continuing to explore and grow the capabilities of the language, and have beamed with pride as more and more people have been inspired.
A deep dive into resolving Docker BuildKit attestation manifest incompatibilities that prevent ECS deployments, including investigation steps and solutions.
A comprehensive guide to deploying multiple environments in a single AWS account using CDK, featuring sophisticated deployment strategies, GitHub Actions automation, and real-world architectural patterns
Pin tool versions in Go 1.24 with the new 'tool' directive. Replace tools.go pattern with native go.mod support for project tooling.
To me, 2024 has been a bit different than previous years, mainly for two reasons. A lot has happened at a rather high pace and I learned a lot but with little rest and time for recaps. So I’m writing this kind of as a retrospective and as a log of my learnings and milestones. And to update my [portfolio](/).
How to set up GitHub Actions workflows that intelligently handle content vs code changes, with automatic PR creation and selective deployments
Ivan Buzarin discusses two decades of cloud development evolution, from CodeAnywhere to Daytona's self-hosted dev environment management.
Master Docker mount types: volumes, bind mounts, tmpfs, and build cache. Clear syntax comparison between -v and --mount options with docker-compose.
How this blog is built: Hugo static site generator, GitHub Actions deployment, Cloudflare caching, and R2 storage. Simple, stable, and cost-free.
Avoid here-doc pitfalls when running remote commands via SSH. Learn variable expansion gotchas and simpler alternatives for deployment scripts.
Solomon Hykes, Docker creator and Dagger co-founder, reflects on containerization's impact and how Dagger is simplifying CI pipelines.
Track dev dependencies like golangci-lint in go.mod with a tools.go file and build tags to exclude them from production binaries.
“I wasn’t trained to do that.”
Vlad Ionescu explores Earthly's containerized build automation and the business challenges of creating developer-friendly CI tools.
Erik Bernhardsson explains how Modal is revolutionizing serverless computing for data teams with seamless GPU access and flexible container primitives.
Modern Python dependency management using pip-tools, hatch, and PEP-621 for web apps and libraries with reproducible builds.
Developer advocate Sabin Adams dives into Prisma's type-safe ORM magic, exploring schema power, Prisma Accelerate, and the future of database tooling.
Automate your GitHub profile README with periodic updates using Actions. Parse RSS feeds and dynamically display latest blog posts with NodeJS.
Automate commit message validation with GitHub Actions. Enforce refs and closes patterns to maintain clean Git history and link commits to issues.
Jake Cooper, CEO of Railway, discusses building automatic infrastructure deployment that figures out how to create environments from your code.
Automatically merge Dependabot pull requests using GitHub Actions. Configure branch protection and status checks for safe automated dependency updates.
Run background health checks in CI with nohup and ampersand. Test server readiness with retry loops and automatic cleanup on success or failure.
Production-ready GitHub Actions workflow for Python with multi-OS testing, dependency caching, automated updates, and daily scheduled runs.
Setting up the Netlify CLI to deploy a Next application to Netlify
I wrote a post a little while ago about how SRE is really just sneaky anarchism, and this is somewhat of a followup.
It's been quipped more than once that most amazing Silicon Valley innovations are simply a bunch of nerds poorly recreating a service that already exists, but with an app. While I find this to be in some ways a truism (after all, there is nothing new under the sun), it's a fairly trite observation. What's far more interesting is how the organizations that build and deliver these 'innovations' themselves develop, and the process of that development is especially interesting due to the pressure-cooker of free money and labor elasticity that has characterized the 'startup economy' over the past twenty years or so. What's any of this have to do with DevOps, you may ask? Simply this -- DevOps is a reaction to the commodification of Agile, and the rise of SRE is a reaction to the commodification of DevOps. To reduce the thesis further, many of the trends you see in software development and delivery can be understood as a cyclical reaction to anarchists running headlong into the invisible backhand of the free market.
I love how Serverless enables simple solutions to common DevOps tasks: in this article I describe one simple way to automate MongoDB database backups using AWS Fargate, S3, and CDK.
The technological side of Email has always occupied a bittersweet corner in my nerdy heart. In this article I dive a bit in the history of SMTP and share a simple but effective solution that I currently use to rationalise system and users' email delivery for a few of the Linux systems I manage.
In my experience, it’s the ideas that you don’t expect to work that really take off. When I registered a domain name a month ago for Deserted Island DevOps, I can say pretty confidently that I didn’t expect it to turn into an event with over 8500 viewers. Now that we’re on the other side of it, I figured I should write the story about how it came to be, how I produced it, and talk about some things that went well and some things we could have done better.