Category Archives: Random/Personal

Random thoughts and rants

Looking back at 2015

2015 just ended (is it already a month?) and like the last 7 years here is my year-end review post and plans for 2016. I generally publish them in the first week of January itself, but this year started as a very busy year and this post got pushed back by a month.

Personal Highlights

2015 was a special year for me from my career perspective since I worked the entire year from home. Towards the end of 2014, I joined 10up which enabled me to work from home and this work-place freedom has also helped me to move back to Chennai, my hometown after being in Bangalore for about 6 years.

Working from home has enabled me to spend more time with my family, especially with my 2-year-old son and I am very glad that I choose to work with 10up.

Continue reading »

Posted in Random/Personal | Tagged , , | 6 Comments

Goodbye Bangalore, Hello again Chennai

After being in Bangalore for about six years, I have finally moved back to Chennai, my hometown, this past weekend.

Continue reading »

Posted in Random/Personal | Tagged , , | Leave a comment

Thank you, Alex King

It is with great sadness that I came to know that Alex King one of the original WordPress developers has passed away last night.

Even though he doesn’t know me personally, he was one of my major inspirations and a major reason I started working on WordPress. He was also the reason I wrote my first every WordPress plugin back in 2008.

Continue reading »

Posted in Random/Personal | Tagged , , | 2 Comments

Looking back at 2014

2014 just ended and like the last 6 years here is my year-end review post and plans for 2015.

Personal Highlights

2014 was a milestone year for me from the career perspective. First, I completed my 10th year at work. It’s been exactly a decade since I started to work, fresh out of college. Then, I quit my job at Yahoo where I was working for more than half a decade, took a break, did a self-reflection, decided to steer my career towards WordPress and joined 10up. It’s been less a month since I joined 10up but I have already realized that I made the right decision.

Continue reading »

Posted in Random/Personal | Tagged , , | 6 Comments

Joined 10up

After being “officially unemployed” for about a month (and after taking a nice break 😉 ) I have joined 10up.

Continue reading »

Posted in Random/Personal | Tagged , , | 13 Comments

Goodbye Yahoo

Today was my last day at Yahoo and for the first time in my decade long career I am “officially unemployed” 😉

Continue reading »

Posted in Random/Personal | Tagged , | 16 Comments

Looking back at 2013

Another year just ended and it’s time for publishing my year end review like the ones I did for the previous few years.

Personal Highlights

2013 was a milestone year for me in the personal front. I spawned a new process 😉 (Translation for those who didn’t get it: I became a dad).

Like all parents know, this is the most rewarding as well as the most demanding experience. Luckily, my little one has kind of gotten into a proper sleeping schedule these days and so my (and my wife) zombie days are in the past.

This would explain why I was kind of out of action (less blog posts, not much public speaking etc) in the last few months. Hopefully, I should be back to action in 2014.

Open source contribution

Back in the early days of 2013, I decided to do at least one contribution per day to open source projects. I was able to maintain this streak for more than 4 months (124 days to be exact). A look at my github profile, should explain everything 🙂

I also took over the Arduino Makefile project and worked hard to steadily increase its popularity. Right now it has around 250 stars and close to 100 forks in Github.

I also moved most of my WordPress plugins to github. This also increase the popularity of my WordPress plugins and also user contributions.

Reading

Towards the end of the year, I decided to take a reading break and this helped me to complete around 10 novels from Isaac Asimov’s famous Foundation Series.

Blog Stats

I used my Year End stats WordPress plugin to generate the following stats.

2013-no-posts2013-no-comments2013-total-post-length 2013-avg-post-length

The total number of posts that I have written in 2013 has increase a little bit and I am happy about it.

I am planning to write a little more in 2014 as well. Hopefully my little one allows me to do so 😉

What’s in for 2014?

I am definitely planning to spend quality time with my family, especially the little one 🙂 As most parents know, the first few years of a kid are the most rewarding ones and I don’t want to miss out on it.

Assuming that I will have time after that, I want to do the following as well.

Books

I definitely want to complete the Foundation Series that I started. I still have another 5 books to complete.

After that I am planning to read favorite person Chris Hadfield’s Autobiography: An Astronaut’s Guide to Life on Earth. I already have the book, I am just waiting to finish Foundation Series.

Also, if you have recommendation, please let me know. I am planning to read at least a dozen books this year.

Learn R

I am also planning to concentrate a little bit more on Statistic and Machine Learning and as part of it, I am planning to learn R. I am also planning to see if I compete on some competitions in Kaggle. I might also start writing about more about Machine Learning this year. So stay tuned 🙂

Hardwarefun

Regarding hardware stuff, I am planning expand HardwareFun.com and write more posts there and also continue working on Arduino and start playing around with Raspberry Pi as well. So it is going to be pretty exciting.

From the looks of it, 2014 seems to be an exciting as well as a busy year and I am really looking forward to it.

So how was your 2013?

Posted in Random/Personal | Tagged , , , | Leave a comment

Spawned a new process ;)

Well, I wanted to have the geekiest synonym for “We just had a baby” as the title for this post (similar to my wedding card). Since I am currently typing this from a hospital, sleep-deprived, while constantly sifting my attention between my recovering wife and my new born child, this is the best I came up with 😉

In the last 24 hours, I have experienced extreme cases of all the 8 emotions specified in Robert Plutchik’s theory, but in spite of it this had been the best 24 hours in my entire life so far 🙂

So guys, join me in welcoming our son to this beautiful world. By the way, all credit for the creation of this new process goes to my wife who did all the real work 😉

More details and pics coming soon, after (if) I catch up with some sleep 🙂

Posted in Random/Personal | Tagged , | 11 Comments

How to encourage contribution in open source projects

Last month, I talked about why you should open source your pet project, and also explained, how I started maintaining the Arduino Makefile project.

After that, this past one month has been really busy. I guess instead of me explaining how busy it had been, I guess the following picture would give a better idea.

github-contributions

There were 70+ commits that got into the project and huge number of critical bugs got fixed. If you look very closely, you will also find that it’s not just me who have been doing this 🙂

I always believed that github encouraged contribution to projects, but in the last one month I also learned a couple of new lessons on how you could encourage more participation and contribution to your open source projects.

Below are some of those learnings. Do take them with a pinch of salt though 😉

Let people know that they can contribute

This might seem silly, but it is really important to let people know that your project is open for contribution. I have spent countless hours fixing bugs and sending pull requests to projects in github, only to know that the repo owner is not interested in contribution 🙂 And it is still worse, when they just decide to be silent about it, without even leaving a small comment.

So let people know upfront whether you will be accepting contributions or not. You don’t have to write huge paragraph about it. Just a single line, which says “contributions are welcome” in the readme file should do it. I generally add some variation of the following in my projects.

All contributions (even documentation) are welcome 🙂 Open a pull request and I would be happy to merge them.

Let people know how to contribute

The next thing to do is to let people know how to contribute. The following are things which you might have to let them know.

  • Which coding style they should follow
  • Tabs vs space or 2 vs 4 character indent or to have a semi-colon or not 😉
  • Whether they should open a pull request or send you a patch/diff
  • Whether all pull requests should contain test or/and documentation
  • How they should word the commit message. I try to follow this guide by Tim Pope
  • Whether you need them to have multiple commits or one single commit

You could choose your own process, but keep in mind that the simpler the process the easier it is to follow it. I generally follow a very simple process and reword or change the commit message if needed.

One other thing, you might have to keep in mind is that, not everyone is comfortable with git/github. In those cases, I point them to the guide that I wrote to help people contribute to github projects.

Track feature requests and TODO’s

Sometimes people want to just get their hands dirty by contributing a simple fix or feature before they become comfortable. In order to help people get started I track all feature requests and TODO’s in github issues. I also use TODO comments in the code and if applicable also link it to corresponding github issue. I also add the following line in the readme file.

If you are looking for ideas to work on, then check out the following TODO items or the issue tracker.

In addition to helping people who want to contribute, this also helps me to keep track of issues and features for the projects. If applicable also try to create milestones and assign issues and feature requests to corresponding milestones. This will also be useful for users of your project, to know when to expect a feature to be implemented.

Respond to pull requests

If someone sends a pull requests or reports an issue, try to respond to it. When someone creates an issue or pull request, they have spent their free time and you should respect that fact.

Sometimes you may not be interested in accepting the pull request. In those cases at least let them that you can’t accept it and also let them know the reason why you don’t want to accept it.

Be polite

Eventually, you will receive a pull request which is just plain stupid. Even in those cases try to be very polite.

When people are just getting started they may miss out something and might make mistakes or may not understand something which will look too trivial. But if you are going to embarrass them or be hostile, then it is not going to be helpful for them. They might just stop contributing not just to your project but for any project. Be polite and encouraging, especially if they are just getting started and you might make someone’s day a little brighter 🙂

Also leave a simple “Thank you” comment after you merge someone’s pull request. It is a little mark of respect that you show for someone who has taken an effort to fix your code.

Follow a proper versioning policy

Any project which will be used by more than one person needs a proper versioning. These days I have started to follow Semantic Versioning for most of my projects. It is very simple to use and very effective.

Show people how to do it, by doing it

Whenever I want to contribute to a project, I try to get a sense of how things are done by seeing the commit history. So if you want people to follow a certain process or style when they contribute, then you should follow it in the first place.

Hide your time machine 😉

.. and don’t forget to hide your time machine 😉

Sometimes a little humor in your comment to a issue might make it easy for you to communicate with someone on the other side of the globe.

Happy coding 🙂

Posted in Random/Personal | Tagged , | 2 Comments

Why you should open source your next pet project

After looking into my github account, lot of people used to ask me why I open source my pet projects, especially after looking at my streak at github (my current streak is at 52 days 😉 ) the frequency of the question has increased.

I used to come up with an answer by combining these words randomly (passion, show off, free, rebel, linux, anti-Microsoft, license). But today, I realized that there is another (more important) reason why you should open source your (pet) projects.

Your project might have a longer shelf life than your interest in the project and in some cases longer than your life itself.

You might lose interest in the project, but if you have open sourced it, then there might be someone else who will continue to maintain it. But instead if you had just kept it in your hard drive, then it will just become part of the cosmic dust.

Abandoned projects

I have read about many examples where projects are continued to be maintained by other people, when the original creator has lost interest. _why is one famous example. When he suddenly went offline in Aug 2009 people immediately started creating mirrors of his projects and even though he is no more (in the online world) his projects are still being maintained actively.

None of this would have happened if he had not open sourced his code.

Arduino Makefile

Let’s talk about the project that thought me this.

Sometime back, I came across a post which explained how you can program Arduino from command line by using a makefile. I immediately got hooked and started using it when even I was working on Arduino sketches.

Soon I found out a couple of issues and submitted pull requests. Some of my pull requests were accepted and others weren’t. While browsing through the issues and pull requests of the project in github, I found that there were lot of other people who have also contributed various patches to the project. It also seemed that the original author has stopped doing any development or answering pull requests.

I started to consolidate all pull requests and patches from various forks into a common fork and even updated the readme file expressing my desire that one day all these changes would get into the main repo 🙂

Fast forward a couple of months.

Last week, I was surprised to receive an email from the original author, saying that he has lost interest in the project and whether I would be interested in maintaining the project going forward. I happily accepted and he transferred the repo to my account, after I merged all my changes back into the main repo.

None of this would have been possible if he didn’t choose to open source the project initially and also let go the project when he lost interest.

Thanks to Github

Ohh, by the way, I should also mention that some of it was possible only because of github. If github wasn’t there, then it would had been difficult for me to find and consolidate other forks and he also wouldn’t have noticed my fork or the effort that I was spending on the project.

Also, the recent addition of redirects by github made the repo transfer really seamless.

So remember to open source your pet projects by at least uploading them to github. Because you may lose interest in the project some day, but the project might still continue to live long after that.

Happy Open sourcing 😉

Posted in Arduino, Random/Personal | Tagged , , , | 6 Comments