This is a personal collection of things I keep coming back to when I build software or work with others. It’s not meant to be complete or authoritative - just the stuff that has consistently helped me avoid confusion and unnecessary complexity. I add things here when they prove useful in practice, not just in theory.
Standards I default to
These are conventions I assume unless there’s a good reason not to.
-
RFC 2119 - https://datatracker.ietf.org/doc/html/rfc2119
Words like MUST and SHOULD are actually useful when used properly. They remove a lot of guessing from specs. -
Semantic Versioning - https://semver.org
Version numbers should tell you what kind of change you’re dealing with, not just that something changed. -
UTF-8 Everywhere - https://utf8everywhere.org
Text encoding shouldn’t be something you think about. UTF-8 as default avoids a lot of pain.
Ways I try to keep systems simple
Things I return to when complexity starts creeping in.
-
https://grugbrain.dev
A good reminder that most systems don’t need to be clever - they need to be understandable later. -
The Grug Brained Developer - https://www.lulu.com/shop/carson-gross/the-grug-brained-developer/paperback/product-2m47wqg.html
Light read, but the point sticks: simple systems age better than smart ones. -
Yegor Bugayenko’s books - https://www.yegor256.com/books.html
Strong opinions on structure and object design. I don’t agree with everything, but it forces clarity.
How I prefer communication
This is mostly about saving time and avoiding back-and-forth.
- https://nohello.net
Saying just “hello” doesn’t help much. I prefer messages that include the actual question or context right away.
Closing note
This list isn’t fixed. Some things will stay here for years, others will probably disappear once I find better replacements. What matters to me is whether something still helps me make better decisions in real work.