It has been a while since my last #100DaysOfCode update. I haven’t been exactly working every day on these challenges, but I did some work towards it for the past 10 non-consecutive days.

First to give some context on the project I had originally chosen to work on - a key-value store. Wow! So original, right? But I did want to add a multi-layered backend that store the actual data.

So I ended up looking at the different key value stores (especially those that were written in Go). I read through lot of source code, papers, blog posts and understood how different stores are implemented. I think I need some more time to build the KV store I have in mind.

The only real coding (other than work related code) I did was a PR to BradFitz’ groupcache project.

So even though I was reading and learning stuff, I am going to count the past 10 days as just one day in my 100 Days of Code challenge, because as the name suggests, it is a code challenge.

Two lessons that I learnt with this big break:

  1. Momentum. In whatever projects that you choose, always maintain the momentum. Keep churning code and making small improvements. Once the habit is formed, it becomes pretty easy.
  2. Small > Big. Begin with smaller projects than big grand projects. Even a small one-line change that you do today is much better than the 1000 line commit that you aspire to write some day in the future. Live in the present and work towards the next day.

With these learnings, the project I am going to work on is still a Key-Value store. But this is very simple no-frills store. It will work on memcache protocol (or a subset) and would be able to store the data to a local disk. No clusters, no multiple layers, none of that sorts.

I know there is memcached (the disk backed memcache store), but this is a way for me to get started on golang. I think implementing a key-value store is the “hello world” equivalent of learning a new language.

In tomorrow’s post I will be explaining more about the store, the need for it and the backend I will be using.