workshop.co Start a project →
Status · accepting 2 of 4 inbound briefs this quarter

A small engineering shop. We build hard backend systems.

For companies that have already tried hiring. Distributed systems, database internals, realtime infra, and the migrations nobody wants to own. Eight engineers, no PMs, no consultants billing on top.

Workshop · est. 2020
Remote · Berlin · Brooklyn · Lisbon
8 engineers · 0 recruiters
RustGoPostgresKafka
Engagements · since 2020
31
Avg engagement length
11.4 wk
Pilots → engagement
94%
Repeat clients
17 / 22
Forecast cinder/trading Halcyon Bio Linnea stratos/ Brightwave Quartermast Nimbus northwind.io Atrium Vantage coast.dev
[01/06] Selected work

Six engagements worth talking about.

We've done 31. These are the ones with a metric we can publish and a client who agreed to be quoted.

FORECAST · realtime engine PROD · v3.2
ingest shard-A shard-B query
Realtime query engine for 240k QPS
Forecast · Data infra · 2024

P95 latency 4ms → 0.8ms.

14 weeks →
Rust + custom WAL, sharded by tenant, hot-shard rebalancing.
CINDER · matching engine µs · p99 31
  BIDS         ASKS
  108.42 x 12  108.51 x  8
  108.41 x 31  108.52 x 22
  108.39 x  7  108.53 x  4
  108.36 x  9  108.55 x 18
  ─── matching ────────────
  ▸ 108.42 → 108.51   filled 8
Order matching engine in Rust, sub-µs hot path.
Cinder Trading · Markets · 2024

Sub-microsecond matching on commodity hardware.

11 weeks →
HALCYON BIO · pipeline N = 12,408 samples
Bioinformatics pipeline · 38h → 47min per cohort.
Halcyon Bio · Genomics · 2023

Replaced a Nextflow pipeline with a sharded Python+Rust hybrid.

9 weeks →
LINNEA · pg → crdb 42 services · 0 downtime
users████████████████████ 100%
orders████████████████████ 100%
events████████████████████ 100%
analytics██████████████░░░░░░ 72%
archive███████░░░░░░░░░░░░░ 35%
Postgres → CockroachDB, zero customer downtime.
Linnea · SaaS · 2023

2.4 TB live migration, dual-write cutover, 11 weeks.

11 weeks →
STRATOS · cross-chain 6 chains · merkle bridge
ethoparbbasel2
Cross-chain settlement, 6 EVM chains, $1.04B routed.
Stratos · Protocol · 2025

Bridge contracts, indexer, settlement queue.

16 weeks →
BRIGHTWAVE · analytics embedded · multi-tenant
Embedded analytics SDK, sub-200ms time-to-first-chart.
Brightwave · Analytics · 2025

A drop-in SDK their customers' customers see daily.

8 weeks →
[02/06] Services

What we work on. And what we send elsewhere.

We're systems engineers. We don't do mobile apps, CRUD frontends, ML training pipelines, or growth experiments. We have a list of friends who do.

01

Distributed systems

Coordination, consensus, replication, partitioning. We've built three custom Raft implementations and we'd rather not build a fourth — but we will.

02

Database internals

Storage engines, query planners, MVCC, write-ahead logs. Forks of Postgres, RocksDB, FoundationDB. We read mailing lists for fun.

03

Realtime infra

Streaming, queues, CDC, websockets at scale. We've replaced four self-hosted Kafka deployments with Redpanda or NATS — and once gone the other way.

04

Migrations

Postgres → Cockroach, MongoDB → Postgres, monolith → cells. Dual-writes, shadow reads, cutover plans that survive contact with reality.

05

Performance work

When the P95 stops budging. Profiling, flame charts, allocator tuning, sometimes a rewrite of one hot loop in something not interpreted.

06

On-site team augmentation

Two of us drop into your team for 8–12 weeks, write code in your repos, present at your standup, and leave runbooks the surviving team can read.

[03/06] Process

Four phases. No retainers.

Every engagement starts with a 1-hour scoping call and a 4-week fixed-bid pilot. If the pilot doesn't earn the bigger engagement, we shake hands and you keep the code.

phase 01

Scoping call

One hour, two engineers from our side, no slides. You describe the problem; we ask the kind of questions that tell you whether we know what we're talking about.

phase 02

Pilot project

Four weeks, fixed bid, scoped to a single deliverable that ships. We're looking to find out whether we work well together before either side commits.

phase 03

Engagement

Six to sixteen weeks, time-and-materials, weekly Friday demos. Two to four of our engineers in your repos. We write production code, not memos.

phase 04

Hand-off + 30-day support

Runbooks, architecture docs, on-call rotation overlap, and an open Slack for thirty days after. We've never invoiced for the support window.

[04/06] Featured case

Forecast — realtime engine for 240k QPS.

Forecast/realtime · v3.2 architecture prod · us-east-1 · eu-west-1
ingest-gw router shard-0 shard-1 shard-2 shard-3 query-svc 240k QPS P95 0.8ms
WAL: per-shard, fsync batched 64 entries
Rebalance: hot-shard split > 70% CPU
Replication: chain, leader+2 followers
// excerpt — router.rs : pick a shard, pin it to the tenant pub fn route(&self, req: &Request) -> ShardId { let tenant = req.tenant_id(); match self.placement.get(tenant) { Some(shard) => shard, None => self.consistent_hash(tenant, N_SHARDS), } }

Forecast came to us in late 2023. Their realtime query engine handled 24k QPS at peak; their largest prospective customer needed to clear 200k QPS before signing. The internal team had two solid attempts at the rewrite that didn't ship.

We spent the first two weeks reading the existing code and writing a benchmark harness their team would trust. The verdict: the storage layer wasn't actually the bottleneck — the router was doing a per-request consistent-hash on the wrong field, and the WAL was fsync-on-every-write.

The pilot replaced the router and batched the WAL. That alone got them to 84k QPS. From there it was four months of sharding, hot-shard rebalancing, and a leaner replication protocol. We shipped together with their team — Slack pairing, weekly demos, no slide deck ever produced.

They closed the deal in April 2024. Their engineering team picked up where we left off. Eighteen months on the architecture is still theirs, not ours.

"Workshop showed up, read the code, and on day five told us exactly why the rewrite kept failing. They were right. Six months later the system carries our biggest customer."

Marcus Tobin · Founding engineer at Forecast
0.8ms
P95 (from 4ms)
240k
QPS (from 24k)
14wk
Engagement
[05/06] Team

Eight engineers. Every one was a staff or principal before this.

Nobody on the website is a junior we're going to swap onto your project. The people on the pitch call are the people in your repos.

[06/06] Mentions & talks
InfoQ The Pragmatic Engineer HN/front-page USENIX SREcon QCon Plus papers-we-love
Contact

A hard backend problem? Tell us about it.

Email [email protected] with a paragraph: what you're building, what's breaking, what you've already tried. Two of our engineers read every inbound. Typical response: 24 hours.

Availability
2 of 4 inbound slots open · Q3 2026
Where we are
Berlin · Brooklyn · Lisbon
+ wherever your team is, for the hard weeks
Pilot pricing
$48k fixed · 4 weeks · 2 engineers
Engagement rate
$320 / engineer-hour · T&M, weekly invoiced