Don't define functions inline in your public headers

Recently I fixed a bug in librealsense2. The core of the bug was that the developers used a C++ functional cast expression in a C header, which broke the realsense-rust wrapper we’re developing at work. Worse yet, this was shipped as part of the official 2.42.0 release of librealsense2. Oof.

The fix is pretty clear: use a C-style cast instead. Better yet, follow the advice in Modern C don’t use casts at all. Well, we can’t always avoid them, and the compiler can make the whole process annoying. At least, it is especially problematic to detect such issues when you use a C++ compiler.

Read More...


Can email not suck?

The (current) extended public health crisis has given me a gratuitous amount of free time. At least, comparatively to before the public health crisis. This past weekend, bored out of my mind, I came across a post from the K-9 developers on Hacker News. This got me thinking a lot more about email and how my use has changed over time.

Read More...


Rust is cool – Enums

Since starting my new role at Tangram Vision, I’ve been doing a lot of programming in Rust. This is a bit of a change for me having mostly worked in C / C++ / C# over the past 6 years, but my impressions overall are quite positive.

One of my favourite features of Rust are the enum types. They don’t stick out among Rust’s set of language features compared to some of the more novel aspects of the language (borrow checker, lifetimes, safe-multi-threading); however, Rust’s enum types drive some of the coolest parts of the language, and make modeling data in terms of types a pleasure.

Read More...


Librem 5 Evergreen vs. Pinephone (Part 1 of ???)

Huzzah! I recently received my Librem 5 (Evergreen) from Purism. The Librem 5 is a smartphone that runs an otherwise standard linux kernel. However, unlike Android which also relies on the linux kernel under the hood, the Librem 5 uses a GNU userspace, adapted for mobile. This makes it more akin to your typical laptop in some ways, although the form factor still resembles a modern smartphone (at least, mostly). Here are some preliminary thoughts about the phone and how it compares to Pine64’s Pinephone, which is another phone that uses neither Android nor iOS, and relies on a GNU / Linux based OS.

Read More...


iOS 14 – What time is it?

iOS 14 upgrades LLVM from the 9.x line to the 10.x line. This jump in versions was not well communicated to users, and ended up producing a challenging and upsetting bug on the platform breaking code within Occipital’s Structure SDK.

Read More...


This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.