Jonas Kamsker
We Left GitHub for Forgejo. The IDE Plugin Didn't Come With Us. So I Built One.
My company moved off GitHub onto self-hosted Forgejo. The migration was clean; what broke was code review. JetBrains ships a pull-request tool window for Git...
AI Plugins Are Boring. Until They Click.
A few markdown files, some scripts, and a tiny website. Sounds underwhelming - until an agent wraps around it and suddenly your business process can explain ...
Broken by Default: Claude Cowork on Windows
Claude Cowork is broken by default on Windows. This is my journey figuring out why - and how to fix it.
Forgejo's CLI Can't Show Build Details? Fine. I'll Do It Myself.
My AI agents need hands and feet to do CI/CD for me. GitHub's CLI gives them that. Forgejo's doesn't. So I built what was missing.
The Site Is on Fire. Here's Your FTP Password. Good Luck.
A legacy SilverStripe site where the CSV export killed the server and the filters were theater. I built a CLI toolbox, pointed an AI agent at the fire, and f...
Drafting Effective Tasks for AI Pair Programming
A repeatable framework for briefing ChatGPT or GitHub Copilot X before diving into implementation work.
Distilling Multiple AI Iterations into a Single Winning Pull Request
How to evaluate, compare, and merge Codex-generated branches without losing the bigger picture.
Polyfill C#: Two Ways to Ship One Library Across Two Frameworks
Two strategies for supporting multiple .NET target frameworks - compiled conditionals and partial classes with file exclusion.
A Thunderbird's Tale: Taming Google Calendar
How to sync shared Google Calendars with Thunderbird using a CalDAV workaround when iCal links fail.
The Problem: ZeroTier Stops Working
A quick workaround for ZeroTier going offline on a Raspberry Pi - a cron job that auto-restarts the service.