Home Page -> Commentary -> Linux Experiences -> Application Software

Application Software
In Search of the Elusive Octagon

My definition of Application Software is not so much spreadsheet, word processing, and database programs as much as software that helps me in my job as a programmer and website developer.

Possibly the best software I've picked up in the past months is MetroWerks' CodeWarrior development system. I have used it in its Macintosh incarnation, and it is a great development environment. Although the Linux version is only set up to build projects written in C or C++ rather than the Java that I'm writing, it's the editor that has made it worthwhile to have. The CodeWarrior editor is so convenient that I've almost completely stopped using gvim. Code Warrior is not Open Source, and it does cost US$99 as of this writing, but I think it's well worth the price.

In any event, I was writing some Java code and needed to create images for “Stop” and “Go” buttons. The “Go” button was green and round, and trivial to create using the GIMP, version 1.0.4. The stop sign, however, was another matter altogether. The GIMP doesn't create regular polygons (or at least I don't know how), so I went on a long search to find a program that would let me draw what I wanted.

I would have used StarOffice -- except that it had stopped working when I upgraded to RedHat 6.0.

My next thought was to use the kpaint program (version 0.4.3) listed under Graphics in the KDE main menu. Just as a test, I drew a rectangle, used the “select” tool to surround it, and chose Cut from the Edit menu. The image remained totally unchanged. Clearly, kpaint was not the answer. I have some serious doubts about the extent to which this program has been tested.

“All right then,” I thought, “let's see what's in the Graphica section of the non-KDE Apps menu.” This led me to XPaint. Its cut/copy/paste functions work great, but I could not get the polygon function to work. The problem is that you need to click the middle mouse button to signify the end of the polygon, and my middle mouse button wasn't responding.

I then tried kicon, figuring that I could create an icon and either grab a screen shot of it or export it as a .GIF file. No luck here either; when I went to save my icon, the save dialog presented me with a default name. I dragged the mouse over it to select the entire name -- and the program went into an infinite loop, producing hundreds of windows all bearing the message:

   Assert: "XGetSelectionOwner(dpy, XA_PRIMARY) == win"
   in kernel/qclipboard_x11.cpp (457)

I was not about to give up this easily. I decided to use the killustrator program, which is a vector-based drawing program on the order of Adobe Illustrator. I downloaded the pre-packaged file, and tried to install it, only to be told:

   error: failed dependencies:
      libjpeg.so.6 is needed by killustrator-0.6.3-1
      libqimgio.so.0 is needed by killustrator-0.6.3-1

An email to the program's author brought the reply that I should download the source and compile it myself. I did so successfully. I must say that the program is cleanly implemented, and it lets me draw octagons. Unfortunately, they are rotated 22.5 degrees to the left of where I'd like them to be. When I choose Arrange -> Transform -> Rotation from the menu, a dialog box for rotation comes up -- with the Position tab showing! Once I choose the rotation tab and enter 22.5, at long last, I get an octagon in the orientation that I need.

This task, which would have been easy to accomplish in the original MacPaint, and only moderately difficult with packages available on the system-from-Redmond (notably the very wonderful PaintShop Pro), was a nightmare of trial and error in Linux.

Before you send me any well-meaning and good-natured advice to the tune of:

“Quit complaining. You have the source code, so why don't you fix it yourself, imbecile?
consider this -- I wasn't on deadline, and I've been around Linux for a while, so I had the time and knowledge to look for the various programs and install the one that could do the task. I don't have enough knowledge of the GNOME toolkit (and barely enough experience with C++) to analyze and debug someone else's code.

Here's an experiment for those of you who are do-it-yourself types: the next time you run into a snag with some application program, keep track of how long it takes you to solve it, including (possibly) downloading new versions, looking at source, recompiling, and reinstalling. Would you be willing to ask your aged Aunt May or your cousin Delwin, the construction contractor, to spend the same amount of time to fix a snag in their spreadsheet or word processor -- not including the time it would take to bring their level of knowledge of the system up to yours? After all, if Linux is going to be on every desktop, it'll be on Aunt May's and Delwin's desktops too.

<< Graphics (continued) Back to main comment Summary >>