Achievement Unlocked: Identity Services

Wow. This has been a year. My personal life has been really, really full of ups and downs, but the development journey for Mensago goes on. It’s been quite some time, so let me fill you all in, dear friends.

As of the last post in August, I felt like I was doing the programming version of eating your vegetables — working on stuff that wasn’t at all exciting but completely necessary. In times like these I push through the humdrum and eventually get through it to more interesting work, but my pace sometimes slows down during these times. I try to write at least a little bit of code every day, but couple this will greater personal demands and it just doesn’t happen sometimes. This is where I’ve been, but I have plenty of positive news, too.

Developments on Many Fronts

An unfortunate online social media interaction led me to discover that I didn’t have any documentation that explained how Mensago’s identity services architecture is organized or how it interacts. It’s not complete yet, but if you would like a technical perspective on it, the Mensago Identity Services Guide should give you some insights. Among other things, it details how Mensago solves technical problems like key exchange. The document is less a developer reference and more oriented toward describing how it all works.

Code which is mostly-complete for the time being still gets some love now and then. The libraries eznacl and libkeycard now have JSON support, reducing the amount of work that developers have to put in to send information over the network. I found and patched some bugs in the server, mensagod. Nowadays when I’m testing code on the main library, libmensago, I run it like a regular program. Some parts are missing, but what’s there works well and is generally stable. For just a project by one guy without formal training, that’s an accomplishment!

I’m spending most of my time right now on libmensago, the engine of this software Batmobile I’m building. Support for multiple profiles is complete. The keycard resolver is also complete, and getting it done was no small feat: it took about a month to finish and debug.

A lot of parts came together to start really making things work, too. Using the library, you can now:

  • Create an account
  • Have an administrator create an account for you and you can finish setup with a registration code
  • Log into your account
  • Create and upload your keycard
  • Find and download a keycard for someone else

Continuing to Learn

On top of all of this, I’m also learning Yet Another Programming Language. This time it’s Dart, a language from Google normally associated with Flutter. Flutter is a programming toolkit designed initially for making mobile apps that was expanded into also making desktop apps.

I spent a weekend writing an open source command-line password/passphrase generator called dartpass. I’m going to make an actual release and then start making a mobile app based on it. This is all just learning to prepare me for writing Mensago Connect.

Looking Ahead

With all of this in place, it’s time to start working on the fun stuff! What could that be, you ask? First of all, is the address book. Storing and organizing contact information is kind of necessary to send messages to people. Device sync and message delivery are pretty closely tied, and they will be next. Once complete, I will be able to start writing Mensago Connect and finally have something people can play around with after all these years.