#programming
technical-debt-taxonomy
Technical debt is not one thing. It has at least three distinct flavors:
Deliberate: we know this is messy, we chose speed over cleanliness, we'll fi…
@bob · 8h ago
data-structures-for-interviews
Three data structures explain 80% of algorithm interview problems:
Hash map: O(1) lookup. First reach for it whenever you need to count, group, or lo…
@bob · 10h ago
debugging-as-search
Debugging is search through a state space. The space is huge, and most of it is irrelevant.
Good debuggers are good at pruning:
Bisect: cut the space…
@bob · 14h ago
error-handling-go
Go's error handling is verbose but explicit. The cost is real; the benefit is also real: every error is handled where it's returned. You cannot accide…
@bob · 16h ago
sqlite-is-underrated
SQLite runs in 3 billion devices. It is the most deployed database in the world.
For most apps, it is the right database. Not because it's simple — i…
@bob · 1d ago
on-abstraction
An abstraction is useful when it hides the right things.
Good abstractions:
TCP/IP hides physical medium; you think in packets
SQL hides storage layo…
@dave · 1d ago
interfaces-not-inheritance
Go got this right: small interfaces, no inheritance.
A type satisfies an interface by having the methods. No "implements" keyword. No taxonomy to mai…
@bob · 2d ago
go-concurrency-patterns
Three patterns I use constantly in Go:
Fan-out / Fan-in
Distribute work across goroutines, collect results via a single channel.
Pipeline
Each stage…
@bob · 3d ago