New Language Thursday - Reloaded

Let’s be realistic and reduce the list to something manageable in the next couple of months.

  • OCaml (now that I started it I want to continue)

    • Getting started: Either add some features to mtail, or start a new one.
    • Project: Mirage OS sounds interesting. Alternatively, I would love to take a look at the formal verification tools available. But it seems that although OCaml advertises as industrial grade language (which I honestly believe now), the list of industrial grade software …

And a roadmap

  1. Rust

    • Getting started: I really don’t know yet.
    • Project: ?
  2. Erlang

    • Getting started: I need to find some good resources on setting up dev env and stuff like this.
    • Project: no clue yet, but it should be something distributed.

[...]


Mid-term Evaluation of New Language Thursday

Wow, it’s been more than two years since the original new language Thursday post. Back then, I wanted to learn the following languages by (a) following a tutorial of some sorts and (b) apply my knowledge to a small task that (in the best case) leverages the unique features of the language. Let’s see how far I got.

  • Erlang: I did quite some tasks on HackerRank.com using erlang, but my postfix mail address server turned out to be not that interesting to write at all. Besides, deploying erlang projects reminds me of the whole maven mess.
  • Rust: Read a tutorial at 2am, stopped at the first incomprehensible borrowing section. I definitely want to try again, but I need a good project to motivate me.
  • Scala: Finally, a success story. I actually get paid for developing scala at SAP Big Data. Real world use cases are thus check-marked.
  • Julia: I abandoned this in an earlier post, didn’t I? If not, I’m abandoning Julia right here. It is still an underdog language in a world dominated by python and R, and neither do I need much number crunching nowadays nor am I convinced by it’s features.
  • Haskell: I’m pretty scared, let’s postpone this. But Bartosz Milewski does a pretty good job sparking my interest.

I think this can be scored as okay-ish. Apart from the shift from Thursday to Friday (not affecting the NLT trademark), I intend to revive this series. Perhaps now is a good time - I’m still in parental leave.

[...]


My first OCaml project

After I finished the MOOC on OCaml recently, I really wanted to use it in a real world scenario (as opposed to the web-based editor in the course). As it happens, I also required a command-line tool for disentangling log messages, so I went ahead and wrote it in Python first and reimplemented it in OCaml afterwards. It’s on GitHub. The python implementation took me about 1 hour (including tests and so forth) and was mainly to figure out what the software should do.

Main takeaway: OCaml is awesome, and the tools are as well. However, I spent most time on this project on getting oasis to run as I want it to (and I’m still not convinced that I have set everything up correctly). But seeing the man page created by Cmdliner is just worth all the trouble!

[...]


Function over Form

Since I started working as a software developer full time, the urge to develop during night time has all but vanished. And having a child is also a welcome distraction from various Github side projects. Which does not mean that I don’t code for personal use anymore (my server still needs some management, and I updated my log obfuscation tool recently), but I don’t really get to trying much new stuff. New language Thursday has a rough time nowadays.

But at least I did one thing, and I am really happy to have stumbled over it (thanks HN). The university Paris Diderot offered an MOOC on OCaml, which was the best online course I have ever seen (admittedly, this is the maximum of a not-so-large set). Check it out: Introduction to Functional Programming in OCaml.

What comes next? For quite some time now I’m planning to walk through the list of top-level Apache projects and see what they are up to, but this seems quite ambitious (there are lots of Apache projects).

[...]