Tony Sala — software engineer for hire.

I build websites, apps and the systems behind them, and I leave them tested.

available UK · remote or on-site contract or fixed-scope

$ hire --for · pick what you need

what are you building?

A fast, accessible site you can edit yourself, built and hosted where you choose.

$ hire --for "website"
→ design to deploy · accessible · fast · yours to host
brief me on this →

2 · selected work

Built, tested and shipped — not mocked up.

all work →
FEATURED CASE · OWN PRODUCT

Substation

A live console for a 4-node k3s cluster and a smart home. gRPC agents on every node stream into a Rust API; the Svelte 5 UI updates over WebSockets. Shipped through its own pipeline, with one-command rollback.

  • → Android apps: phone, music, Wear OS, Android TV
  • → Matter · Thread · Zigbee; voice, local-first with an LLM fallback
  • → GitOps with Flux; alerts with quiet hours; a Telegram agent
[RUST][AXUM][SVELTE 5][GRPC][K3S][FLUX][KOTLIN] read the case study →
$ substation --stats
rust tests~2,700 web tests~1,100 kotlin tests~440 commits1,128 nodes4
$ ship --target web
build [ok] → prove [ok] → import [ok] → live [ok]
walk 176 pages + design check [ok]
rollback: one command
all work · 7 entries

3 · how I work

  1. talk

    A call about the problem, not the tech. You get a written summary and a straight answer on whether I'm the right fit.

  2. plan

    The work cut into small slices that each ship on their own, so you can stop or change course at any point.

  3. build in the open

    Commits land in your repository from day one, each with its tests. You can click through progress whenever you like.

  4. ship & hand over

    Deployed with a rollback, written up, and handed over so your team — or the next contractor — can carry on.

$ man process the full process →

4 · principles

tests first
Code without tests is not production-ready. I want to know it works, not guess.
$ make test
explicit over implicit
Strict types, value objects, objects that can't exist in an invalid state. Readable beats clever.
declare(strict_types=1);
small, reversible steps
Many small changes, each shippable and each easy to undo. No big-bang releases.
$ git revert HEAD
no lock-in
You own the code, the repository and the infrastructure. Nothing depends on me staying.
$ chown -R you .

Something to build, or something to rescue?

Tell me what it is and when you need it. I'll reply with honest questions and a plan.

$ curl sala.dev/contact -d "project=…&when=…"

NORMAL /home available UK · remote tony@sala.dev updated
available Start a project →