Erlang, the language for network programming Issue 1: pattern matching

Much is being said about the excellent capabilities of Erlang to write distributed fault-tolerant programs, but little has been said about how easy and fun it is to write servers (those programs at the other end of the line) with it. And by easy I don’t just mean that you can put up a web server in two lines of code and hope it’ll work, I mean it’ll be easy to built robust servers.

One example of this is ejabberd, a free Jabber server.

One of the Erlang features that let us write servers is its binary pattern matching. But to understand binary pattern matching first you have to understand pattern matching.

Let’s start with a classic of functional programming: factorial. This is factorial in Erlang

fac(N) ->
   if N == 0 -> 1;
      true -> N * fac(N - 1)

Continue reading “Erlang, the language for network programming Issue 1: pattern matching”


Software Release Cycle


I am writing this description to remember what to do when I reach the time to release one of my various projects1, that doesn’t happen often enough for me to remember the whole process and it is tedious enough to hate it when I forget a step. So, I decided to describe it.

First I will explain the version numbers I use. At one time I used the Linux version numbers but when I worked in KDE I’ve seen the beauty of their version numbers (if there’s place for beauty in such a thing).

Then I’ll explain how I create and maintain the various branches, tags and tarballs.
Continue reading “Software Release Cycle”

Two-in-one DNS server with BIND9

This tutorial shows you how to configure BIND9 DNS server to serve an internal network and a external network at the same time with different set of information. To accomplish that goal, a new feature of BIND9 called view is used. As a tutorial it’ll walk you through the whole set up, but initial knowledge of BIND and DNS is required, there are plenty of documents that cover that information on the Internet.

Continue reading “Two-in-one DNS server with BIND9”