In July I finished a series of real-life programming side quests to find a rich text editor that suited Mensago Connect’s editing needs and began working on Connect itself. It’s been a time of intense focus on writing foundation code and making sure everything is rock solid.
For a bit of context, the foundation code for the Mensago platform is a series of layers. At the bottom is Base85, a way to encode raw binary data as text. It’s more efficient than the Base64. a similar and much more popular method, and it is used constantly when interacting with encryption. Perching neatly on top of Base 85 encoding is the EZNaCl (easy nack-uhl) library, which gives developers a way of interacting with common encryption tasks with almost push-button simplicity. Securely bolted on top of EZNaCl is the first Mensago-specific library, libkeycard. It is responsible for Mensago’s keycards, which represent you in a mathematically-verifiable way online. Resting comfortably near the top is libmensago, a big chunk of code which performs tasks common to many different programs on the Mensago platform. The actual code for Connect, which is actually pretty small right now, is the icing on this dense and tasty cake.
After a bit of experimenting with Java Swing, the first two layers, Base 85 and EZNaCl came together pretty quickly and were largely complete by the end of July. Most of the next layer, libkeycard, came together in a couple weeks and the rest was saved for later when it was needed. Although these three chunks of code are used a lot and are very important, they really aren’t all that big compared to libmensago. It also doesn’t hurt that they were easy to port from their corresponding Rust libraries.
The last three months have been spent working on the top code layer, libmensago. This actually makes a lot of sense because it encompasses most of the main logic and heavy lifting of the program. In August the project changed build systems, Maven to Gradle, which was highly annoying, but it paid off later on and was ultimately the right move. The code used to communicate with servers was largely finished by early September and I wrote a lot of code tests that took a couple weeks. I finished up libkeycard after that, and started working on more exciting stuff.
Progress is getting exciting again after a lull in the action. Three features are needed for a first release:
- Note editing [done]
- Cloud Sync [in progress]
- Import and export [to do]
Right now libmensago gives you all the tools you need to create and manage your account, look up contact information for other people, and upload/download files from the server. Account updates are under way, and they will finish the Cloud Sync feature, making Connect two-thirds of the way to an alpha release. I can’t wait! Until next time, my friends.