Instead of reading two research papers for the month of March I’ve decided instead to read as much as possible (yes I know that’s not a measurable quantity) of The Architecture of Open Source Applications: Volume 1. I’d read the LLVM and HDFS chapters in the past and was blown away but how well written they were. I’m pretty excited to read the rest of the book.
Of all the albums I listened to in 2014, The Amanuensis by Monuments is definitely by favorite. The powerful, soaring vocals, excellent bass and drum work, and FANTASTIC guitar riffs make this an absolute joy to listen to. My favorite track from the record is probably Horcrux.
I’m quite disappointed I missed seeing them (and Animals As Leaders and Devin Townsend Project) in December. I had tickets but was feeling a bit unwell the day of the concert and didn’t want to risk my upcoming vacation plans.
At the beginning of the year I published a post outlining what some of my goals for the year were. In the spirit of being transparent, here is the progress I made on them over the course of February –
This week I managed to achieve one of my goals for 2015 – contributing to an open source project.
I think this was a great first project to contribute to. The code base was relatively small and extremely well organized and structured. The author also had a list of issues that needed addressing that made it very easy for someone to jump in and contribute to the project. I found an issue I felt I would be able to resolve, and after some back and forth with the author, my pull request for the issue was merged.
Things I learned –
- docopt is great
- How to use Request Sessions
- How to package and distribute pip projects
- Python decorators are immensely powerful
This was a fantastic experience, and I can’t wait to find the next project to contribute to!
With multicore machines now the norm, writing code that scales and performs well in multithreaded scenarios is becoming extremely important. I was thus delighted to discover the paper on Read-Copy Update – a technique to implement data structures with no locking on reads. Modifications (writes or deletes) still use some sort of locking mechanism, but the idea is that the ratio of reads to modifications is so large that by eliminating the overheads of synchronization on the read path we improve the performance of our code significantly.
This paper is extremely well written with lots of code samples. I specifically liked section 7 that compared read-copy update with other locking algorithms. Section 3 is also great because it allows one to answer the question “Can I use read-copy update for my data structure and its expected access pattern?”
Read-copy update is a simple (at least in terms of the general idea; the actual code implementation is tricky) and elegant solution for building high performance concurrent data structures (for certain usage patterns). It is definitely a topic I will be exploring further in the future.
Every year I decide that I will contribute to an open source project but somehow it always falls under the radar. This year I’m going to make a more determined push (pun very much intended) to make at least a small contribution to one of the many open source projects out there. GitHub Showcases is an excellent feature that should hopefully help me in this endeavor.
EDIT – By “contribute to an open source project” I meant something that I don’t work on during my job. So projects like Rest.li and the Rest.li API Hub don’t count 🙂 It has to be something I do in my free time.