It has been awhile since I updated my blog. I attribute it to work–the never ending stream of things to do kind of weights me down and I lose interest in all things technical from time to time. I’m on a new project at work now, and I’m quite keen for it. It’s still the same old low level C/Assembly firmware development, but I get to work with serial RapidIO technology and that has been quite interesting. 3.125 Gbps links! I like this better than the former project working on MAC-layer software for a communication protocol. I either want to be working at the PHY level directly accessing or working with the hardware, or I want to be up higher on the application level solving interesting problems.
Speaking of the application level, in late December I picked up my Erlang studies again, and I’m making good progress in understanding how to use it. I’m implementing a simple chat server so I can wrap my mind around Erlang processes, file I/O and TCP sockets. Having programmed a server in C/C++ before I can really appreciate how great Erlang is for network computing. The code is so much more concise than the multithreaded C++ server I wrote in the past. I’m not using the Erlang OTP libraries yet, I’m working with the gen_tcp library since it is familiar to BSD-style socket programming. I’ve even dabled in a some Python scripts for testing the server. Like how Perl has become my tool of choice for “glueing” things together, I can see myself using Python more often for testing in the future.
Progress has been good, but I feel really shaky with strings at the moment. Manipulating text is something any software has to do, but I find that the first thing that pops to my mind is the C++ STL string library, so I go searching for a similar library in the Erlang man pages. I suppose that this must be expected–I just don’t know which libraries to use yet and it will take time to get the hang of them. It took me awhile to master the use of the C++ STL string library and its algorithms, and I’m just going to have to figure out which Erlang libraries have the functions I need. Perhaps I’ll draft a tutorial on Erlang string processing if I learn enough?
The good news is that my confidence with the language is increasing, tail recursion doesn’t seem that awkward, and immutable variables make complete sense now. I won’t be using Erlang at work any time soon (not the right problem domain), but for personal enrichment and for learning new ways of doing things I’m quite pleased with Erlang. If I ever get into application network programming (or network services), I know what tool I’ll be choosing.