
There are over 4000 open issues about JIRA that people have voted for. The most popular vote has 592 votes but most issues have zero votes. I found a suprisingly good line to fit the data with a correlation coefficient 0.9882, if Excel is to be believed. I'm not sure that I actually believe in predicting what people vote for, but I guess this is one way of measuring your progress is how the coefficients of the predictor change over time. The flatter the line, the better job you are doing of evenly spreading out customers' irritation with your product.
As of July 2010, the coefficient of irriration for JIRA is -0.65.
Friday, July 2, 2010
How irritated customers obey a power law
Posted by
Matt Doar
at
3:34 PM
1 comments
Labels: atlassian, jira, software development
Thursday, July 1, 2010
ASCII art in log files and showing my age

What is that? Well, let me tell you. It's supposed to be some ASCII art that my new-fangled JIRA bug tracker spits out into its log file at start up. It's supposed to serve some useful purpose. It fails (fails, I tell you) because when you view ASCII art that is longer than 80 characters in a terminal (this is a log file, remember) that text art just wraps around and resembles line noise. Yes, line noise like they used to have in the last century.
What's that? You think ASCII art is cool? Well so do I, in it's place. Which isn't my darn log files. What am I going to do about it? I'll tell you, I'll show 'em! Now get off my lawn.
Posted by
Matt Doar
at
10:56 AM
2
comments
Friday, June 25, 2010
My wife as a sea star

Vacation Bible School ended today with the inimitable Banana Slug String Band. Katherine was their guest Sea Star. It opened up a whole new echinodermic side of her character to me. She certainly was moving around.
Posted by
Matt Doar
at
1:35 PM
1 comments
Tuesday, June 22, 2010
Drawing a line in the sand
Joel Spolsky writing on his latest project concludes with
"Area 51 is not for everyone. If you don’t know what it’s for, or why it’s going to work, or you can’t figure it out, it’s not, actually for you."
Snark programmer, snark!
Posted by
Matt Doar
at
12:00 PM
1 comments
Labels: funny, software development
Thursday, June 17, 2010
GNU license complexity
The compatibility table at the GNU License FAQ makes my head swim. If this were for the different versions of an application, it would be taken out and shot.
Posted by
Matt Doar
at
11:47 AM
1 comments
Friday, June 4, 2010
I'll not spoil the punchline
Too true.
From Geek and Poke
Posted by
Matt Doar
at
8:49 AM
1 comments
Labels: builds, funny, software development
Thursday, April 29, 2010
One Bug, Multiple Branches
I enjoyed presenting and discussing some new ideas about how to use JIRA to track bugs in different branches along with their associated builds. This was all at the April San Francisco Atlassian User Group last night, kindly hosted by Atlassian.
My idea is to create a new issue type named "Build" and then create a new build issue for every build. Ordinary bugs in JIRA can then have regular JIRA links named "Present in Build" and "Absent from Build" connecting them to the specific builds in which they are found or fixed. The interesting part is that if you link the Build issues to other Build issues, you get a tree of related builds such as the diagram above that you can then use to deduce which bugs are present in any given release, and also which releases a given bug is likely to be in. Useful information that is rarely available in current issue trackers.
My presentation is available via Google Docs. Feedback welcome, as are beta testers for the ideas in JIRA.
Verification code for Empire Avenue: EAVB_KMCAYMVSLW
Posted by
Matt Doar
at
12:13 PM
0
comments
Labels: atlassian, jira, software development, user group
Monday, April 26, 2010
Software Engineering and Academia
Bertrand Meyer has an excellent article about why academic computer science has a smaller impact than other academic disciplines do in their respective fields. As he puts it, "academic research has had its part, honorable but limited."
"Researchers in experimental physics or mechanical engineering employ technicians: often highly qualified personnel who help researchers set up the experiments and process results. In software engineering the equivalent would be programmers, software engineers, testers, technical writers; in the environments that I have seen, getting financing for such positions from a research agency is impossible."
"The only software we can produce, if we limit ourselves to official guidelines, is demo software. ... many of us work around the restrictions ... by spending considerable time away from research on programming and maintenance tasks that would be far more effectively handled by specialized personnel. The question indeed is efficiency."
For me, that's what a software toolsmith does.
Posted by
Matt Doar
at
9:28 AM
0
comments
Labels: software development
Thursday, April 8, 2010
How to change your OSX terminal color for ssh sessions
Sometimes I have lots of terminal windows open for ssh sessions to multiple machines. It can all be a bit confusing even if I use the remote machine name in the shell prompt. So I got terminal colorization working for me with help from here and here.
There is a default color for all screens that are using ssh and you can also customize the colors for different remote machines. When you end the ssh session, the terminal returns to black on white.
This is for OS X because it uses the osascript command to change the colors but the rest of the shell script should be just fine for Unix.
$ cat /usr/local/bin/ssh
#!/bin/sh
# Color the OSX Terminal app according the hostname used in ssh
# Assumes you log in with a simple "ssh myuserid@remotehost"
# Place in a directory such as /usr/local/bin that is before the real ssh location
# The value of whatever was after the @ in the command
HOSTNAME=`echo $@ | sed s/.*@//`
set_bg () {
osascript -e "tell application \"Terminal\" to set background color of window 1 to $1"
}
set_text () {
osascript -e "tell application \"Terminal\" to set normal text color of window 1 to $1"
}
# Return to black text on white background
on_exit () {
# echo exited
set_bg "{65535,65535,65535}"
set_text "{0, 0, 0}"
}
trap on_exit EXIT
# My color names
# green 10000,40000,40000
# blue 10000,20000,60000
# orange 60000,40000,00000
# red 60000,00000,00000
# yellow 60000,60000,40000
case $HOSTNAME in
fisheye) set_bg "{60000,60000,40000}" ; set_text "{0,0,0}" ;;
jira|jira2) set_bg "{10000,40000,40000}" ; set_text "{0,0,0}" ;;
# unused colors follow
# blue) set_bg "{10000,20000,60000}" ; set_text "{65535,65535,65535}" ;;
# orange) set_bg "{60000,40000,00000}" ; set_text "{0,0,0}" ;;
# red) set_bg "{60000,00000,00000}" ; set_text "{0,0,0}" ;;
# yellow) set_bg "{60000,60000,40000}" ; set_text "{0,0,0}" ;;
# gray) set_bg "{60000,57000,55000}" ; set_text "{0,0,0}" ;;
*) set_bg "{60000,57000,55000}" ; set_text "{0,0,0}" ;;
esac
/usr/bin/ssh "$@"
Posted by
Matt Doar
at
2:28 PM
0
comments
Labels: command line, OS X, software development, ssh
Wednesday, March 31, 2010
There's a way to do that in emacs
Given a number of lines of text such as
foopy charlie
foo bravo
food alpha
and you want to sort them by their second field so they end up like
food alpha
foo bravo
foopy charlie
the right emacs incantation is:
C-u 2 M-x sort-fields
That's all.
Posted by
Matt Doar
at
2:33 PM
1 comments
Labels: emacs
Monday, March 29, 2010
Michelle Shocked concert
Katherine and I went on our yearly pilgrimage to Moe's Alley to see Michelle Shocked last Saturday. Steve Wozniak was there too, quietly enjoying this tiny "Reggae Pub". As ever, Michelle was truly amazing. Her energy, her humility and that soaring voice. Mostly her older songs, but with lots of local guests and backing from a band lead by James Nash who just smoked that guitar!
As Michelle says of herself,
I've been through some dark times but I've experienced joy too. Now that joy can't be suppressed.
Posted by
Matt Doar
at
9:19 AM
0
comments
Thursday, March 18, 2010
97 Things Every Programmer Should Know

Another useful book in the "97 Things" series from O'Reilly has been published, this time for programmers. My contribution is "How To Use A Bug Tracker". There are more details at O'Reilly and Amazon.
This book was created by each person adding their contributions to a Wiki, where it was edited and discussed. The whole process worked really well due to the editor, Kevlin Henney.
p.s. My photo on the cover is four rows down, third from the left, just in case you're looking.
Posted by
Matt Doar
at
8:47 AM
0
comments
Labels: bugs, o'reilly, practical development environments, software development
Wednesday, March 17, 2010
Ambiguity everywhere
I use emacs for writing code, which is considered a bit old-school by many Java programmers. One of them recently commented that "watching someone use emacs is like watching ballet". Was that a compliment or not? "Graceful" and "efficient" come to mind, but maybe he just doesn't like watching ballet.
Posted by
Matt Doar
at
10:41 AM
2
comments
Wednesday, March 10, 2010
One of those mornings
6am. Our eldest child woke me from my slumbers with "Daaaad, the toilet's overflowed!". Turns out it had thoroughly clogged itself late last night and then a leaky tank valve had allowed water to gradually drip into the bowl overnight. Ugg. However, the rather questionable design of many American low-flush toilets is not the point of this post. In the process of clearing the clog I realized that this was where an education comes in useful. I asked her to flush another toilet in the house which created a partial vacuum in the sewer line and helped my efforts with the plunger. It worked wonderfully! A discussion of the physics involved ensued, but the best bit was seeing my daughter continue to believe that her Dad could fix anything.
Posted by
Matt Doar
at
10:19 AM
1 comments
Labels: personal
Wednesday, December 23, 2009
Which letters are never doubled in English words?
There is now a handy website for searching an English dictionary using regular expressions. It appears that the only letters that are never doubled are 'j', 'q', and 'x'. Mind you, you have to go to Uzbekistan to get their unit of currency which is named a "tyyn".
Perhaps I should make up a word such as "sajjaqquixx" to fix the missing ones. I'm not sure what it means yet, and neither is Google. Suggestions welcome.
Happy Christmas,
~Matt
Posted by
Matt Doar
at
12:55 PM
3
comments
Labels: personal
Tuesday, December 8, 2009
Testing, testing

This log post should also appear on my Facebook page, along with a picture of our house as it was in 1948.
Posted by
Matt Doar
at
6:16 PM
0
comments
Thursday, November 19, 2009
Christmas book ideas
I've recently read two different graphic novels that I've been very impressed by. I recommend both of them for smart teens and older.
Logicomix, Apostolos Doxiadis and Christos Papadimitriou
The story of Bertrand Russell and his mathematical (and other) passions. An entertaining story with enough of the history of logic to make me think. Beautiful art of Athens too.
Grandville, Bryan Talbot
A well-written steampunk detective story using animals. But it's more than that, lots of references to all sorts of interesting things and people. The art is captivating and left me wanting more of it.
Posted by
Matt Doar
at
9:17 AM
0
comments
Labels: comics
Tuesday, October 27, 2009
BitBake and reusing existing ipkg files
I've spent a few days helping a customer with BitBake, a python-based build tool for embedded systems. One of the distributions that uses BitBake is OpenEmbedded, a "build-every-single-thing-from-source" Linux distro.
The customer had a number of existing ipkg packages and wanted to add them to the BitBake'd image. That turns out to be an undocumented use case, so here's the information to save other people the time we spent.
For a target architecture of armv5te, the recipe file for a package with an ipkg file named mypackage-1.2.0.3-1_armv5te.ipk looks like the code below.
DESCRIPTION = "My Package"
DEPENDS = ""
LICENSE = "GPL"
PN = "mypackage"
PV = "1.2.0.3"
PR = "1"
PACKAGES = "${PN}"
# Just fetch and place the ipkg in the correct place to build the rootfs.
# As used in openembedded/classes/image.bbclass via rootfs_ipk.bbclass
PACKAGE_INSTALL_append = ${DEPLOY_DIR_IPK}/armv5te/${P}_armv5te.ipk
SRC_URI = "\
http://ipkg-repository.example.com/subdir/${P}_armv5te.ipk \
"
do_unpack() {
echo "Null unpack method"
}
do_patch() {
echo "Null patch method"
}
do_configure() {
echo "Null configure method"
}
do_compile() {
echo "Null compile method"
}
do_stage() {
echo "Null stage method"
}
do_install() {
oenote Creating directory ${WORKDIR}/install/${PN}
# A directory is needed for each member of PACKAGES
mkdir -p ${WORKDIR}/install/${PN}
}
do_package() {
echo "Null package method"
}
do_package_stage() {
echo "Null package_stage method"
}
do_distribute_sources() {
echo "Null distribute_sources method"
}
do_package_write() {
oenote Copying the downloaded ipkg package from ${DL_DIR} to\
${DEPLOY_DIR_IPK}/armv5te
install ${DL_DIR}/${P}_armv5te.ipk ${DEPLOY_DIR_IPK}/armv5te
}
Version: BitBake 1.8.3
It doesn't look like much by itself, but the work behind it was, er, significant. BitBake and OpenEmbedded have a good number of layers, moderate documentation and great power.
Other tips:
Don't execute BitBake in a subdirectory or it will rebuild the world in a new tmp directory there.
OpenEmbedded apparently doesn't check the return code from the ipkg install commands, so if your files aren't appearing in your image (rootfs) directory, then check their dependencies or run the explicit ipkg command that can be found in the relevant run* command file.
If ipkg asks for user input about overwriting a configuration file, then the OpenEmbedded do_rootfs() function will hang and you will need to kill both the ipkg and bitbake commands manually.
See http://bec-systems.com/web/content/view/79/9/ for more information about adding new packages to images.
Posted by
Matt Doar
at
4:44 PM
0
comments
Labels: bitbake, ipkg, openembedded, software development
Thursday, October 15, 2009
There's no such thing as a unique name
Reading an old post by James Clark about Thai personal names, I wondered how many different names I am addressed by. Surprisingly, I came up with eight.
John Matthew Simon Doar (birth certificate)
Matthew Doar (school name, birth family usage)
Matt Doar (work name)
Matthew Baginski Doar (family name after marriage)
Matthew B. Doar (shortened family name used for publications)
Matthew Baginski (used by systems that can't handle two words in a family name)
J. Matthew Doar (occasional form letters)
and strangest of all is the U.S. Immigration Service who refer to me as "John M. Doar" and once forced me to make up a signature for it on the spot! All I really want these days is to be unique enough for Google.
Posted by
Matt Doar
at
3:11 PM
5
comments
Labels: personal
Friday, October 9, 2009
Handling large numbers of JIRA projects

Once you have a large number of projects in JIRA creating an issue can become a bit tedious, scrolling through the long list of projects to choose just the right one. JIRA (Enterprise edition) already provides Project Categories that you can group projects into, so without further ado, here's a JSP hack to reduce the size of that list of projects by letting you select a project category first.
Installation
The modified file for JIRA 3.13 is createissue-start.jsp and replaces the file of the same name in your JIRA instance. There should be no need to restart JIRA. The usual disclaimers apply, drink responsibly, don't drive and derive etc.
Posted by
Matt Doar
at
12:39 PM
3
comments
