Tyler A. Young’s Blog

02 July 2020

Warning: __attribute__((const)) does not mean function purity

Clang and GCC (and others) support function attributes __attribute__((const)) and __attribute__((pure)). These had always been explained to me thus:

Continue reading…
05 February 2020

The fastest way to iterate a Map’s values in Elixir

Say you have an Elixir Map. What’s the fastest way to iterate the values?

Continue reading…
27 May 2019

Go ahead, call yourself a software engineer.

Ian Bogost writes for The Atlantic that programmers should stop calling themselves engineers. It’s a good article, and he’s right about software devs cheapening the word “engineer” with their Wild West practices. This is a sentiment that’s been echoed for years. Continue reading…
08 May 2019

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.

29 January 2019

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!

Continue reading…
23 January 2019

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!

05 December 2018

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…
01 December 2018

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…
18 November 2018


23 July 2018

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…
18 July 2018

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

29 June 2018

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

25 June 2018

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…
15 March 2018

Conference Talk Playlists for C++ & Game Developers

I’ve put together a number of conference talk playlists for my own “professional development.” This is a list curated by going through hundreds of talks in the GDC and CppCon archives.

Continue reading…