Single-File Tool Architecture
ProgrammingThe shape I give small tools: one file, one job, sections in a fixed order, an exit-code contract at the top, and three ways in for input — plus its Bash variant for generators, and when a tool outgrows it.
Technical notes, projects, modules, tools, workflows, and architecture on electronics, software engineering, and DevOps.
The shape I give small tools: one file, one job, sections in a fixed order, an exit-code contract at the top, and three ways in for input — plus its Bash variant for generators, and when a tool outgrows it.
The digital signature platform of the City Government of South Tangerang: signers prove who they are, sign PDFs to PAdES B-LTA with certificates from the platform's own authorities, and anyone can verify the result — version 2, which I designed, built and operate.
Release Workflow: Development to Production is the procedure every change of mine follows from my laptop to production — which steps I automated, which I deliberately left to a person, why each step sits where it does, how I diagnose a failed release, and how I recover from it.
A small Rust service between applications and S3-compatible storage: it hands out presigned links so browsers talk to storage directly, gives each file a lifecycle, copies between buckets on the server, and keeps storage credentials out of every application.
A single Python script that proves S3-compatible storage is ready before an application depends on it, by using every bucket the way a real client does and catching the failures that return HTTP 200.
Clean Architecture is one of the architectures I use: why I chose it, the folder and naming conventions every module of mine follows across Rust, Python, Dart, Node.js and C, the questions I check a module against, and where I use something else instead.
My code is read by people who were not there when it was written: colleagues, me months later, or an AI agent that forgets on every reset. The clean code rules from Robert C. Martin I apply in every language, shown in a Rust service.
SMTP and IMAP credentials fail late and far from their cause: a reset email that never arrives. A small check proves both directions first, with a tokenised test message, a read-only inbox check, and broken config kept distinct from a broken server.
A 4 GB laptop GPU once sent every heavy job to a borrowed Colab runtime. Deciding per piece of work instead — by a measured number, by reliability, by a change of method — split one project across three places and deleted 9975 lines of machinery on the way home.
Each project began with its interface served from inside the borrowed Colab runtime, through Colab's own proxy — until Colab warned against it. Moving the interface out made the runtime a pure worker, and left two codebases held together by nothing but an agreement.
Get an email when a new article is published.