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
Posts
LISP memory woes, but not
During a recent project I encountered memory allocation failures in a LISP system, seemingly caused by poor garbage collector performance. More careful investigation revealed a more fundamental problem however, one that is even completely unrelated to the choice of language or runtime.
System Outline Without going into unnecessary detail, I should give a brief overview of the system I have been working on. It is an import system for a search engine; in other words, it trawls large datasets that it downloads from an object store, processes those datasets, and uploads certain data in the form of XML documents to a search engine.
read article
Posts
HTTP/2: We're doing it wrong
HTTP/2 is a symptom of a disease; it is a terribly ill conceived deterioration of the otherwise pretty good HTTP/1.1 protocol.
Most really terrible ideas (like a computer in your toaster or a 3D television) usually linger for a while and then die and leave us alone. Of course I was expecting for HTTP/2 to go this route, but yesterday was a shocker:
Looking at integrating with Apple’s PSN (Push Notification Service) API, it became apparent they only support HTTP/2 access.
read article