Archive
2026 31 posts
- Channel iteration and goroutine leak Go
- Accepted proposal: a goroutine leak profile in the Go standard library Shards
- Reading your own writes with WAIT FOR LSN in Postgres 19 System
- Migrating from GNU stow to chezmoi Misc
- Putting this blog on ATProto with standard.site Misc
- If you won't carry the pager, maybe don't push to mainline Zephyr
- Testing Go CLIs with testscript Go
- A tour of txtar Go
- Type-safe slogging Go
- Hoisting wire plumbing out of your Go handlers Go
- Go quirks: function closures capturing mutable references Go
- Accepted proposal: UUID in the Go standard library Shards
- Peeking into Go struct tags Go
- Error translation in Go services Go
- Dynamo: Amazon's highly available key-value store Paper
- Stacked log lines considered harmful Shards
- What's the ideal dispatch mechanism? Shards
- Background jobs and inherited file descriptors Shards
- Testing unary gRPC services in Go Go
- Repositories, transactions, and unit of work in Go Go
- How do you handle transactions with the repository pattern? Shards
- Is passing user ID through context an antipattern? Shards
- What belongs in Go's context values? Shards
- Do you need a repository layer on top of sqlc? Shards
- Wrapping a gRPC client in Go Go
- In praise of the etcd codebase Shards
- Go errors: to wrap or not to wrap? Go
- Mutate your locked state inside a closure Go
- What canceled my Go context? Go
- Structured concurrency & Go Go
- Your Go tests probably don't need a mocking library Go
2025 27 posts
- Tap compare testing for service migration System
- Splintered failure modes in Go Go
- Re-exec testing Go subprocesses Go
- Revisiting interface segregation in Go Go
- Avoiding collisions in Go context keys Go
- Organizing Go tests Go
- Subtest grouping in Go Go
- Let the domain guide your application structure Go
- Test state, not interactions Go
- Early return and goroutine leak Go
- Lifecycle management in Go tests Go
- Gateway pattern for external service calls Go
- Flags for discoverable test config in Go Go
- You probably don't need a DI framework Go
- Preventing accidental struct copies in Go Go
- Go 1.24's "tool" directive Go
- Capturing console output in Go tests Go
- Deferred teardown closure in Go testing Go
- Three flavors of sorting Go slices Go
- Nil comparisons and Go interface Go
- Stacked middleware vs embedded delegation in Go Go
- Why does Go's io.Reader have such a weird signature? Go
- Go slice gotchas Go
- The domain knowledge dilemma Zephyr
- Hierarchical rate limiting with Redis sorted sets Misc
- Dynamic shell variables Misc
- Link blog in a static site Misc
2024 40 posts
- Running only a single instance of a process Misc
- Function types and single-method interfaces in Go Go
- SSH saga Misc
- Injecting Pytest fixtures without cluttering test signatures Python
- Explicit method overriding with @typing.override Python
- Quicker startup with module-level __getattr__ Python
- Docker mount revisited Misc
- Topological sort Go
- Writing a circuit breaker in Go Go
- Discovering direnv Misc
- Notes on building event-driven systems Misc
- Bash namerefs for dynamic variable referencing Misc
- Behind the blog Misc
- Shell redirection syntax soup Misc
- Shades of testing HTTP requests in Python Python
- Taming parametrize with pytest.param Python
- HTTP requests via /dev/tcp Misc
- Log context propagation in Python ASGI apps Python
- Please don't hijack my Python root logger Python
- The *nix install command Misc
- Here-doc headache Misc
- The sane pull request Misc
- I kind of like rebasing Misc
- Protobuffed contracts Misc
- TypeIs does what I thought TypeGuard would do in Python Python
- ETag and HTTP caching Misc
- Crossing the CORS crossroad Misc
- Dysfunctional options pattern in Go Go
- Einstellung effect Zephyr
- Strategy pattern in Go Go
- Anemic stack traces in Go Go
- Retry function in Go Go
- Type assertion vs type switches in Go Go
- Patching pydantic settings in pytest Python
- Omitting dev dependencies in Go binaries Go
- Eschewing black box API calls Misc
- Annotating args and kwargs in Python Python
- Rate limiting via Nginx Go
- Statically enforcing frozen data classes in Python Python
- Planning palooza Zephyr
2023 48 posts
- Reminiscing CGI scripts Go
- Debugging dockerized Python apps in VSCode Python
- Banish state-mutating methods from data classes Python
- Finding flow amid chaos Zephyr
- The diminishing half-life of knowledge Zephyr
- Oh my poor business logic Zephyr
- Pesky little scripts Misc
- Footnotes for the win Zephyr
- Dotfile stewardship for the indolent Misc
- An ode to the neo-grotesque web Zephyr
- Self-hosted Google Fonts in Hugo Misc
- Configuring options in Go Go
- Dummy load balancer in a single Go script Go
- Limit goroutines with buffered channels Go
- Writing a TOTP client in Go Go
- Interface guards in Go Go
- Writing on well-trodden topics Zephyr
- Go structured logging with slog Go
- Notes on exit interviews Zephyr
- Taming conditionals with bitmasks Python
- Using DNS record to share text data Misc
- Memory leakage in Python descriptors Python
- Unix-style pipelining with Python's subprocess module Python
- Enabling repeatable lazy iterations in Python Python
- Descending into the aether Zephyr
- Escaping the template pattern hellscape in Python Python
- Python dependency management redux Python
- Implementing a simple traceroute clone in Python Python
- Bulk request Google search indexing with API JavaScript
- Building a CORS proxy with Cloudflare Workers JavaScript
- Fixed-time job scheduling with UNIX 'at' command Misc
- Sorting a Django queryset by a custom sequence of an attribute Python
- Periodic readme updates with GitHub Actions JavaScript
- Associative arrays in Bash Misc
- Deduplicating iterables while preserving order in Python Python
- Process substitution in Bash Misc
- Dynamic menu with select statement in Bash Misc
- Simple terminal text formatting with tput Misc
- Building a web app to display CSV file stats with ChatGPT & Observable JavaScript
- Pushing real-time updates to clients with Server-Sent Events (SSEs) Python
- Tinkering with Unix domain sockets Misc
- Signal handling in a multithreaded socket server Python
- Switching between multiple data streams in a single thread Python
- Skipping the first part of an iterable in Python Python
- Pausing and resuming a socket server in Python Python
- Debugging a containerized Django application in Jupyter Notebook Python
- Manipulating text with query expressions in Django Python
- Using tqdm with concurrent.fututes in Python Python
2022 61 posts
- Colon command in shell scripts Misc
- Faster bulk_update in Django Python
- Installing Python on macOS with asdf Python
- Save models with update_fields for better performance in Django Python
- Python logging quirks in AWS Lambda environment Python
- Dissecting an outage caused by eager-loading file content Python
- Auditing commit messages on GitHub Misc
- To quote or not to quote Misc
- Returning values from a shell function Misc
- Verifying webhook origin via payload hash signing Python
- Recipes from Python SQLite docs Python
- Prefer urlsplit over urlparse to destructure URLs Python
- Pick random values from an array in SQL(ite) System
- ExitStack in Python Python
- Compose multiple levels of fixtures in pytest Python
- Patch where the object is used Python
- Partially assert callable arguments with 'unittest.mock.ANY' Python
- When to use 'git pull --rebase' Misc
- Apply constraints with 'assert' in Python Python
- Automerge Dependabot PRs on GitHub Misc
- Stream process a CSV file in Python Python
- Bulk operations in Django with process pool Python
- Read a CSV file from s3 without saving it to the disk Python
- Distil git logs attached to a single file Misc
- Safer 'operator.itemgetter' in Python Python
- Guard clause and exhaustiveness checking TypeScript
- Health check a server with 'nohup $(cmd) &' Misc
- Return JSON error payload instead of HTML text in DRF Python
- Decoupling producers and consumers of iterables with generators in Python Python
- Pre-allocated lists in Python Python
- In favor of sentence case Zephyr
- Disallow large file download from URLs in Python Python
- Declaratively transform data class fields in Python Python
- Caching connection objects in Python Python
- How not to run a script in Python Python
- Mocking chained methods of datetime objects in Python Python
- Declarative payloads with TypedDict in Python Python
- Parametrized fixtures in pytest Python
- Modify iterables while iterating in Python Python
- Github action template for Python based projects Python
- Self type in Python Python
- Patching test dependencies via pytest fixture & unittest mock Python
- Narrowing types with TypeGuard in Python Python
- Why 'NoReturn' type exists in Python Python
- Add extra attributes to enum members in Python Python
- Peeking into the internals of Python's 'functools.wraps' decorator Python
- Limit concurrency with semaphore in Python asyncio Python
- Amphibian decorators in Python Python
- Go Rusty with exception handling in Python Python
- Variance of generic types in Python Python
- Create a sub dictionary with O(K) complexity in Python Python
- Gotchas of early-bound function argument defaults in Python Python
- Use 'assertIs' to check literal booleans in Python unittest Python
- Static typing Python decorators Python
- Inspect docstrings with Pydoc Python
- Check whether an integer is a power of two in Python Python
- Uniform error response in Django Rest Framework Python
- Difference between constrained 'TypeVar' and 'Union' in Python Python
- Don't wrap instance methods with 'functools.lru_cache' decorator in Python Python
- Cropping texts in Python with 'textwrap.shorten' Python
- String interning in Python Python
2021 12 posts
- Structural subtyping in Python Python
- Automatic attribute delegation in Python composition Python
- Access 'classmethod's like 'property' methods in Python Python
- Don't add extensions to shell executables Misc
- Use __init_subclass__ hook to validate subclasses in Python Python
- Running tqdm with Python multiprocessing Python
- Use daemon threads to test infinite while loops in Python Python
- Use 'command -v' over 'which' to find a program's executable Misc
- Write git commit messages properly Misc
- Python's 'functools.partial' flattens nestings Automatically Python
- Use curly braces while pasting shell commands Misc
- Use strict mode while running bash scripts Misc
2020 12 posts
- Pedantic configuration management with Pydantic Python
- Interfaces, mixins and building powerful custom data structures in Python Python
- Deciphering Python's metaclasses Python
- Implementing proxy pattern in Python Python
- Effortless API response caching with Python & Redis Python
- Untangling Python decorators Python
- Effortless concurrency with Python's concurrent.futures Python
- No really, Python's pathlib is great Python
- Running Python linters with pre-commit hooks Python
- Generic functions with Python's singledispatch Python
- The curious case of Python's context manager Python
- Reduce boilerplate code with Python's dataclasses Python