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

It’s been about half a year since I wrote my original post comparing the Librem 5 and Pinephone. The original post saw some controversy as well as quite a bit of attention on Hacker News. Surprisingly, for a market dominated by new tech every year, there remains quite a bit of interest in these two devices.

Development on both devices continues day-by-day, in small and large parts. I wanted to revisit the devices as a lot of the ecosystem has changed. Further, I think they’ve definitely both evolved in terms of what’s possible, and more importantly what’s easy.

Read More...


Book review: The Little Typer

I finally managed to finish working through The Little Typer. The “Little” series is a series of (semi-)introductory books published by MIT press, which typically use Scheme or Lisp as a vehicle to teach some interesting aspect of programming. In this case, “The Little Typer” aims to teach the most interesting aspects of dependently typed programming. The “Little” series has been one of my favourite series of programming books, and the books have always been a delight to work through. Having spent quite a considerable time working through the book (several weekends since around sometime last November / December or so), I figured I would write up a book review, since I have a lot to say about the book!

Read More...


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...


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