Monthly update, September, October 2023
Personal
I took two weeks of vacation in September. My plan was to learn the Rust programming language - but I ended up drinking lots of beer and reading Space Opera novels in stead. That was actually quite nice.
In the last few years I have maintained a long list of computer related books I wanted to read. Unfortunately, I have only read a few of them, and then usually because lack of particular knowledge was a blocker for som project I worked on. Mid October, I changed my days, so that I start the day by studying from whenever I am ready to start, until 10 am in the morning. Then I start working on my projects. So far that has been a success. Reading computer theory 1 - 2 hours before work means that I am focused when I study (I am a morning person), and motivated when I start to work. Then I work for an hour until 11 am, when I have a 30 minutes brunch break. I have not noticed any drop in output after I re-structured my days.
So far I have read "The Rust Programming Language" and "Learning React, 2nd Edition" from beginning to end. Right now I'm re-reading "C++ High Performance - Second Edition". I started reading it on my Android tablet using my Safari Books subscription - but the Safari user experience was so horrible (no code syntax highlighting, all the illustrations was missing) that I bought the Kindle version and is reading that in stead.
Rust
Learning Rust is on my list for what I want to achieve this year. Now that I have read my first book about Rust, I hope I will find time and energy to make a few small applications with it in the next two months.
React
I have been struggling to find a reasonable simple approach for making web UI's for some of my servers for a very long time.
I am not a "front end" developer. I have made plenty of web applications, but all of them have been back-end with little or no use of java-script in the browser. I have also made a few static web site generators, the first one in 1996, the latest in 2017. The last one, stbl creates adaptive websites that works as well on the phone, as on a laptop or PC. It does that with simple CSS styling, without any "help" from stuff like "Bootstrap" & friends.
But in my servers, I want the UI to consume the REST API from the server. I don't want to add a nodejs, php or python back-end application. So I want something that can render a simple UI and call the required API's directly from the browser. The safest bet would probably be HTML5, CSS and jquery. However, that requires a little more learning and coding than I feel comfortable with. I spent some time researching what's out there, inducing a few conversations with Chat GPT. Eventually I read a book about Facebook's React. It seems relatively structured, and even if it is a little bloated, I think it may be the shortest path to my goal. I started to make an experimental UI using React yesterday.
Open source projects
nsblast
Massively scalable DNS server
Nsblast is moving forward. In the last six weeks I have added:
- Database level Backup and Restore (using Rocksdb's new Backup/Restore API)
- Scheduled backups, automatically handled by the server
- Added get/list zones and RR's in the REST API
- Added filtered deletes of RR's in the REST API (for example, delete all TXT resource entries from a fqdn)
- Added a simple shared secret authentication option for the gRPC replication
- Added Debian
.deb
package creation to CMake so that I can easily deploy the server directly in a VM. - Added TLS option to the gRPC server. Self signed certs can be created by the
nsblast
application via command line options. - Added comprehensive tests for RBAC and fixed a number of bugs
- Started to work on virtual zones (shared zones, where tenants "own" a fqdn and can create children expanding that).
- Started to work on a web-UI based on React. The aim is to let nsblast's built in HTTP server host the UI.
Yahat-cpp
Embedded HTTP server for REST API'S in C++
I'm using this in nsblast.
Added automatic "CORS" handling. This is required for HTTP REST API's that are accessed from web browsers. It's a answer for problems java-script in the browser created for itself - and just like java-script - another reason for massively wasted CPU cycles and energy use.
I really want to get started with Beauty next year. That would give me a really nice, performant HTTP server for all my needs. Now that C++20 is starting to be mostly implemented in the C++ compilers, including modules, I feel like the time is right to move forward.