Blog

Practice LeetCode locally: 1,404 problems, one command

One pip install turns any of 1,404 LeetCode problems into a local practice environment: typed stubs, pytest suites, visual debugging, and full study plans.

bakefile in practice: the supporting cast

The second bakefile in practice post: the helpers behind the patterns. Setup, secrets, publish, environments, config, the CLI, shipped once as library code.

bakefile in practice: four patterns that scale

Composition over configuration, Template Method, a uniform interface, workflows as libraries: four patterns from every repo I run bakefile in. Part one.

Stupidly simple branching: trunk-based, but e2e-testable

zerv-flow, trunk-based with one gap filled: a PR borrows an environment with a label and a lock, so every branch is e2e-testable before merge.

Version every build: semantic-release on main, zerv everywhere else

semantic-release versions main beautifully. Every other branch builds unversioned. zerv gives every commit a SemVer, PEP 440 included, without touching tags.

Make vs Just vs Task vs mise: which reuses workflows?

An audit of how five task runners share workflows between repos: Make include, Just import, Task includes, mise extends, Invoke collections. Where each breaks.

Developer Workflows Need an Abstraction

Every repo re-copies the same lint, test, and deploy recipes. Workflows need what code already has: inheritance, mixins, and versioned distribution.

Smarter Python Configs: an OOP Framework

Replace duplicated .env files with a layered Pydantic config framework: base, service, and instance mixins plus a CLI that unifies deploys across environments.

A Robust CI/CD Pipeline: Dev to Prod

The GitHub Actions pipeline we ran end to end: secret scanning, Trivy, pytest, pre-release versioning, SonarCloud, and semantic release to production.

Building a Resilient API Gateway

How a queue-driven API gateway with Cloud Tasks, Firestore caching, and queue-level rate limiting cut downtime by 70% and handled 40 req/s peaks.