Software development
See also: Resources
Miscellaneous:
- Tech in the past wasn’t better
- Backwards compatibility (for behavior) is tough to get right
- How can we build a great product?
- Build processes should only generate new files
- UX matters for developer tools
- Technology needs to have a purpose
- Calling by value or reference
- Generative AI
- Coding challenges
- Why can’t I git-push to a remote filesystem?
Best practices:
- A “users” table is a smell
- An enum with two choices is different from a boolean
- Artificial slowdown as a way to guide deprecation
- Logging and caching are (usually) acceptable side effects
Blockchain, NFT, web3:
- Tokengated commerce is a dystopia
- The blockchain is a terrible idea
- What is the purpose of the blockchain?
Communication:
- How to write a good README for a product
- Drive change by writing structured proposal documents
- Phrase suggestions as open questions
- Bug report format
- Pull request template
- A “shipped” Slack channel for celebration and release notes
- Slack channel naming conventions
Collaboration:
- Short-lived branches are indispensable for refactoring
- Get people on board with (breaking) changes by radiating intent
- The impact of Git, GitHub, etc
Delivery / lifecycle:
Employment:
- Software engineering job search
- Software engineering job search: Decision criteria
- Leaving a software engineering job
Front-end development:
Game development:
Learning:
DSLs:
Reliability:
Security:
- Permissions are not hierarchical
- Ambient authority
Specific programming languages:
Spreadsheets and dataflow languages:
- Spreadsheets are fragile
- Spreadsheets are fragile because cells have no names
- Spreadsheets are fragile because they only deal with cells
Style:
- Can functions be too short?
- Use long-form options in scripts
- Common abbreviations in software development
Techniques:
- A microservices architecture is object-orientation with big objects
- A HTTP header to identify calling microservice
- IDs
Testing: