Graphics Interchange Format (GIF) - A great tool to kill bugs fast

Problems are the reason we invent and innovate incessantly. Problems are as stubborn as cockroaches. But we humans are at the top of the food chain not without a reason. We reason.

Not all problems can be solved by the lone ranger. In fact, there are very few problems that can be solved without borrowing ideas from history. This is true in all fields. Software Engineering is no exception. Collaboration is the key.

HOW TO FILE A BUG PROPERLY

Providing a detailed sequence of steps, irrespective of the medium used, would help the collaborator understand unambiguously the issue at hand. This allows the collaborator to reproduce the issue consistently. A bug report that does not have the following is a bad/incomplete/a-waste-of-time bug report:

  1. Environment description and logs (this is unavoidable) – the necessary machine hardware details, Operating System details, framework details (.NET, Java, Python), application version, build number etcetera.
  2. Detailed steps-to-reproduce
  3. Exported mail chains (mail clients allow exporting mails which can be attached) – all communications happen via mails. Mails are a treasure trove of information. Why not use them properly?
  4. Screenshots, static images (JPEG, PNG etc.)
    – read further to see a better option

There are many other artifacts that can be attached and the reader should decide whether attaching something would help in getting the issue fixed. The above four items are the most important ones.

Recently, I was asked to fix a bug. The problem was that I was not able reproduce it. The guy reporting the bug was a Hardware Engineer calibrating the hardware using software written by me. I captured some screenshots showing the sequence of steps I executed to reproduce the issue and pasted them in a Word document. I mailed him the document. This was far from ideal solution. I did not like it a bit. Static images pasted on multiple pages of a Word document were pathetic to say the least. This intellectual pain forced me to take a look at other options:

  1. Screencast
  2. Merging individual screenshots to form some sort of motion picture

Screencast is a very handy option. The tools available are really great. But, they can be heavy – on the PC and on the wallet. Their output too can be quite heavy and attaching them to bug reports may not be a good idea. Thus, they are too complex for my tasks Merging individual screenshots to form a silent motion picture seemed a good idea. That is when Graphics Interchange Format (GIF) came to my mind:

Graphics Interchange Format (GIF) images can help in killing software bugs fast. A pictures is worth more than a thousand words. A GIF is worth more than a thousand pictures then.

All I needed was a tool to capture a GIF of my workstation as I went about the business of reproducing the issue.

ENTER LICEcap

Cockos Incorporated produces this excellent tool that can capture GIFs. LICEcap is a very small open source tool. Yes free and open source and small beyond belief (< 1 MB). The guys behind this tool are quite famous:

The employees of Cockos have created and launched many fine products and technologies prior to joining Cockos, including Gnutella, K-Meleon, Kaillera, NSIS, SHOUTcast, and Winamp.

So, trust is not an issue at all. I went ahead and installed the tool. It works in a very simple and intuitive way. No one needs a lesson to know how it works. The moment one opens the application, everything is crystal clear. It surely lacks advanced features but it does the job of capturing the screen very very well.

THEN I FOUND ScreenToGif

This too is simple and intuitive but it has some advanced features that LICEcap lacks. The most significant feature being the ability to edit the recorded GIF. A list of features as borrowed from the tool’s website is:

  • Record your screen and save directly to a gif looped animation.
  • Pause and continue to record.
  • Move the window around to record what you want.
  • You can add Text, Subtitles and Title Frames.
  • Edit the frames, add filters, revert, make yoyo style, change frame delay, add border.
  • Export frames.
  • Crop and Resize.
  • You can work even while the program is recording.
  • Remove frames that you don’t want.
  • Select a folder to save the file automatically or select one before enconding.
  • Add the system cursor to your recording.
  • Very small sized, portable and multilanguage executable.
  • Start/Pause and stop your recording using your F keys.
  • Multi language: Portuguese, Spanish, Romanian, Russian, Swedish, Greek, French, Simplified Chinese, Italian, Vietnamese and Tamil.
  • GreenScreen unchanged pixels to save kilobytes.
  • You can apply actions/filters to selected frames.
  • Fullscreen Recording.
  • Snapshot Mode.
  • Drag and Drop to add frames in the editor.

These tools can help us in our fight against bugs. Further research: