Put Your Const Foot Forward
Here are two C++ style habits that I recommend. Neither is earth-shattering, but both have a benefit that I find useful. Both relate to the order in which constness shows up in your syntax. 1. When you...
View ArticleGeorge and the Flood
A flood is coming. George can only swim for a little while. What should George do? A flood is coming. George can only swim for a little while. What should George do? A flood is coming. George can only...
View ArticleThe Scaling Fallacy
If X works for 1 ___ [minute | user | computer | customer | ...], then 100X ought to work for 100, right? And 1000X for 1000? Sorry, Charlie. No dice. One of my favorite books, Universal Principles of...
View Article3 Commandments of Performance Optimization
In my experience, most programmer attitudes on speed fall into one of these categories: laissez-faire Programmers with this mindset think about performance on occasion, but it’s not a big focus....
View ArticleInterrupting my interruptions
Tonight I was just settling down for a ponder on some personal stuff when I noticed an email from my brilliant brother-in-law (hi, Stephen!), recommending an article about the cost of interrupting...
View ArticleThe Power of Simplicity
Most stories about zen masters, gurus, or other paragons of wisdom follow a similar pattern. The pupil discovers a problem. He or she struggles with it. The problem gets more and more overwhelming....
View Article3 reasons to prefer references over pointers (C++)
I still remember what it was like, as a C programmer, to be introduced to the newfangled concept of references in C++. I thought: “This is dumb. It’s just another way to use pointers. More syntactic...
View Article6 Strategies to Simplify Software
How do you make things simple? I’ve written that simplicity is powerful, and that it undergirds many deep architectural breakthroughs. In posts about pragmatism and balance, I’ve quoted Oliver Wendell...
View ArticleCourage Counts
If you’ve read Call it Courage, then you know the story of Mafatu, the boy who was afraid. Mafatu grows up in Polynesia, surrounded by the ocean—but everything about the sea terrifies him, because he...
View Article2 Surprising Truths About The Iron Triangle
Project management 101 teaches that, when managing outcomes, you cannot alter scope, schedule, or cost (resources) without affecting at least one of the other dimensions. This interrelationship is...
View ArticleFeatures are not chunks of code
photo credit: nandadevieast (Flickr) Before the industrial age, “features” were noteworthy aspects of a face or a geography: a patch of color, abundant wrinkles, a scar… The human brain is stunningly...
View ArticleAdd some more extra redundancy again
It’s the season for coughs and sniffles, and last week I took my turn. I went to bed one night with a stuffy nose, and it got me thinking about software. What’s the connection between sniffles and...
View ArticleHow to make a const-correct codebase in 4300 easy steps
One of the codebases that I work on is theoretically C++, but if you peer under the hood, it looks more like 1990-vintage C. It’s 500 KLOC of almost purely procedural code, with lots of structs and few...
View ArticleKnow Your Limits
I just finished the nastiest debugging experience of my career–nearly 3 weeks on a single bug. After days and days of staring at code, swearing at core dumps, tailing logs, connecting to gdbserver via...
View Article
More Pages to Explore .....