Arthur Costa · Porto, Portugal

Senior backend & platform engineer

I build platforms that hold up in production: moving fleets to the cloud, turning batch into event streams, and, on my own time, execution platforms and safety tooling for coding agents.

Arthur Costa

Senior backend & platform engineer · Porto, Portugal

I build platforms that hold up in production: moving fleets to the cloud, turning batch into event streams, and, on my own time, execution platforms and safety tooling for coding agents.

Open to senior backend or platform roles, remote or hybrid

Nine years in production (since 2017)

Decision records

2023–2025 · At work · Platform · Delivered

200+ instances to cloud local zones, with autoscaling

Compute cost fell by ~70% across 200+ instances.

~70% lower compute cost — 200+ instances moved from on-prem and edge sites to cloud local zones, with autoscaling

200+ instances migrated — with autoscaling, for live sporting-event peaks

Context and decision

Context. A real-time platform for live sporting events ran its workloads on on-prem and edge environments.

Decision. Lead the infrastructure modernization: migrate the workloads to cloud local zones and enable autoscaling, with multi-region load tests before peak events.

Stack. Cloud local zones · Autoscaling · Go · Python · Locust

2022–2023 · At work · Payments · Delivered

Payment settlement, from batch to event-driven

Processing success rose from 60% to 90%+.

60% → 90%+ processing success — payment settlement moved from batch to event streams with change data capture

Context and decision

Context. A legacy payment and settlement platform ran as batch processing on a monolith.

Decision. Move the core components to Java and Go, replace batch with streaming and change data capture, containerize on Kubernetes, and centralize logs and dashboards for the SLAs.

Stack. Java · Go · Streaming · CDC · Kubernetes

2026 · Own time · Platform · Working system

Horus: remote execution for builds and agent jobs

A changed worktree is a new job, never a silent retry; a worktree without a data class never leaves the machine.

Context and decision

Context. Builds and coding-agent jobs start on a workstation but need the CPU, isolation and uptime of a remote fleet, without leaking a private worktree or losing work halfway.

Decision. A local daemon with a socket API and a written durability contract; content-hash sync so a job runs on exactly the bytes submitted; recovery bound to that content; a versioned accounting ledger; gVisor sandboxes on VPS runners behind a data-class gate.

Stack. Go · Rust · gVisor

2026 · Own time · Virtualization · Spike

Firecracker microVMs as a sandbox compute driver

A failure-injection suite on a KVM host (kill mid-create, simulated reboot, duplicate RPCs, kill points 0–50 ms, a leak counter) and 23 security probes on a 22-item adversarial matrix. An unimplemented check reports SKIP, never PASS. Proposed upstream as OpenShell#4351.

Context and decision

Context. Can Firecracker microVMs, with the jailer, back an open-source agent sandbox runtime (OpenShell) through the whole lifecycle, and stay correct when things crash?

Decision. A compute driver with its own guest kernel, images from a verified catalog, reclamation of the previous run's VMs at start-up, and a guest flush before Stop.

Stack. Go · Firecracker · KVM

2026 · Own time · Platform design · Accepted

Retire my own agent platform; keep the native clients

Far less to operate; contribution rules now refuse new routers, schedulers and dashboards.

Context and decision

Context. My agent-workflow repository had grown a router, a scheduler, a coordinator hierarchy, a provider dispatcher and a dashboard in front of three coding-agent clients.

Decision. Retire it (19 October 2026). Each client runs natively; the repository keeps shared skills, a small configuration, standalone safety tools and 26 dated decision records.

Stack. Python · Bash

2026 · Own time · Platform safety · Accepted

Safety tools fail closed

Documented as a tripwire, not a sandbox, so nobody mistakes it for isolation.

Context and decision

Context. Coding agents run shell commands in real repositories from three clients with three hook systems; secrets once reached a model through process arguments.

Decision. One command-safety hook for all three clients; output redaction; long-lived credentials kept out of worker reach; a missing safety dependency refuses instead of being caught and allowed.

Stack. Python

2026 · Own time · Distributed systems · Lab

Course labs on microVMs, behind an mTLS control plane

A lab's user id stays reserved until its cleanup has succeeded; CA rotation cannot be bypassed by session resumption.

Context and decision

Context. A course platform gives every learner a disposable lab machine, created and destroyed constantly by many people at once.

Decision. A microVM lab runtime with a chaos test that kills VMs mid-session; idempotent resets by key; mutual TLS on a control-plane CA with reload without restart; pinned keyless signing that fails closed.

Stack. Go · Kotlin · protobuf

2026 · Own time · Storage & consensus · Study

A relational database, from storage to Raft

Built layer by layer as a study; each phase is a commit history.

Context and decision

Context. The fastest way to understand a distributed database is to build its layers in order and see where each guarantee comes from.

Decision. Disk manager, buffer pool, B+ tree, heap file and write-ahead log; SQL parser, planner and Volcano executor; 2PL then MVCC; Raft, Multi-Raft with range sharding, Percolator-style transactions, SSI with hybrid logical clocks, an S3 backend and the PostgreSQL wire protocol.

Stack. Rust

2026 · Own time · Sync & security · Working system

Offline-first sync with signed form-fill

The extension never fills a form the owner did not approve.

Context and decision

Context. A personal job-search tool runs on several desktops plus a browser extension; data must sync without a central source of truth.

Decision. Tombstones pruned only once every active desktop has applied them; fill tokens signed on the desktop with a P-256 key from the OS keyring; an encrypted vault export; an LLM judge measured against blind readings.

Stack. Go · Rust

2025–2026 · Own time · Developer tooling · Shipped v2.1.1

gitshift: many Git identities, one machine

Switching on a directory change went from about 3.8 s to about 0.5 s.

3.8 s → 0.5 s directory switch — gitshift identity switch on directory change, release v2.1.x

Context and decision

Context. Several GitHub and GitLab accounts on one machine means juggling keys, identities and signing by hand.

Decision. One command switches Git author, SSH key, commit signing and the GitHub CLI account, by alias or automatically by directory; releases through GoReleaser and a Homebrew tap.

Stack. Go · GoReleaser · Homebrew

Project source

Experience

  1. Software engineer, core call control

    2025–2026 · Cloud contact-centre platform

    Load tests to inform cost optimization and Kubernetes autoscaling; graceful shutdown and connection draining in a shared Helm chart; CI repaired with quality gates; codebase rules for agentic coding, shared with the team.

  2. Software engineer, platform / backend

    2023–2025 · Real-time platform for live sporting events

    Led the move of on-prem and edge workloads to cloud local zones with autoscaling (AC-001); real-time, event-driven services on serverless and containers; Go and Python automation; Locust multi-region load tests for peak events; CI/CD across GoCD, GitHub Actions, Jenkins, Buildkite, Ansible and Packer; metrics, logs, traces and alerts.

  3. Software engineer, payments / settlement

    2022–2023 · Payment and settlement platform (consulting)

    Led the modernization of a legacy payment and settlement platform to event-driven streaming and CDC (AC-002).

  4. Software engineer, post-purchase

    2021–2022 · E-commerce marketplace, several countries

    Backend services in Go, Java, Node.js and Groovy for post-purchase and payment workflows; faster claim and dispute resolution.

  5. Software engineer

    2019–2021 · Core banking, Brazil

    Monoliths and mainframe-based systems modernized into Java and Spring microservices; migration of microservices to the public cloud under regulatory SLAs.

  6. Associate software engineer, CRM & integrations

    2018–2019 · Fintech CRM

    Real-time CRM features integrated with banking services such as loans, OTP and account management.

  7. Associate software engineer

    2017–2018 · Software house

    CRM and warehouse management systems in PHP and JavaScript.

How I work

  • Fail closed: a missing safety dependency refuses; it is never caught and allowed.
  • Crash and recovery suites before claims: kill mid-create, simulated reboots, leak counters.
  • Evidence tied to a commit; a check that is not implemented says SKIP, never PASS.
  • Decision records for every significant choice, including retiring my own platform.
  • Load tests before peak events.

Also built

Drover

Watch and approve agent sessions from any device: a Rust core over UniFFI, pairing scopes bound to the consumed token.

Rust

JVM performance labs

Eleven on-heap versus off-heap lock-free scenarios with JMH, and 13 serialization frameworks behind one endpoint. Numbers not quoted until re-run with raw output.

Java · JMH

graphql-federation

Federation 2 across Java, Go and TypeScript subgraphs, gRPC between services, SLO burn-rate dashboards.

Java · Go · TypeScript · gRPC

Ponte

A management system for tutoring schools: live lessons with recording and consent, TOTP and lockout, a finance ledger ported to Go and checked by replaying a shared corpus.

TypeScript · Go · PostgreSQL

deep-engineering-knowledge-base

An LLM pipeline that writes and checks engineering lessons, with an independent critic that excludes the author.

Python

techish-visual

An engine for animated technical diagrams: a ThorVG WASM renderer and performance budgets in CI.

TypeScript

keyframe

A Linux studio for recording and editing technical videos, with cuts snapped to silence.

Rust

java-workflows

Reusable GitHub Actions for Java teams: a Java 11 to 25 matrix, security scanning and SBOMs.

GitHub Actions

Upstream

OpenShell#4351

Firecracker compute driver proposal, from AC-004 (open source). · open

OpenShell#4591

A gateway reporting "database is locked" under two concurrent clients. · open

Orca, 10 pull requests

SSH OAuth forwarding, pairing-offer rotation without restart, security events, isolation from external agent config. · 9 open, 1 closed

Stack

Languages
Go · Java · Python · TypeScript · Node.js · Rust · Kotlin
Cloud & runtime
Kubernetes · GKE · GCP · AWS · Helm · Serverless · Firecracker · KVM · gVisor
Data & messaging
Kafka · RabbitMQ · Streaming & CDC · PostgreSQL · MongoDB Atlas · Raft · MVCC
Delivery
GitHub Actions · GitLab CI · GoCD · Jenkins · Buildkite · Ansible · Packer · Terraform · Locust
Observability
OpenTelemetry · Grafana · Loki · Tempo · Mimir · Datadog · Dynatrace · ELK
Earlier
Spring · gRPC · Istio · Akka / Pekko · GraalVM · PHP

Community

Tech.ish Thoughts, a collaborative tech blog and GitHub organization (actors, JVM serialization and off-heap work, reusable CI, gitshift).

The Actor Model, at a DevOps community meetup in Porto.

Mentors Brazilians entering software engineering through an NGO.

Background

Associate's degree, Systems Analysis and Development (2016–2018).

Portuguese (native), English (full professional, C2), Spanish (limited working).

One profile, 18 systems concepts

Each visual study explores a distributed-systems mechanism. Every version includes the complete profile, available with or without JavaScript.

Quorum

Consensus

A five-node replicated log: each section commits only when three of five nodes acknowledge it. Stop a node and the page elects a new leader.

Offsets

Logs and CDC

The reader is a consumer of a partitioned log: an offset and lag bar tracks reading, and sections are views built from the stream.

Elastic

Autoscaling

Scrolling is event time: the page's density follows a live-event load curve from baseline to peak and back.

Trace

Tracing

The career as one distributed trace: roles are spans on a dated waterfall, and each record opens as its span attributes.

Replicas

Replication

Work is the leader, own time the follower: a replication log pairs them with lag in years, plus a failover drill.

Merge

CRDTs

Two replicas of the profile, at work and on his own time, edited apart and merged without a coordinator.

Ring

Consistent hashing

A consistent-hash ring of domains: sections are nodes in token order, and contact is "add a node".

Compaction

LSM-trees

The career as an LSM-tree: a memtable for what is changing now, levels down to the foundations, tombstones for what was retired.

Fencing

Leases and tokens

Storage that only accepts the newest token: every section is a fenced write, with fail-closed demos from the safety work.

Gossip

Epidemic protocols

Knowledge spreads like a rumour: community-led rounds that tell their peers, and a rumour graph over the stack.

Merkle

Anti-entropy

A SHA-256 consistency demonstration: compare a record with the delivered content, tamper with its text, and follow the proof path. This does not establish factual authenticity.

Heat map

Latency heat maps

Read from summary to raw events: zoom levels from career to years, months, days and records, using the commit sample.

Profile

Flame graphs

The career as a flame graph: width is years, the graph is the navigation, and search lights up every frame that uses a tool.

Spans & logs

Traces and logs

A log viewer: every record is a trace id, and choosing one filters every section of the page.

Flame graph diff

Differential flame graphs

Every case study is a before and after diff, and one scrubber moves every diff on the page.

Congestion window

Networking

One TCP connection between reader and engineer: a handshake hero, numbered segments, and fast retransmit when the reader skips.

Young collection

Garbage collection

Curation by a garbage collector: the habits are roots, and only work reachable from them stays on the page.

Write-ahead log

Storage and recovery

The career as a write-ahead log: an LSN rail, checkpoints between eras, and a "pull the plug" crash that redoes the page.