Milhouse on software, engineering, and Emacs.

What I'm currently up to

TL;DR: Its been a while since I last posted something over here. In this post I will tell the interested reader what I’m up to recently. If you’re going to consider something from this post, consider this: Stop everything you’re doing and go play The Witcher 3.

In the last month I’ve been doing a lot of work related study, mostly in the realm of concurrency, multithreading and stuff like that. Because of that, I’m not being able to keep my blogging schedule and my reading fell behind a little too (although goodreads claim I’m two books ahead of schedule, go figure…).

I’m currently taking two Coursera courses: Principles of Reactive Programming in Scala and From Nand to Tetris. I’m working through the sixth and last week of the former and through the fifth week of six of the latter.

Principles of Reactive Programming is a good start for those seeking to learn about asynchronous programming, the actor model, futures, promises, observables and the like. The course requires little background and is self-contained. I’m not enjoying it in its full glory because most (if not all) the concepts explained I already knew.

From Nand to Tetris is a complete different story. The course is downright amazing. The objective of the course is to build a complete and fully functional computer from first principles. Alas, the only primitives you get are the Nand gate and a D-flip flops. All the other logical gates can be derived from Nand gates and all memory storage chips can be built from D-flip flops.

The course removes all the unnecessary complexities in order to teach you the fundamentals of how a computer works. Of course, the course is not exhaustive and most considerations about performance, cost and electrical engineering are left aside. In the end of the course, you’ll have built a full computer with an assembly language and an assembler. From there, it is possible to see the link to high level programming languages and everything else we are acquainted in programming.

For someone who lacks a formal education in computer science (and probably for some who actually do have it) the course is incredible and answers the biggest riddle of all: How the hell does is my Monad translated in zeros and ones ? Wtf?.

Also, since I still like playing videogames, I’ve been playing the first Darksouls game for PS3 a friend lent me. Everything was going well, but then last week The Witcher 3 was released. The game is absolutely incredible and extremely well done. This will probably be the biggest time sink since “The Elder Scrolls V: Skyrim” came out (which I played more than 700 hours… god help me).

Totally worth your time.

Next time I will continue talking about a CompletableFuture implementation in Ruby and how I used anonymous modules and Module#prepend to build a non-intrusive library for logging and metrics reporting.

That’s it.

footnotes come here (1)