Senior and lead software engineer
I build the systems behind other people's products.
Laravel and .NET for the work that has to hold up after I hand it over, plus open source tools other developers actually install.
- packages published
- 5
- exercises shipped
- 1,324
- audit rules written
- 93
- every one of them
- MIT
What I ship with
- Laravel
- .NET
- Next.js
- SvelteKit
- React Native
- Postgres
Selected work
Things I built and shipped
All projects
AI Writing Rules
A Claude Code plugin that stops Claude writing like an AI. It loads a 270-word ruleset into every session, then runs a checker after every file write that flags the tells by line number and refuses to let the model move on. The rules come from 29 documented patterns, each researched into its own file with a measurable threshold: burstiness under 0.4 where human prose sits at 0.6 to 1.2, more than 20 em dashes per 1,000 words where humans use 3.2 to 10, more than one polished three-item list per 200 words. The checker is 17 regex rules and 3 statistical ones in Python with no dependencies. Tested against a sample with 14 planted tells, it caught all 14, stayed silent on clean prose, and found a real tricolon in the research files themselves.
Vouch
A hiring platform for Kuwait and the GCC, designed from a blank page around one promise: every job here is real, and every employer answers. 82 screens and 642 prototype links across a 15 page website at two breakpoints, an 18 screen mobile app, and 29 dashboard screens covering job seeker, employer and internal admin. The position comes from the data on ghost jobs rather than from features, and the whole system runs on four variable collections that switch theme and language.
Filament Atelier
A visual page builder for Laravel, shipped as a Filament plugin. Developers define blocks in code, clients arrange them and watch the real page update as they type.
Services
What I take on
All services-
01
Mobile Application Development
With 6+ years of hands-on mobile and full-stack development experience, I build apps that go beyond a good-looking prototype — they're engineered to perform, retain users, and grow with your business.
-
02
Freelance Web Developer
Six years building production websites and web applications. You get one experienced developer, direct, and clean code you own at the end.
-
03
Obsidian Plugin Development
Your team runs on Obsidian and it does almost everything you need. I build the part it's missing, and I have a plugin that passed Obsidian's public review.
Writing
Things I wrote
All writing
Moving from Vercel to Hetzner with Coolify: the guides are quoting dead prices
Almost every "move from Vercel to Hetzner with Coolify" guide was written in 2025. Hetzner raised cloud prices twice in 2026, and the exact server those guides name now costs 144% more. Here are the real numbers and the plan to pick instead.
AI made writing code cheap. Review is still expensive
Teams merged 98% more PRs this year and review time went up 91%. The bottleneck moved from writing code to approving it, and most teams haven't noticed.
I replaced Spotlight with Raycast, then replaced Raycast with look
I moved from Spotlight to Raycast to fix app launching, then moved to look because Raycast's file search kept getting in my way. Here is the honest trade.
Build diary
What changed this week
All devlogs
The prose linter's first real catch was in its own research folder
I had writing rules in a document and kept pasting it into projects, where it worked until the session got long. Turning it into a hook meant learning that a PostToolUse hook exiting 0 talks to nobody. Then the checker flagged its own documentation, which was fair, and found a three-item list in the file arguing against three-item lists.
What is left, and the things I am not going to build
Seven releases in eight days took Atelier from an MVP to something with a sitemap, structured data, revisions and CI. This is the honest state of it: what works, what is missing, what is deliberately refused, and the two gaps I cannot close by writing more code.
Building a demo blog route found a bug older than the feature
v0.3.0 adds structured data: a JSON-LD graph on every page from three sources. While proving that a host app's own blog route could share it, the route 404d. Atelier's catch-all had been registered ahead of every route the application defines, since the first release, and the docs promised the opposite.
Free
Checklists I use on real work
All resourcesFree, one email field, and I will tell you exactly what lands in your inbox.
The 17-Point Self-Hosted Security Checklist
The exact checklist I run on every server before it touches the internet. Firewall, SSH, containers, secrets, and backups, with the commands. Free PDF.
16 Moves That Make Claude Code Work in a Large Codebase
The setup order behind Claude Code deployments that stick, from CLAUDE.md files through hooks, skills, plugins and LSP to subagents, with a 19-step start-here list. Free PDF.
The 36-Point SEO, GEO and AIO Checklist
Thirty-six checks for getting found in Google and in AI answers. Each one has a plain-English line, a free way to run it, and a link to its source. Plus the eight things sold as AI SEO that do nothing. Free PDF.
About
Responsible for whether it ships, not just for my own code.
I am a senior and lead software engineer at dsrpt, an Australian company working out of Kuwait and Australia.
Outside that I ship open source: an audit engine on npm, two Obsidian plugins, a CSS library with no build step, and a training app I built because the subscription ones would not give me my data back.
Read the full storyWORK WITH ME
Got something that needs building, or something that has stopped moving?
Tell me what it is, roughly when you need it, and what you have already tried. I will tell you honestly whether I am the right person.
Replies within one business day.