jlouis' Ramblings

Musings on tech, software, and other things

  • Two Technologies which are Bad for You

    For some odd reason, we end up in situations in this industry which looks even more grave than earlier. In this post, I am going to rant. I am going to rant on two things, which I think contributes negatively. I wanted to write a nice clean post, but rants sometimes fits ones mood better, I guess. JSON How did we get JSON? Well, we had ASN.1 which is a fine format for many things.

    Read more…
  • Erlang and code style

    Correct Erlang usage mandates you do not write any kind of defensive code. This is called intentional programming. You write code for the intentional control flow path which you expect the code to take. And you don’t write any code for the paths which you think are not possible. Furthermore, you don’t write code for data flow which was not the intention of the program. It is an effect, silly If an Erlang program goes wrong, it crashes.

    Read more…
  • Erlang String Handling

    The cat is out of the bag. Now, since WhatsApp had success using Erlang, more people will gravitate toward the platform. One of the common things that will happen as a result is that people who do not understand the string handling capabilities of the Erlang BEAM VM will fail to use it correctly. This costs a lot of unneeded clock cycles and this post aims to thwart it. First of all, since this is rather VM specific, it also applies to Elixir users.

    Read more…
  • Error Kernels

    In any computer system, we can split the system into the part which must be correct—no matter what happens; and the part where we don’t need the system to be correct all the time. A typical example of this is the operating system kernel. We believe the operating system kernel to be correct, but we don’t a priori trust the userland applications. If one of those fails, the kernel can take over, reap the process by killing it and reclaim the resources the process used.

    Read more…
  • A moonpig-like system

    The Raven that used to sing—​and other stories Mark Jason Dominus wrote about "Moonpig", which is his and Rik Signes work on building a billing system in Perl. He wrote up his story over on his blog. At Issuu, Francesco Zanitti, Anders Fugmann, and I wrote a system which has some similarities to Moonpig. This is a hash through that system. Currently, we mostly handle post-paid services.

    Read more…
  • The Erlang Shell

    (Front Line Assembly: Civilization, Eastern Sun: In Emptiness) As an Erlang programmer I often claim that “You can’t pick parts of Erlang and then claim you have the same functionality. It all comes together as a whole”. This is true for many programming environments where the main components are built to be orthogonal from each other and the parts form the cohesive whole. A good example of this approach would be Go as well.

    Read more…
  • Glicko2 Benchmarking (1)

    One of my hobby projects is to run statistics on Quake Live Duel matches. I began collecting data around 1st of Feb 2013 and now I have scraped around \(2.5\) Million duel matches. This allows me to play with different ranking methods on the players and gauge their ranking. The ranking system I use is called Glicko2, devised by Mark E. Glickman (http://glicko.net). The system is like the chess rating system ELO, except that it is newer and avoids certain problems with ELO.

    Read more…
  • On Logbooks

    My friend, Michael T. Richter, presented me with a nice concept from engineering. The logbook. The concept is extremely simple: you keep a log of your work, so you can refer back to it later. Yet, there are relatively few in Computer Science who does that, which is a sad state of affairs. The odd thing is that most computer scientists do know the importance of logging in an application.

    Read more…
  • Eventi

    So, listening a bit to “The Civil Wars” this afternoon cooked up the rest of eVenti. This blog post is brought to you by Maurice Ravel, and Morcheeba however.[1] The eVenti system is a simple Erlang-implementation of the venti(8) system famous from Plan9. The idea is very simple: We can store data in Venti and the data becomes addressed by its SHA1 checksum.footenote:[I should probably change this later, but for compatibility reasons we stick to it…] This is called a Content Adressable Storage (CAS) because Content is—you guessed it—addressed by the checksum of the content.

    Read more…
  • Glicko 2 Benchmarking

    Glicko2 is a ranking system for duel games. I use it to rank Quake Live duels. The idea is to find a value, the strength of a player, called R in the system. The higher the R value, the better the player. How does Glicko2 estimate R? It looks at historical data and uses bayesian methods to estimate the current strength of a player. Like all other systems, there are parameters we can tune for a set of players and a set of duels:

    Read more…