Posts
Why not Kubernetes and not containers
Here I was going to describe the rough configuration of my four node cluster - however, based on questions I’ve gotten, there was a more pressing issue to address first.
First let me just re-iterate why I run the cluster at all: I want a neat little compute cluster at home from which I can serve this web site, my e-mail plus whatever other services I want for hobby purposes at home (like a git repo, file services etc.
read article
Posts
Keep it light weight
A while back, as part of my ever so slightly over-engineered noise reduction effort on the basement cluster, a simple fan manager daemon was developed. Emphasis was on simplicity and small footprint.
Now some weeks down the road, looking at systemctl status fanman output, I cannot help but notice that, accumulated, the fan controller software does burn quite some cycles on the CPU. A full 38 minutes and change, from running just around two and a half weeks.
read article
Posts
A RISC'y cluster - Part III
This may lead to accusations of over-engineering, but I solved a problem and had fun while doing so.
The four node cluster runs two different types of 5V fan, two fans are fairly quiet but clearly noticeable and two are somewhat loud. All in all the cluster is too loud, and noise aside, it’s silly to be running fans at full tilt when there is no need for cooling.
The plan The VisionFive2 board has a 5V fan header, but no electronics behind it to allow regulating (or even switching on/off) the fan.
read article
Posts
A RISC'y cluster - Part II
Building a chassis for a 19" 1U four node cluster of StarFive VisionFive2 boards.
Getting the boards set up with a clean Debian Trixie install on on-board NVME storage was treated in the previous post. Now we need to create an enclosure that will fit four of these boards in a single unit of a shallow 19" wall-mounted rack.
Why the dimensions? First of all, organising computers and switches and the like in a 19" rack is just convenient.
read article
Posts
A RISC'y cluster - Part I
A house without a cluster is just a house.
In order to run mail, website, git, batch processing and whatever other services you can imagine needing servers in the basement for, I set out to find an interesting and exciting while still economical solution.
Bit of background Through my career I have worked with many hardware architectures. I have written assembly for x86, Sparc, UltraSparc, PA-RISC, Power2, Power PC, Alpha and other processors over the years and I have written high performance software for all of them in higher level languages too (Fortran, C, C++).
read article
Posts
Reboot the site
It’s been a full 8 years and change since I wrote my last post. I have been busy work wise and in private life, and I desperately wanted to change the site architecturally. I wanted a new static site generator since the old one (BlazeBlogger) was lacking in a great number of ways.
Basically I have been putting off redoing the site because I felt that writing a static site generator would be a fun project.
read article
Posts
High performance JSON parsing
Imagine having JSON documents of varying structure from which you need to efficiently extract a small specific selection of values. Now imagine having millions of those documents, imagine the documents growing over time in size and complexity, and imagine having to parse them and extract the necessary data on a tight time and memory budget.
In this article I describe a solution to this problem wherein a language construct is developed that allows for precise specification of the desired data subset that is to be extracted.
read article
Posts
A new-years KISS
Anyone who says “less is more” is of course high, stupid or both. Less is not more - but the message intended in that common cliche is that “less is better”, which is certainly the case more often than not.
The problem Without going into details… A developer is faced with the problem of generating a string like foo=42&bar=more&baz, given the following set of mappings:
Key Value foo 42 bar more baz The diligent reader will recognize the string as the options part of a URI, and can also safely infer that the table of key/value mappings is indeed held in an STL map<string,string> structure.
read article