JIRA Training in India - Best Practices

Over the past few months I have seen a tremendous increase in demand for JIRA Trainers. I guess lot of companies are now moving to JIRA for their Issue Tracking. Already Atlassian has done a great job in create a world class product which is being used by so many companies like linkedin, twitter and even facebook. There are lot of other tools like Fisheye/Crucible, Bamboo, JIRA Agile, Hipchat and Confluence which integrates really well with JIRA.

I guess that is one of the reason why companies prefer to use JIRA as it is not just a product for issue tracking. One can customize it to act like a Helpdesk system, Test Management or even keeping tracking of HR processes.

Though it is really very simple to customize JIRA, it is usually a good idea to plan the customizations really well.

Things to take care before implementing JIRA in your organization.

1. Plan JIRA Installation

There are several questions that one should ask the teams before installing JIRA.

  • Number of Projects?
  • Number of Users?
  • Whether you need Email Notifications
  • Authentication method
  • JIRA will be used from multiple locations?
  • Concurrent Users
  • Number of issues/projects?
  • Total issues?
  • Support for attachments
  • Number of custom fields

2. Choice of server

It is very subjective. If your IT is more comfortable with Windows, SQL then use windows server. Linux has some advantages like ssh, and more suitable for open source tools like postgres or MySQL.

Generally for best performance most people prefer Linux - RedHat or CentOS being the first choice of distro.

3. Choice of Database

If you are planning to use linux then preferred database in Postgres

4. Amount of RAM

No fixed answer for this but here are some suggestions from the Atlassian website.

  • For upto 50 projects, upto 100 users,
  • For uptp 100 projects, upto 3000 users,

5. Monitor the Traffic

Use tools like Awstats and Google Analytics. This will help you immensely in understanding the peak of traffic.

6. Document your Configurations

If you plan to use JIRA for 3 difference Use Cases like Test Management, Software Development and Helpdesk System then create 3 separate documents to store all the configurations. You can also use excel sheet if that is more convenient, the idea is to finalize all the configurations before you implement them in JIRA and never modify the configurations in JIRA without storing them in the document. These configuration documents will help other JIRA administrators who will take over your work in your absence.

7. Setup a CCB - Change Control Board

If you are responsible for managing JIRA for your organizations then various teams and users using it will come up with various enhancements and new feature implementations in JIRA. Never directly modify the customizations in JIRA directly without going through a change control board, where you should analyse the impact of that change on the instance.

For example adding a new value in a select list might look like a simple customization but if other teams are also using the same custom field then they might be surprised with this new value and might get confused. If you had used contexts then this problem would not come but it is good that you you know the impact before implementing any change.

These things which I mentioned above are just few pointers that will help you and it comes with experience. I have worked with MNCs where I have implemented big JIRA instances. The JIRA Training that I provide covers all such good practices and help any new administrator before the actual implementation.

Organize your daily Schedule - To get more productive (June 2014)

For so many years I am following a rigid schedule for my self. Primarily it is all about waking up early, I have always been early riser and do important things in the morning. I have tried in the past to work/study late but that never really worked out for me. In fact I can hardly do any productive work after 5 PM.

Here is my schedule that I am following these days. I made little change in it, instead of 4 AM I am going to wake up at 3 AM. I really need an extra hour to finish never ending tasks.

  • 3:00 AM - 6:00 AM: Do the most important thing to survive
  • 6:00 AM - 7:00 AM: Go to gym
  • 7:00 AM - 8:00 AM: Breakfast and get ready
  • 8:00 AM - 9:00 AM: Go to office
  • 9:00 AM - 1:00 PM: Primary Work of the day
  • 1:00 PM - 2:00 PM: Lunch & rest
  • 2:00 PM - 4:00 PM: Secondary Work of the day
  • 4:00 PM - 5:30 PM : Miscellaneous tasks
  • 5:30 PM - 7:00 PM: Go back home & rest
  • 7:00 PM - 8:00 PM: Social media promotion & dinner
  • 8:00 PM - 8:30PM: Sleep

I follow this routine everyday, except Sundays when I don't work or work very less. For rest of the days I follow it religiously. Also it is not possible to stick to the schedule all the time, sometimes I have to meet people, travel, but otherwise I don't make any excuses.

Why such a tough schedule?
First of all this is not difficult at all. I realized over the years trying lot of methods to being productive and everytime I came to know that there is no secret method for being productive, except working hard. I remember the time when I was in school, kids have fixed schedule and they follow it continuously for so many years, then in college our way of study changes a little bit, we can bunk classes and also have liberty to "not follow" the schedule.

When we enter professional world, things get worse. We are totally free to choose our schedule. That is why most companies have fixed timings for employees. I believe it is not bad actually you need someone to force you to work hard, of course to some extent only.

Now working in a startup is totally different, you will always have a passion and strong desire to achieve something big, but as a human being we tend to fall for various distractions. Everyone around you will be enjoying life (or they seem to) where as you are working. Your friends will be posting pictures of rafting in Rishikesh and you are busy compiling sass files.

Life is not easy for guys like us, so what do we do.

I am just extra strict with myself, I allow no space to get distracted, I follow a schedule and try to balance work-life so I don't feel exhausted. In my schedule I have 1 hour of time for gym.

I walk to my office, which is like 1.25 Kms from my place, so walk atleast 3 Kms everyday minimum.

I allow myself to check facebook and twitter feeds too.

I do most of my productive, important work early in the morning.

I use tools to manage my tasks
For keeping track of enormous to-do activities I use org-mode, it is by far the most powerful tool and take my word it is the best way to manage not only your to-do but as they say "your whole life".

For all official work we use JIRA, and I can tell you 100 reasons why your company should be using it

For you guys if you really want to get more productive, there is on book that you just can not afford to miss.

The Power of Full Engagement by Jim Loehr

Power of Full Engagement

(This is my affiliate link)

This is one book that you should be reading, it has lot of interesting use case (yeah we IT guys use this term a lot) rather stories of people struggling to manage their work and feeling burned out. After reading the book you will realize how important it is to maintain a balance of work with other activities.

Following a schedule and staying disciplined is most important.

Graceful restart of Apache Server - No downtime, Happy Clients

Graceful Restart Apache

I have been using webfaction for so many years and it is definitely one of the best shared hosting service I have ever used but since last year I felt the need to host sites on a VPS, there are certain things that you can only do when you have full control of the server. The problem with shared hosting is that you can't just do everything (but in most cases they are good enough). Also they RAM they offer is not enough sometimes.

Also our tech savvy clients want to use VPS and good that they are willing to pay for it too :) so that's why we started using VPS last year. When I researched about VPS hosting I narrowed down linode, it is not only affordable but also there support is good, they also have lot of online guides.

Apart from client websites we also use couple of linode machines for hosting our JIRA instance and our internal projects.

Earlier I used Ubuntu which is the most common choice of people but my lack of experience on Ubuntu and my personal love for Fedora and Cent OS forced me to select Cent OS. Also good thing about linode is that they upgrade your machines from time to time. Just recently they upgraded the RAM to 2GB on their basic plan. It is awesome now, especially our JIRA instance is running smooth without downtime.

Managing VPS is not for everyone. I have years of experience working on linux but when it comes to managing a server that will host your client's site, you just can't do thing you usually do on your linux machine locally. For instance you have to manage the memory, make sure there are no unnecessary processes running and you should be able to look into log files.

Most importantly you just can't afford to have downtimes. Clients don't like it and asking them for a downtime is embarrassing for us too.

I am not really an expert on managing Apache but this what I use for reloading the apache on cent OS. Apache needs to be reloaded whenever you do any changes in the httpd.conf or your vhost.conf files or you add a new site.

This command will apply the configuration changes.

/etc/init.d/httpd reload

You can also do.

/etc/init.d/httpd graceful

Both reload and graceful will apply the changes in the configuration without terminating / interrupting any connections. Simple the Apache will first process the request, complete it and then restart, so server will eventually restart but users should not see downtime. Well so far it serves our purpose but there could be a better way.

In any case this is better than full restart, ever since I moved to VPS, we have more power but more tensions too :) though it is good that we learn new things. Hopefully one day when our company Sparxsys grows we will hire an experience server administrator, till then I will have to learn more and manage the servers myself. Why not? An additional role for me.

That is the challenge and fun working in a startup, you wear multiple hats and manage tons of different things.

The problem with this command is that it will immediately terminate all the request currently handled by Apache.

Run Xamp or Wamp on Windows 8.1 by Disabling port 80 PID: 4

Yes the first thing you would say that "Are you using windows?" and the answer is yes I do use windows 8.1 and I am not ashamed of it. I have some convincing reasons to use Windows which I am listing below.

  • I use Corel Draw
  • I really want google drive to sync files on my machine. There is no good free linux alternative for that
  • I use MS Office a lot, especially Excel
  • My new laptop has UEFI boot and I can't install fedora on it, I tried and it didn't work
  • I provide trainings on Drupal and JIRA. In my experience in such cases using a Windows based machine is always better, because in most companies people use Windows for their work and people can easily follow me during the training

BTW I still work on fedora which is installed on my netbook, which I carry with me all the time, taking notes, doing light weight work while I am meeting clients and traveling. At home I have latest Dec 2012 model iMac which I use for video editing mostly.

So my primary machine these days for major work is HP Laptop running on Windows 8.1. Just recently I have taken up development activities in my company and for that I need Wampserver or XAMP running on my computer but I realized that port 80 is blocked. The obvious thing I did was to change the Skype port which uses port 80 by default but that didn't solve the issue. So I searched on the internet and found one thread on Superuser.com and that worked for me.

1. Search for the processes that are using port 80 using the following command.

netstat -nao | find ":80"

2. Then disable HTTP.sys driver by modifying registry values. Follow the steps below.

  • Launch RegEdit.
  • Go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP
  • Change the value of "start" to 4, which means disabled.
  • Reboot your computer.

That's it.

It really solved my issue. Now I can use port 80, yeah! I could have changed the port in Apache configuration but that is not the geek's way to solve issues. The root cause need to be solved.

This solution worked for me and making changes in the windows registry is not recommened, as it may do some unwanted damage to the system. So be careful before applying this dirty fix.

Duplicating a git repository to another repository - Bitbucket

Duplicating a git repository to another repository - Bitbucket
I always used SVN for managing my projects, that was the case till last year. Though Drupal.org moved to GIT too few years back, I did not completely move to GIT. The main reason was the comfort level. Of course GIT offer plenty of good features but SVN was also not bad, and most importantly I was the only developer on those projects.

Since last year our team has grown and we now use Bitbucket only for managing our code on git repositories. At Sparxsys we offer Drupal development at really competitive prices and our main USP is to deliver fast. Some of the projects have common functionality so we re-use the code of other projects. This may not be true for big complex projects but if we get a requirement for a relatively simple site with standard dynamic features for managing the content, forums, blogs, news, slideshows then we prefer to re-use the code.

For the past 1 year I was mostly involved in managing clients, sales, branding and non-technical activities but since last few weeks I have decided to get involved more deeply in the projects. So my role is now more of developer where I actually build websites, write modules and do lot of designing using Omega4 theme in SASS.

Here I am sharing very simple instructions to duplicate/mirror a git repository.

First create a bare clone of the old GIT repository on your local

git clone --bare https://username@bitbucket.org/username/OLD-PROJECT.git

# Make a bare clone of the repository

You may want to do this in the folder other than your DocumentRoot that contains the folders of your other projects. Just to avoid confusion.

Now move into the directory


Push the code into the new repository

Of course you should create this empty repository before running this command.

git push --mirror https://username@bitbucket.org/username/NEW-PROJECT.git

# Mirror-push to the new repository

Finally you may want to delete the old directory

cd ..
rm -rf OLD-PROJECT.git

# Remove our temporary local repository

And it is done. Easy no?


Subscribe to Ravi Sagar RSS