Monthly update, December 2024
These monthly updates may be a bit technical. They are written for my future self (to remember how I spent the month—and to motivate me to do at least something remotely interesting), for friends and colleagues (past and future) to give them an idea of what I work on, and of course, for potential clients of my C++ freelance business and fellow software developers.
The picture shows the installation of a PC designed to work with AIs that may access the PC and filesystem directly. The machine has development tools but very few secrets and no private documents belonging to me or my company. I trust it as much as I trust a machine running Windows.
Projects
NextApp
NextApp is an upcoming GTD/productivity application for desktop and mobile.
In November, my goal was to have NextApp ready for Beta by the end of December. However, as the days went by, I prioritized spending quality time with my oldest dog. My four-legged friend is 9 ½ years old, which is not very old, but he has severe problems with all his joints. It’s genetic, and there is no cure — only injections that relieve most of his pain. I take him for a short walk every 2–3 days, usually about 0.6 to 1 km. Since the summer, his ability to walk has deteriorated. Now he gets exhausted after about 800 meters. If we walk any further, he needs to sit down or lie down to rest for a while. Still, our walks are the highlights of his life, maybe with the exception of eating homemade pizza. He won’t be around for much longer, so right now, his well-being is much more important to me than code.
Still, I did spend some time improving NextApp—mostly smaller enhancements to usability. For example, I added time and date spans in the UI so that we can select when an action is due for something other than a day, week, month, quarter, or year. The application logic is the same, but adding this to the UI in a way that makes it fast and easy to work with turned out to be a challenge!
Sentinelix
I also started a new project in December: Sentinelix. This is a commercial project for now. I realized that when I deploy servers for NextApp and nsBLAST for commercial use, I need external monitoring to check that everything is running and to warn me about problems or potential issues. I know that there are plenty of existing solutions for this, but I want something simple.
I looked at NetData, but it didn’t give me what I wanted. And in its latest version, it can't do anything without requiring me to sign up for their cloud service. Prometheus is another popular solution, and it is free. However, it is non-trivial to set up, and I don’t think it can provide the alerts I need without significant effort. I have added metrics to the NextApp server that Prometheus can poll, so I will probably use it in some capacity.
The back-end for Sentinelix is being developed in Rust. This is the first Rust project I have started. I think it makes sense for me to get familiar with Rust, especially since I am first and foremost a C++ developer. There are so many comparisons between Rust and C++ on Reddit and TikTok. I have my opinions, but since I don’t know Rust in depth yet, they are more biases than actual rational opinions.
My initial feelings about Rust are that I don’t really like it. It gives me some of the same discomfort that Java does when I work with it. I also don’t see how anyone can write beautiful code in Rust. It reminds me of Brutalist architecture.
Once I had started skeleton projects in Android and Rust, I began adding gRPC support. For Rust, this was trivial — GitHub Copilot did most of the work in minutes. Android was a completely different story. Both GitHub Copilot and ChatGPT were unable to provide a pathway to a working app. The initial protofile had only one method, GetVersion()
, where the server returns a simple message with a string showing its version.
I used the latest Android Studio with GitHub Copilot (Google’s own AI is not available, probably due to the EU’s strict AI regulations). The fight with Gradle to get it to even build and compile the gRPC component for Android dragged out to around 10 hours over three days. In comparison, sketching the architecture for this project and deciding on things like what data to store, what database to use, what libraries to use, and what components to develop for various tasks took around two hours.