Notes from
the workshop.
Write-ups of real problems we hit while building and shipping our own products, and how we solved them.
6 min read
Online payments in a Flutter food app: what we learned wiring Paymob into Countasty
Countasty, our healthy-food delivery platform in Egypt, takes card, wallet and Apple Pay payments through Paymob. The happy path took a day. Failed payments, late webhooks and Apple Pay inside a web view took the rest of the week. Here is what we changed and why.
4 min read
Deploying to shared hosting without FTP: lessons from cPanel's API
Shared hosting is still the cheapest home for a small PHP app or static site. Here is how we deploy to it safely through cPanel's file API, with backups, line-ending surprises and the checks we run after every release.
4 min read
Using Claude Code hooks to open a page while your AI agent works
Claude Code can run a shell command when you send a prompt and when it finishes. We used those two hooks to tell a web app when the agent is busy, open a browser tab only when needed, and stay silent inside the agent's context.
4 min read
Rewarded ads on the web: points, not cash, and limits instead of trust
Web rewarded ads give your server no proof that an ad was watched. Here is how we designed around that with nonces, minimum durations, gaps and daily caps, and why the reward is points rather than money.
4 min read
A JSON file and a lock: when a small PHP app doesn't need a database
For an app with a few hundred users, a single JSON file guarded by flock and written atomically is simpler and safer than you might think. Here is the pattern, why each line is there, and the point at which we would move to MySQL.
4 min read
Sign in with Google in plain PHP: the checks that actually matter
You do not need an SDK to accept Google sign-in on a small PHP app, but you do need to verify the token properly. These are the five checks we run, and the session cookie settings that go with them.
5 min read
From in-browser Babel to pre-rendered pages: fixing a React site without a framework
Our studio site compiled 600 KB of JSX in every visitor's browser and showed search engines an empty page. Here is how we fixed both with one esbuild call and headless Chrome, without moving to Next.js.
