Blog
Notes from the build
Short, practical posts from the systems I run: automation, ERP and POS, fleet IoT, infrastructure, and the tech decisions behind them.
How I scope an automation project in one call
Thirty minutes, one real task, four questions. What I ask before quoting an automation project, what I refuse to automate, and what the written quote contains.
- automation
- process
- freelancing
Two CDNs in a row: three days of 429 errors
Images, fonts and whole pages kept failing with 429 errors. The server was innocent: two CDNs in a row, the second rate-limiting the first.
- web
- hosting
- debugging
- cloudflare
Deploying a static site to Hostinger from a script
Build, zip, upload, deploy, clear cache, verify: six steps to publish a static site on shared hosting, and what each one can get wrong.
- web
- hosting
- automation
Cloud or offline: where a restaurant POS should run
A cloud POS stops taking orders when the internet does. An offline one lives on a single PC. I have shipped both, and this is how I choose.
- pos
- restaurant
- architecture
From grey structure to approved interiors, room by room
How a four-level house went from bare brick to an approved design for every room: site photos, designs over them, a 3D model and a tour.
- architecture
- interior-design
- visualisation
- ai
Twenty-four client logos, one request
A wall of client logos used to cost 24 image requests. Now it costs one: how the sheet is built and the fallback a CSS background needs.
- web
- performance
- css
Audit the process before you automate it
Hours × error risk decides what gets automated first. The impressive task is almost never the right one.
- automation
- process
- consulting
Month-end fleet reports from a portal in one click
How a Flask app replaced days of spreadsheet work by pulling the operations portal once per period and recalculating every report from cached data.
- accounting
- fleet
- python
- automation
A POS that refuses to sell below cost
For a flower shop, every bouquet is assembled from loose stems. The usual retail POS cannot tell whether the price covers the cost, so I built one that can.
- erp
- pos
- retail
- node
Turning email into Odoo tasks without drowning in noise
The first version of the email-to-task bot created a task for every message. The useful version knows which emails are work and which are reports, newsletters and reply-alls.
- odoo
- automation
- microsoft-365
- python
A whole house from hand sketches, in Three.js
Floors as data, walls generated on a half-foot grid, a facade placed by rule. How a four-level house model went from pencil sketches to a client pack in two days.
- 3d
- three-js
- architecture
- visualisation
Why this site went black at the last section
Two black pages, two causes: a texture loaded from a CDN with no error boundary, then a cached rate-limit error. A post-mortem.
- react
- three-js
- debugging
- web