Monthly update, September, October 2023

Published Updated

By Jarle Aase

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.