Go ahead, call yourself a software engineer.
No Size Fits All
The most recent episode of CppCast featuring David Sankel ends with a good reminder:
There is no One Software Methodology to Rule Them All, because we work in different contexts.
Your environment matters. If you’re a startup whose principle threat is obscurity, “move fast and break things” is good advice. If you’re an avionics developer, not so much.
When you push your way of doing things—even when it works really well for you!—as a universal panacea, something everyone everywhere should adopt, you’re missing the fact that it works in a particular set of circumstances… a particular time, with a particular team, with a particular set of goals, on a codebase with a particular history.
Benchmarks of Cache-Friendly Data Structures in C++
Suppose you’re a savvy C++ developer who knows all about data-oriented design and the importance of optimizing for cache locality if you want a prayer of running fast on modern hardware. Now suppose you want to go beyond basics—”just use
std::vector” is a good starting point, but you want more!
Data Normalization Matters
In describing for a coworker a place where two different subsystems have their own (hopefully identical!) ideas about the state of the UI, I was reminded of this quote from the database world:
Between any two copies of the same data, there will be differences.
I’ve tried unsuccessfully to find attribution for this… if you know where it comes from, give me a shout!
Review of After Virtue
After Virtue was one of the most challenging things I’ve read in awhile, both intellectually and emotionally. I’m coming to it from the perspective of someone who was more or less sold on utilitarianism (or some form of consequentialism at least), having had very little contact with virtue ethics previously. Since I assume most people are coming from a similar place (since as best I can tell, consequentialism and to a lesser degree deontological ethics have more or less “won” in university philosophy programs), I generally won’t bother teasing apart my thoughts on the book itself versus virtue ethics—for the most part, the contents of the book are identical with my understanding of modern virtue ethics.Continue reading…
Notes on After Virtue
These are my (extremely lengthy) notes on Alastair MacIntyre’s After Virtue. This book is credited with reinvigorating the discussion of virtue ethics in the modern context—a branch of ethics that has been more or less ignored since Aquinas.Continue reading…
The world’s shortest review of the 15-inch 2018 MBP
I just upgraded from a 2015 Retina MacBook Pro to the new 6-core 2018 model.Continue reading…
On guarding against your own mistakes
While everyone well knows himself to be fallible, few think it necessary to take any precautions against their own fallibility, or admit the supposition that any opinion, of which they feel very certain, may be one of the examples of the error to which they acknowledge themselves to be liable.
—John Stuart Mill, On Liberty
Programming is Hard.
Even if we could invent a programming language that used the same terminology as the real-world problem we’re trying to solve, programming would still be difficult because of the challenge in determining precisely how the real world works.
—Steve McConnell, Code Complete
The Worst Bug I Ever (Nearly) Shipped
The year was 2014. I was wrapping up about a year’s worth of work on the X-Plane 10 Mobile release, and we were all set for a Christmas release. Timing this was difficult—we were pressed for time, and the App Store approval process takes an indeterminate amount of time; you submit a binary, then wait (in those days, at least 7, sometimes more than 14 days) and hope they approve it. If they don’t—if they reject the app for any reason—you have to go fix the issues they identified, then submit a new binary (and go to the back of the line).Continue reading…