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
Posts
Affinity to signednedss
It continues to amaze me when I look at other peoples code, how many good developers think in signed integers. This is a short example of such code and a walk-through of why it is mis-guided.
Signedness in the world of computers Almost nothing in the world of computers is signed; you cannot send a negative number of bytes, you cannot have a negative amount of memory, you cannot put a negative number of elements in a vector and so on and so forth.
read article