A year on Windows
- 2022-03-07 · A year on Windows: Introduction · 4 minutes
- 2022-03-08 · A year on Windows: Keyboard shortcuts · 7 minutes
- 2022-03-09 · A year on Windows: Input methods · 5 minutes
- 2022-03-10 · A year on Windows: Look'n'feel · 5 minutes
- 2022-03-11 · A year on Windows: Window switching · 6 minutes
- 2022-03-12 · A year on Windows: PowerToys · 5 minutes
- 2022-03-13 · A year on Windows: Miscellaneous tools · 4 minutes
- 2022-03-14 · A year on Windows: Development experience · 5 minutes
- 2022-03-15 · A year on Windows: PowerShell · 7 minutes
- 2022-03-16 · A year on Windows: Networked file systems · 4 minutes
- 2022-03-17 · A year on Windows: System debugging · 5 minutes
- 2022-03-18 · A year on Windows: Software installation · 6 minutes
- 2022-03-19 · A year on Windows: Finale · 4 minutes
Bazel dynamic execution
- 2019-12-20 · Introduction to Bazel's dynamic execution · 3 minutes
- 2019-12-26 · Bazel's dynamic strategy · 3 minutes
- 2019-12-27 · Output conflicts and dynamic execution · 4 minutes
- 2019-12-30 · Artifact downloads and dynamic execution · 5 minutes
- 2019-12-31 · Lifting the local lock for dynamic execution · 4 minutes
- 2019-12-31 · Tree artifacts and transient files · 4 minutes
CLI design
- 2013-08-12 · CLI design: Series introduction · 2 minutes
- 2013-08-15 · CLI design: The CLI is the presentation layer · 3 minutes
- 2013-08-19 · CLI design: Error reporting · 5 minutes
- 2013-08-22 · CLI design: Requesting and offering help · 5 minutes
- 2013-08-26 · CLI design: Putting flags to good use · 5 minutes
- 2013-08-29 · CLI design: Do not reinvent option parsing · 3 minutes
- 2013-09-02 · CLI design: Subcommand-based interfaces · 5 minutes
- 2013-09-05 · CLI design: Single-command interfaces · 4 minutes
- 2013-09-09 · CLI design: Handling output messages · 4 minutes
- 2013-09-12 · CLI design: Screen wrapping · 4 minutes
- 2013-09-16 · CLI design: Consider interactive prompts twice · 4 minutes
- 2013-09-19 · CLI design: Series wrap-up · 1 minute
Costs exposed
- 2023-08-23 · Costs exposed: Monorepo vs. multirepo · 6 minutes
- 2023-08-26 · Costs exposed: On-call ticket handling · 7 minutes
- 2023-08-31 · Costs exposed: Frameworks · 7 minutes
Header files
- 2013-11-18 · Header files: Series introduction · 2 minutes
- 2013-11-21 · Header files: Multiple-inclusion protection · 3 minutes
- 2013-11-25 · Header files: Self-containment · 4 minutes
- 2013-12-02 · Header files: C++ ipp files · 2 minutes
- 2013-12-05 · Header files: Avoid C++ 'using' directives · 3 minutes
- 2013-12-09 · Header files: Poor man's replacement for modules · 4 minutes
- 2013-12-27 · Header files: Qualify your identifiers · 2 minutes
- 2013-12-30 · Header files: Poor compilation times in C++ · 1 minute
- 2014-01-01 · Header files: Series wrap-up · 1 minute
Mac OS X vs. Ubuntu
- 2006-09-28 · Mac OS X vs. Ubuntu: Introduction · 2 minutes
- 2006-09-29 · Mac OS X vs. Ubuntu: Hardware support · 3 minutes
- 2006-09-30 · Mac OS X vs. Ubuntu: The environment · 4 minutes
- 2006-10-01 · Mac OS X vs. Ubuntu: Software installation · 4 minutes
- 2006-10-02 · Mac OS X vs. Ubuntu: Automatic updates · 3 minutes
- 2006-10-03 · Mac OS X vs. Ubuntu: Freedom · 2 minutes
- 2006-10-07 · Mac OS X vs. Ubuntu: Commercial software · 3 minutes
- 2006-10-20 · Mac OS X vs. Ubuntu: Development platform · 5 minutes
- 2006-10-25 · Mac OS X vs. Ubuntu: Summary · 1 minute
ONLamp.com guest posts
- 2005-03-31 · Making Packager-Friendly Software (part 1) · 20 minutes
- 2005-04-28 · Making Packager-Friendly Software (part 2) · 15 minutes
- 2005-10-13 · Lightweight Web Serving With thttpd · 11 minutes
- 2006-05-04 · Smart Pointers in C++ · 17 minutes
- 2007-03-01 · Making NetBSD Multiboot-Compatible · 13 minutes
Production software
- 2013-10-10 · Production software: Series introduction · 1 minute
- 2013-10-14 · Production software: Be wary of assertions · 3 minutes
- 2013-10-17 · Production software: Constants will bite you · 3 minutes
- 2013-10-21 · Production software: Hide new features behind flags · 3 minutes
- 2013-10-24 · Production software: Logging · 7 minutes
- 2013-10-28 · Production software: Identifying your builds · 3 minutes
- 2013-10-31 · Production software: Series wrap-up · 1 minute
Readability
- 2013-06-03 · Readability: Series introduction · 2 minutes
- 2013-06-06 · Readability: Blocks and variable scoping · 4 minutes
- 2013-06-10 · Readability: Blank lines matter · 4 minutes
- 2013-06-13 · Readability: No abbreviations · 2 minutes
- 2013-06-17 · Readability: Mind your typos and grammar · 2 minutes
- 2013-06-24 · Readability: Document your types · 3 minutes
- 2013-06-27 · Readability: Avoid comments · 5 minutes
- 2013-07-01 · Readability: Abuse assertions · 3 minutes
- 2013-07-04 · Readability: Dictionaries are not data types · 5 minutes
- 2013-07-08 · Readability: Do not abuse classes as global state · 3 minutes
- 2013-07-18 · Readability: Explicitly state complementary conditions · 3 minutes
- 2013-07-22 · Readability: Conditionals as functions · 3 minutes
- 2013-07-25 · Readability: Don't modify variables · 4 minutes
- 2013-07-29 · Readability: Narrow try/catch blocks · 3 minutes
- 2013-08-01 · Readability: Series wrap-up · 2 minutes
Rust review
- 2018-05-25 · Rust review: Introduction · 3 minutes
- 2018-05-29 · Rust review: Immutable by default · 3 minutes
- 2018-06-01 · Rust review: The borrow checker · 3 minutes
- 2018-06-05 · Rust review: Protect the data · 5 minutes
- 2018-06-08 · Rust review: Learning curve · 4 minutes
- 2018-06-12 · Rust review: Expressions, expressions, expressions · 4 minutes
- 2018-06-15 · Rust review: The match keyword · 3 minutes
- 2018-06-19 · Rust review: The book · 4 minutes
- 2018-06-22 · Rust review: The ecosystem · 4 minutes
- 2018-07-10 · Rust review: Closing thoughts · 5 minutes
Shell readability
- 2018-02-26 · Shell readability: main · 2 minutes
- 2018-03-02 · Shell readability: function parameters · 3 minutes
- 2018-03-09 · Shell readability: strict mode · 6 minutes
- 2018-03-13 · Shell readability: local · 5 minutes