How to navigate through your java projects on Github like a boss?

If you are an Android or a Java Developer you’d know about the pain of navigating amongst the classes of a project on Github. You either need to look it up in the tree like this

or use the file finder using the keyboard shortcut “ t ” like this

But while you are looking at the code, and want to jump to another class you have to use one of the above methods unlike what you do in the IDE. You just Cmd + Click and reach the other class, like this

In order to bring the similar kind of navigation to Github, I wrote a chrome extension which will automatically hyperlink all the classes of your project so you can just click to open them in a new tab.

Here it is in action

Installation is simple, just click on this link and once installed just open any of your projects on Github and navigate through the classes like a boss 😎

Wait…there’s more to it! It also links all the classes from the Android SDK to the official documentation, which means now you have almost everything you need to understand the code on Github at your disposal with just a click.

I would love to your hear feedback on this effort. If you like it, just hit the ️💚 icon below and let your friends know about this extension.

The extension is open sourced already, feel free to star and/or watch it, report issues, improvements and features. I’d be more than happy to accept pull requests there.

Github Repo :

Follow me on twitter :



7 things you need to know, to ace your GSoC Proposal

So its that time of the year again when students will start hustling for their Google Summer of Code proposals, especially since the organizations will begin accepting them from today.

Before you go any further, mark your calendars, April 3, 2017, is the last day to submit your proposal.

1. Structure of the proposal

Portrays you as an organized person

The most important thing that you must keep in mind always while writing your proposal is that your proposal is your best advertisement.

The flow of this advertisement (story) of selling the product (yourself) to the customer (org/mentor) is in your hands. So why not structure it in such a way that the person going through it, gets so engrossed as if you were going to tell them about the death of the next character in Game of Thrones.

2. Identify the Problem, Propose the solution

Shows you’ve understood the project

Clearly define the problem that you wish to solve through this project. Brownie points, if you can also tell why is this a problem because it’ll tell the reader that you’ve taken a step forward to understand the underlying idea of the project.

Mention the technical aspects of the project. This part of the proposal can be and should be lengthy, as it is nice to give a long detail description of how you are going to complete the project.

Try to highlight:-

  • Things that you find challenging.
  • Things that you have no idea about, at the moment.
  • Any other blockers you might have.

Then, also mention how do you plan to overcome all these hurdles.

3. Deliverables — with bullets

Show you’re result oriented

A good proposal should always contain deliverables. These are the things you want to deliver or goals you want to achieve in order to be able to successfully pass all the evaluations and graduate as a successful GSoC student.

Break them down into smallest pieces possible.

This’ll give you confidence during the program when you can start checking off things from your list.

4. Well Defined — Timeline

Depicts how you manage time

This can be a game changer at times when choosing amongst students who are competing for the same project.

A humble, realistic and detailed timeline is much better than a timeline that promises to move mountains.

  • Show weekly goals
  • Dedicate enough time for writing tests and documentation.
  • Honestly tell about any other activity that you are going to do during the summer, which will take up significant amount of time, including but not limited to: exams, classes, travel and vacation days, internships, jobs, volunteer work etc.

5. About Me — Go nuts bragging about yourself here

This has to be a section more or less acting like a CV for you. Tell about yourself here, give all the channels of communication you use.

Here are some that a lot of people in open source use (so make sure you have everything already setup) :

  • IRC
  • Jabber
  • Skype
  • Email
  • Google Hangouts

Don’t forget to mention about your Open source contributions here, if they are in the same organization/project very well! If not, you can still mention.

6. Iterate while you can

Don’t be in a hurry to submit the proposal. It is completely fine to submit it on the last day since organizations will usually not start reviewing them before the that.

Get it reviewed from as many sources as you can.

Most importantly from your:

  • Mentors
  • Previous GSoC students
  • Someone who has relevant expertise in the tech stack or the project that you are working on. (You can get the problem and solution part reviewed from them, they might even give you a better idea to approach the problem.)

7. Images worth 1000 words

Show your dedication

Try investing some time in creating and adding mockups, flow charts, diagrams or anything relevant you find can be pictorially represented.

I’d be more than happy to review your proposals. Head over to this GitHub project and send in your proposal as a PR for the review.


A Productive Git Workflow

Since git is an integral part of my development life cycle and I spend quite sometime committing things to it, I always felt there was something missing, until I did my Android Nanodegree at Udacity where I learned about structured commits.

Why structure your commits?

  1. Keeps your git history neat & meaningful.
  2. Easy to generate change logs

Lets look at how I structure my commits.

The Commit Prefixes

  • feat — a new feature
  • fix — a bug fix
  • docs — changes to documentation
  • style — formatting, missing semi colons, etc; no logical code change
  • refactor — refactoring production code
  • test — adding tests, refactoring test; no production code change
  • chore — updating build tasks etc; no production code change

But you’ll be wondering how is it productive when you have to type those tags into each commit message.

So here’s a script you might want to see

Just put it into your PATH and access it easily like so

$ commit feat

So now when I do

git log --oneline --decorate --graph

Here is what it yields

This is just half the fun

Now when I want to generate a change log, I have a python script that picks up all the commits with the tags feat or fix to generate a change log for me.

Here is the python script

So the output of the python script looks something like this in a change-log.json file

"feature 1",
"feature 2",
"feature 3"
"fix 1",
"fix 3"

You can then use this to easily curate your or tell your boss what you did over the last X days.

You can change this variable in the python script on line number 14 to generate the change log from the date you want

afterDate = '2016-09-12'

I’ll be adding more productivity related stuff to it soon. Till then you can give some love to the repo.