The Universal Plug: Connecting Containers to Callables
PSR-11 solved an important problem in PHP: it gave us a universal socket for dependency containers. Any framework, any library, any application can expose its services through ContainerInterface, and…
Error Handling in Next.js with catchError
react-error-boundary has issues with Server Components in Next.js. catchError is a framework-aware alternative that handles notFound(), redirect(), and server data re-fetching correctly.
John O’Nolan on Ghost’s CLI
John O’Nolan added a new CLI to Ghost called ghst: We’ve spent 10+ years focusing on having a clean, well designed interface for Ghost. It’s something we care a lot about, and spend…
SQL Server Performance Office Hours Episode 53
SQL Server Performance Office Hours Episode 53 Summary In this video, I dive into answering five community-submitted questions about a wide range of topics related to SQL Server and more—ranging from…
How we decomposed a monolithic iOS application into 130+ modules and reduced build time by ~35%
Greetings, traveler! The application I joined had a long history. Development started around 2015, with a large Objective-C codebase that gradually evolved as different teams took ownership over the…
Documentation | Liftosaur
Contact Us If you have any questions, don't hesitate to contact us at info@liftosaur.com ! Summary Liftosaur is an app that combines both weightlifting programming part (that people sometimes use…
From Hype to Reality: Building a Hybrid Transformer-MVO Pipeline
A Five-Way Decomposition of What Actually Drives Risk-Adjusted Returns in an AI Portfolio The quantitative finance space is currently flooded with claims of deep learning models generating massive,…
SQL Interviews in the Age of LLMs: Patterns Over Queries
SQL interviews still expect you to write queries from scratch in 2026. The good news: most problems fall into just 12 patterns. Learn the signals, recognize the shape, and the blank editor stops…
Running Zed Editor on ARM Chromebooks (Mali G925 / Crostini)
I recently a bought a Lenovo Chromebook 14, and wanted to run Zed on it. This took me a little while, but I finally figured…
OpenAI Bought Astral - and my fav tool uv
A critical look at OpenAI's acquisition of Astral and what it means for Python developers who depend on uv, Ruff, and other tools. Exploring the risks of corporate acquisitions turning essential…
How To Find Missing More Tags in Your WordPress Posts
Find Missing More Tags adds a page under Posts in the WordPress admin. It scans every post on your site and tells you which ones are missing the more tag.
Shadertoy to ShaderGif: Porting mainImage() and iTime/iResolution/iMouse
Porting a Shadertoy shader to WebGL or ShaderGif is usually much simpler than it looks. In most cases, you do not need to rewrite the shader logic. You need to wrap mainImage(), provide the uniforms…
Spells for the tty: FFmpeg
FFmpeg syntax demystified: master defaults, strip chapters, and add cover images. Your new go-to cheat sheet for FFmpeg.
I built a CLI for Ghost
John O'Nolan built a CLI for his own product - and found himself using it in an entirely new way. The underlying trend here is really exciting.
List all my open PRs on GitHub
If you open github.com you’ll see the copilot chat interface. Apparently you can ask for assistance in there. For example, there is even a helper button for it, you can ask it to find all your…
Dynamic Mappings with the TinyCsvParser 3.0.0 API
Dynamic Mappings with the TinyCsvParser 3.0.0 API.
Obsidian Clippings → Kindle Sync Bot
A bot that watches an Obsidian vault folder for web clippings and automatically sends them to a Kindle as EPUBs
GenAI: The Architect’s New Brainstorming Buddy, Not a Replacement
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=11015085&casa_token=5hSfww3AlwIAAAAA:eTn9d1W-p95CJtxwAcvPft_bWZB9R8i6P-d1IZBln6MmSF-En1Q4vKdgbejF8w2klKZYeX1VZx4&tag=1 For years, software…
Maybe I was a builder all along
I always thought of myself as a coder. Then AI showed up, and for a moment it felt unsettling. Tools like Claude Code made it feel like a skill I had spent years building was being compressed into a…
Level 5 in Practice: Four Agents, Four Worktrees, One Developer
I described Level 5 in the six levels post: multiple agents in parallel, each on its own worktree, the IDE for reviews only. That was the theory. Here’s what a Wednesday morning actually looks…
netlab: Switch to Lab Directory After an SSH Session Loss
I work on a laptop that loves to power down when not used (the right thing to do), which often breaks the SSH session to my netlab server (not so good). Reconnecting is trivial. Figuring out which…
I built a CLI for Ghost
And it made me wonder what the future of UI holds
The Garbage Collector
In the previous article we explored the Go scheduler — how goroutines get multiplexed onto OS threads, the GMP model, and all the tricks the runtime uses to keep your cores busy. But there’s a…
You no longer have to wait for Copilot to finish thinking
There's a specific kind of frustration familiar to anyone who's used an AI coding agent: you send a request, it starts running, and thirty seconds later you realize you forgot to add a critical…
Build your own tools!
I think the first software tool I ever wrote was a scraper for webcomics. It was terrible. I wrote it in C# using Windows Forms in like 2008. But, crucially for me, it scratched the very specific…
Beyond CRUD: A Practical Guide to Modeling Business Processes in REST APIs
Stop forcing complex business logic into basic CRUD operations. This guide covers 5 actionable patterns for designing RESTful APIs that communicate true intent. Learn when to nest sub-resources, how…
Using marimo with Django
A couple of years ago, I got lucky and found Daniel Roy Greenfeld's dj-notebook project thanks to a reddit post. I wrote about it here. It's held up well. I still find it very useful in almost any…
Handle Uncountable Words in Rails Inflections
Some English words don’t have a separate plural form. “Staff” is staff, “metadata” is metadata, “feedback” is feedback. Rails doesn’t always know this—it will happily generate a staffs table or a…
Making Concurrency Visible: Gerbil Playground v1.2
Gerbil Playground v1.2 adds an actor message log that makes concurrency visible: watch spawned threads exchange messages in real time. Plus ... embeddable mode for dropping live REPLs into…
Rfc Latest Color Input Concept
Try the latest <color-input> concept(I think it's hella rad) ⚓️ anchor() progressive enhancement🤖 workers for color compute🙈 new animations & interactions🎨 gamut boundaries, mapping,…
Fizzy: A Kanban Board Your Agent can Talk To
I started using Fizzy, Basecamp's "fun, modern take on Kanban." While Fizzy is devoid of AI features, it is a perfect complement to a CLI agent like Claude Code. I manage my personal todos by talking…
Terraform and AI are a Match Made in BitHeaven
Learn how pairing Terraform with LLMs reduces context fatigue and speeds up infrastructure work. Discover why AI excels at handling syntax lookups and boilerplate while you focus on architecture,…
software on demand
It’s kinda weird that I am now able to materialize software on demand.
More Better
What would it look like to be a good software engineer? Would it mean that you are able to solve complex problems with proven solutions? Or would it mean that you can provide novel and creative ways…
Redefining Go Functions on Mac OS
I recently wrote about redefining Go functions, which was mostly about Linux on amd64. But I ported it to arm64, tested it on Linux, and figured it would work on Darwin/arm64 too. Lacking a way to…
Learn Ring - 02. Who Am I?
Notes Freelancer Karthikeyan A K (Car + Thick) Chennai, India Tech freak Web Developer Ruby on Rails Data Scientist SciCloj Book: Stats With Clojure Numerical Works Injee
Fight for the Future
Every engineer has the same fear. It's not that their code will break in production — they can handle that. The fear is that someone will look at what they built and silently conclude…
AI in Software: A Conformist Catalyst for Human-Centric Innovation
The Role of AI in Software Innovation: Disruptive yet Conformist Artificial intelligence has made groundbreaking strides in various domains, yet its contributions in software innovation still raise…
Strand PWAs Part 2
Since my initial post was a bit scatterbrained and ill-explained, I thought before getting into any progress details I’d first re-introduce this project with a proper explainer, cover the work…
Allocatable Fortran wrappers, from 1D to N-D
Half the work in computational science is moving data between programs that disagree about how memory works. Allocatable arrays are where the disagreement starts. Background About a year ago I…
Code Proven to Work - The Math Way
This post is aimed at a general programmer and no prior knowledge of math or CS is assumed. I got nerd-sniped to write this after reading Simon’s excellent post Code proven to work. As someone…
[chromatite] devlog: Some housekeeping tasks
Some parts of the 32KB version of [chromatite] were written in a bit of a rush. Now that one of my main challenges is getting the timbre on the plucks right, I figured it was about time to fix those…
Starlette 1.0 skill
Research: Starlette 1.0 skill See Experimenting with Starlette 1.0 with Claude skills. Tags: starlette
GoLang for Python Devs
This post is a text version of the code samples and resources from Golang for Python Devs by Dana Garifullina from Kiwi PyCon 2016. Some resources no longer work, so I’ve updated to the most accurate…
Community vs. Pro: what you get in each edition
Since the launch of Obra shadcn/ui Pro, we’ve had a few people ask what exactly the difference is between the free Community Edition and Pro. This post breaks it down clearly. The Community Edition…
How to Build a Combined Analytics Dashboard with Claude Code
Plausible shows visitors and page views. Google Search Console shows what people searched to find the site. YouTube analytics live in YouTube. Checking all three means three tabs, three logins, and…
How to Build a Screenshot Agent for Claude Code
Claude Code supports custom agents defined as markdown files in .claude/agents/. Each agent has a name, a description, a model, and a set of instructions. Any Claude Code session can spawn them. Once…
Announcing bitexpert/phpstan-sylius 0.3.0
We've just released an updated version of our phpstan-sylius extension, bringing improved compatibility with the latest Sylius Stack features.
Uses for nested promises
A recent conversation on Mastodon reminded me of some old JavaScript history. When promises were relatively new and the Promises/A+ spec was being developed, there was a request from people with…