Mauborgne: the best 2FA OTP authenticator app for elementary OS (and anywhere else flatpak)

This app has been a labor of love during my parental leave. This app “scratched an itch” — I wanted an elementary OS native authenticator for all of my 2FA OTP codes

So, why do I think it’s the best app available?

  • Code Type Support It supports both TOTP and HOTP codes. I don’t have any services that use HOTP codes, but it does support them
  • Dynamic Code Paste Since TOTP codes expire, copying a code will always paste the most current code, not necessarily the code that was active when you clicked the Copy button
  • Roundtrip Support For Aegis Mauborgne can both import and export using Aegis’ encrypted JSON vault files
  • Flatpak Native Mauborgne uses Flatpak portals to capture screenshots, to load and save files, and to securely protect your pad’s secrets. It thus uses the bare minimum of Flatpak permissions
  • Attractiveness Thanks to the elementary OS platform underneath, the app looks sleek. It natively supports both light and dark mode using system preferences (on elementary OS 6.0+ and will also work on GNOME 42+)

    You can get the app on the elementary OS AppCenter, or if running other operating systems that support Flatpak, installing from the the Flatpakref file.

Hibernate+JPA Multi-version concurrency control with Postgres

If you are working with Postgres and using JPA via Hibernate, here’s a short cut to get MVCC without having to add an extra column to your database tables:

@Column(name = "xmin", columnDefinition = "xid")
private int version;

Postgres automatically creates and maintains the “xmin” column, and JPA already supports the concept of @Version columns. Hibernate adds on support for database-generated Version columns. Now, xmin is really a “xid” type, but it happily accepts casting to and from Java’s int type.

Shoudly — an awesome little .NET assertions library



Enter Shouldly. It uses a much simpler syntax



I highly recommend it!

My modern development stack




Data Access




Server-Side Framework


Inversion of Control / Dependency Injection




CQRS (Command and Query Responsibility Separation)






Entity Framework 6 and const vs static readonly


Let’s say you have the following class:

public static class BlargTypes {
     public static readonly string Foo = "Bar";

and then you have the following LINQ query:




passing in “Bar” as the parameter value for @Blarg


public static class BlargTypes {
    public const string Foo = "Bar";

Entity Framework will generate the following query:












Does Fat Fit: 2018 Chevrolet Equinox LT

For people who don’t know me, I’m a rather large guy in 3 dimensions. I’m tall (just about 6’0) and round (north of 400 lbs).

My truck (2010 Ford F-150) recently had its warranty expire, and it was beginning to show problems resulting from both its age (8 years) and the accidents its been in (1 major, 2 minor). It also had HORRIBLE gas mileage on my daily commute (from Hiram, GA to Buckhead in Atlanta, GA — it averaged between 8 mpg and 14 mpg). So.. I convinced the wife to let me trade it in for something more economical.

And so we got the 2018 Chevy Equinox. It’s a compact SUV, same class as your Toyota Rav4 or Honda CR-V.

My fat fits perfectly. It’s a little snug on the sides, but not horribly so. The steering wheel doesn’t touch my gut or my knees. The seat belt actually fits! (It didn’t even in my F-150). I can reach the pedals just fine.

I highly recommend it for other large people looking for a compact SUV.

Enums, C#, and Protocol Buffers



enum MyEnum {
FOO = 1;
BAR = 2;

enum OtherEnum {
FOO = 1;
BAR = 2;



enum MyEnum {

enum OtherEnum {


enum MyEnum {
Foo = 1;
Bar = 2;

enum OtherEnum {
Foo = 1;
Bar = 2;