Matthew R. Bisson

Linker Scripting and Linux Shared Library Versioning

The stacks in BPL Version 2.

Shared library versioning is a powerful tool, allowing your library to make new features available without breaking older consumers of them. The problem is — as I’ve noticed through the years — GCC linker scripting seems like witchcraft to many who’d otherwise use it, and only those with tribal knowledge can maintain the library. I agree: this information can be hard to find, and hard to understand. In this article, I’m going to give what I think is a recipe book for using LD version scripting to apply shared library versioning, and keep your library alive and compatible for years.

Continue reading “Linker Scripting and Linux Shared Library Versioning”

Double-Edge Razor Blade Reviews

The other day, I saw a commercial advertising that their blades cost only $2 a blade. Really?! For those of us who like good old saftey razors, even 50¢ is “pricey.” There are lots of choices out there, and you want something that just feels right on your face. The best way to do this is to get a sample pack, and try a bunch of blades to find the right one. Luckily, I’ve already done this so you don’t have to!

Continue reading “Double-Edge Razor Blade Reviews”

When Empty Base Optimization Goes “Wrong”

Occasionally, we use C++ inheritance to “tag” a class for some later purpose, or perhaps to introduce a functional change without copying code (e.g., boost::noncopyable). When the inherited class has no data, we (quite reasonably) expect to incur no run-time size overhead, due to Empty Base Optimization (EBO), but there is one surprising case where we must take care, or unintentionally waste memory. In this article, let’s explore the issue, and how to guard against it.

Continue reading “When Empty Base Optimization Goes “Wrong””

Should I Send People Word Documents?

In a word… NO.

Microsoft Word produces typographically ugly documents, and the Office 365 suite consumes many gigabytes of space on your disk, but it’s your choice to use this tool if you like. Just please, please export it to something that works on any platform, like a PDF file.

Continue reading “Should I Send People Word Documents?”

An Exploration of the Deleter on the Memory Footprint of std::unique_ptr

(…or “How I Learned to Love the Tuple.”)

Although the C++ standard does not explicitly spell it out, one may hope for a sophisticated implementation of the std::unique_ptr that consumes exactly as much memory as the pointer it tracks when it is configured to use a empty-class deleter (such as the default deleter type). The unique_ptr indeed allows the consumer to supply a custom deleter, which one intuitively expects to consume memory — if you store two pieces of data, you will consume two spots in memory somehow, right? Not quite. I will explore how this is done (specifically in GCC).

Continue reading “An Exploration of the Deleter on the Memory Footprint of std::unique_ptr

Creating a Gentoo Workstation in a VMware Virtual Machine

Today I’m going to walk through the process of creating a development workstation on Gentoo Linux as a (VMware Workstation) virtual machine. This is something that I do myself with somewhat high frequency, and in a way, this page contains notes to myself so that this fairly manual process becomes a great deal less manual. Perhaps it will be interesting to you, the reader, as a Gentoo Linux installation delves deeply into Linux system-level configuration, and provides a great way to familiarize yourself with how things work.

Continue reading “Creating a Gentoo Workstation in a VMware Virtual Machine”

Great Recruiters, Unite!

The following transmission is directed toward the (job) recruiting community everywhere. It’s time to get together and improve the way employees and employers connect with each other. The current method of matching software engineering candidates with software engineering jobs is completely broken. With so many good people out there looking for work, and so many good companies out there looking for good people, you’d think this would be no problem — especially in an age of so much technology centered around communication. If you have landed here, that’s a good start. Well, here is what I think are some of the roadblocks in this fundamentally flawed process.

Continue reading “Great Recruiters, Unite!”