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.
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 January –
- No volunteering.
- I think I’ve made some progress in the “being less shy” department. It is also harder than I thought it would be!
- No progress has been made on learning Rust or Erlang.
- 1 book read – Colorless Tsukuru Tazaki and His Years of Pilgrimage by Haruki Murakami.
- 2 papers read – The Tail at Scale and Immutability Changes Everything.
- 5 blog posts.
- Zero muscle ups :(
I was reading an essay by Paul Graham the other day and one line in it stood out to me –
Few people know so early or so certainly what they want to work on.
This got me thinking about what got me interested in programming and computer science when I was growing up.
As I kid I was always interested in computers and I remember reading Digit cover to cover each month. My first foray into programming was when my mother enrolled me in a class to learn basic C and C++. I rebelled initially, before even attending a single session of the class – “I don’t want to learn programming! That’s not cool at all.” I decided to attend at least one session though as I didn’t want to hurt her feelings. And I’m so glad I did that.
I think the phrase “love at first sight” accurately describes what I felt upon looking at my first program (a simple “Hello, World!” in C if my memory serves me right). The feeling was incredible and I knew almost right away that I had found my calling in life.
Writing a post about what my goals and resolutions for 2014 was a great idea. I think being public and open about what I wanted to achieve was added incentive to actually completing those goals. In the same vein here are my resolutions for 2015 –
- Start volunteering: It was sometime in November or December of last year that I felt the need to give back to society in some way. While I didn’t act on this desire last year I hope to do so in 2015. I’m still in the process of figuring out exactly what I want to do, but off the top of my head volunteering at a homeless shelter and animal shelter are two ideas that I would like to act upon.
- Be less shy: I don’t think of myself as a shy person but I do feel I can be more open about my thoughts and how I feel. There have been instances in the past where I’ve held myself back and I regret doing so. In 2015 I hope to snap whatever weak threads are holding me back.
- Learn a new programming language: 2014 was the year I finally picked up Go. I’m still in the process of understanding the ins and outs of the language and actually writing something useful in it. But this hasn’t deterred me from deciding to learn something new in 2015. Current contenders are Rust and Erlang.
- Read 12 books: Reading one book per month is very doable. Goodreads, which I started using last year and absolutely love, should help me in achieving (and tracking) this goal.
- Read 24 research papers: I think my goal last year of three research papers a month was a bit lofty. I hope by dialing the number down by one I can achieve this goal. I’d also like to diversify the topics a bit – in the past I’ve focused mainly on distributed systems but this year I’d love to read some papers on machine learning and data structures as well.
- Write 24 blog posts.
- Do one muscle up: I’m quite satisfied with how my fitness improved over the course of 2014 and I hope to continue that trend this year. I was able to progress from assisted pull ups to non-assisted pull ups to weighted pull ups over the course of a year (Yes, my elbow does hurt from patting myself on the back there. Thanks for asking). What I wasn’t able to achieve though was a muscle up. I really hope 2015 is the year that I can do at least one of these.
Here’s to a fantastic 2015. Happy new year everyone!