For the past few weeks I’ve been reviewing my participation in open source projects (which goes back to 1999). The bulk of my work has been on mailing lists helping people solve their problems, documentation, testing, etc. Sadly, I recall getting involved in heated discussions about project organization, licensing, rules, etc. This has created a enormous amount of stress for me and is the reason I often burn out quickly. I’m really tired of all the drama.

So from now on I’ve decided that I’ll try my best to stay away from these discussions (which I’ve already been doing mostly) and focus on coding and quietly contributing to improve the technical side of things and making people’s lives easier through that. Although I think my ideas about project organization are good (my mom certainly agrees), it’s just too stressful. There is too much people wrong on the Internet, right? Perhaps when I’m older, with hundreds of thousands of excellent contributed code in my GitHub account, I’ll few I’m entitled to contribute more with the soft aspects of collective projects.

So that’s my 2015 New year’s resolution: more code, less drama.

Hopefully it improve my sleep too.

I used to have a Compaq mechanical keyboard that was very good, but this was almost a decade ago. Since then, I’ve only used membrane keyboards and never cared much.

Recently, inspired by a friend, I decided to buy a new mechanical keyboard. After much research, I settled on Cherry MX Clear switches and bought the keyboard at WASD Keyboards. Here it is:



The nice thing about WASD Keyboards, besides their excellent customer service, is that they have an editor that lets your customize your keyboard in many ways. I started with full black and colored some keys that I thought would look nice.

The switches feel very nice and the 0.2mm dampeners that were installed seem to really help with noise reduction. So far, pretty impressed with it!

A big thanks to the Brazilian government for taxing me 100% on top of the final price. I hope this money helps to protect the vibrant mechanical keyboard industry in Brazil.

While learning more about CoreOS, it seemed critical to understand etcd in detail. That lead me to read more about the Raft Consensus Algorithm.

I’m well aware of the issues with master-slave replication in traditional relational database systems and how it’s important to get it right, but it never occurred to me that achieving consensus was such a hard problem in eventually consistent systems. Well, now I know better.

After going through the basic explanation at the Raft website, I decided to read the Raft paper, by Diego Ongaro and John Ousterhout. It feels like the understandability goal has been reached because, although it was a bit over my head sometimes, I think I have a good grasp of how it works and the challenges involved. Perhaps I’ll feel brave enough in the near future to read the literature on Paxos, but for now I’m satisfied.

I also decided to learn the Go programming language, as it seems sufficiently stable now, and use etcd as my learning project. My method consists in commenting the code thoroughly (something akin to literate programming). This way I can make the learning experience more “real” for me (and perhaps contribute something back in the process).

Update: another great paper to read on Raft, and consensus algorithms in general, is the “Analysis of Raft Consensus“, by Heidi Howard.

“Study hard what interests you the most in the most undisciplined, irreverent and original manner possible.” ― Richard P. Feynman