How to make most out of Jira?


It has been quite a while (still < 1 year), I am using Atlassian Jira for bug/issue tracking withing my team of roughly 15. Previously, we were using a version of Redmine, doped to suit company environment.

I had read, heard a lot about Jira's abilities regarding how it can be useful to ease the project management and accurately measure the project's progress. But, recently under peer pressure of my group, where I was required to file some appropriate bugs/improvements/tasks, along with doing myriad of other things, I learned  importance of using Jira.

How we can make most out it?

Well, Jira is no magic, but just a tool; rather, it provides a platform for task management. So, all task management is left to you. Here's how I did and worked well for me
  • create a high-level abstract issue of big task you will be working on and put in the initial estimates if you already know or leave it to the sub-tasks
  • divide the task into concrete sub-tasks with concrete estimates
  • and work !
That's it! Its that really simple. Instead of adding a bunch of many issues, this way of filing issues into Jira really helped me to work efficiently and convey accurate project progress to my mangers. At times, I also had to update the estimates for the tasks but earlier you do it the better it is. That was the overall gist of it.



getting android emulator to work normally on 64 bit linux

Recently I started working on a nfc android app but I was stuck with very basic thing of getting emulator to work normally on my home laptop running Linux Mint. I tried numerous ways to configure eclipse, java paths, AVDs (android virtual devices), checking adb logcat etc but nothing really helped. The emulator could start but always hanged on the boot screen. (believe me, I even waited a complete day for it to boot up).

Thanks to StackOverflow again! As described in the comments here and also here, the Android team still has some more work to do until they make the emulator ( and other stuff) work with 64-bit version of java. But, I could happily run my android project with emulator ( which works quite fast now :) ) by simply configuring eclipse's default jre to be a 32-bit version of java 7. While 64 bit jdk being default for other things. 

unique id generation at high scale

Moving away from relational db allows us to work with huge data, which would otherwise be not feasible. But, it also mandates us to look into the issues that we didn't have to consider much about.

One of such thing was generating unique ids. With mysql you get auto-incremented ids which work absolutely fine for most of the use cases. But, for other systems, in context of nosql/distributed systems, that job is on system designer's shoulder. Inherently one-size fits all solution is difficult to come with.

There are many solutions proposed for this ubiquitous problem.

Twitter has developed snowflake which solves it.  They guarantee id generation with the following constraints :
  • minimum 10k ids per second per process
  • response rate 2ms (plus network latency
The other solution I found is  flake  by boundary. It achieves the goal of generating ids with good performance and adequate bit size 128 which snowflake lacked.

I will update more information on it later, as I confront with more of these.




Migrating svn repository to git


After googling I found this StackOverflow link. First, I needed to install git-svn module.
$ sudo apt-get install git-svn
Now we also need to map svn users to git users. we can get all svn users  ( skip if you already know them) with this command ( execute under svn project root )
$ svn log | grep '^r[0-9]' | awk '{print $3}' | sort | uniq 
Once you get all users, create a users.txt file mapping svn users to git
user1 = first_name last_lame <email@address.com>
user2 = first_name last_lame <email@address.com>
Once you make sure all of your svn users are mapped to git, then execute
$ git svn clone --stdlayout --no-metadata -A users.txt svn://hostname/path dest_dir
It will start fetching svn repository into git. If you run into other problems, like
Author: (no author) not defined in users.txt file 
then simply add following line to users.txt
 (no author) = first_name last_lame <email@address.com>
Note : If, due to this error, git svn command stops then simply update users.txt file and resume the migration
$ git svn fetch 

Now you can transfer your existing git repository to remote git url e.g.
$ git push --mirror git@github.com:username/project.git