May Contain Blueberries

the sometimes journal of Jeremy Beker


I mentioned in my last post that I spend time thinking how I would run a software group if I could start from scratch. I won’t touch on how one retrofits this into an existing organization with institutional inertia (see previous entry on monkies and firehoses). I wanted today to talk about the tools I think are critical to a team.

[Note: I wrote this orginally at 30,000ft on my way to Jaxonville, FL so there are no links to the products below. I will try to come back and add them later. Updated 12/12/2008 with links]

Source Control

This is non-negotiable. Whether you use a commercial tool like Perforce or open source tools like Subversion, you must have this. It needs to be the right hand of all developers, ingrained into their daily habits. All code must be checked in at every opportunity. If working in a shared codebase, one must be careful to not “break the build” but developers should plan their work so that it can be done at least once a day if not more often. This takes discipline but if the habbits are developed from the start, it will pay off in the end.

Online bug/issue tracking

Tools like Bugzilla allow a team to keep track of problems and tasks pending while giving project managers and senior management a view into the project that can be tracked over time. But in order to be used, the system needs to be simple and straightward to use. The instant it becomes burdensome or even annoying to use, it will become neglected and not used. This applies to data entry, searching, and reporting.

Wiki for documentation

This probably the most controversial. It is my believe that using tools like Microsoft Word are horrible tools for collaborative document writing; exactly the thing you need for the creation of the most important documents in a software project; requirements documents, functional specifications, technical design documents, test plans, and more. Word docs get emailed around, changed by different people at different times with little tracking in place. More time is spent in document management than in actual content creation.

How does a Wiki solve this? You get a central document that anyone can access and edit without emailing them around and having to reconcile changes. It provides change control and tracking so you can see who makes what changes. It also has the built in capability to link between documents to show the relationship between a design section, it’s corresponding functional description, and the requirement it is supposed to fulfil. Many wikis also have the facility to host discussion forums tied to a document but seperate from the content itself. There are obvious challenges of freezing the document at key points in time I believe this is small in comparison to the benefits.

I have never been able to implement this particular idea but I am convinced it will make everyone more efficient.

(And, yes, a wiki can be used for so much more and it should, but that rarely takes as much convincing.)

While I don’t have a huge readership here, I know most of them are software people, so what do you think? Anyone have a great idea and the money to let me give it a go?


2 Posts in 2 days, wow. But it is largely just a big cut and paste, so I guess I don’t get too much credit.

There’s an old joke, so old that I don’t even know for certain where it originated, that’s often used to explain why big corporations do things the way they do. It involves some monkeys, a cage, a banana and a fire hose. You build a nice big room-sized cage, and in one end of it you put five monkeys. In the other end you put the banana. Then you stand by with the fire hose. Sooner or later one of the monkeys is going to go after the banana, and when it does you turn on the fire hose and spray the other monkeys with it. Replace the banana if needed, then repeat the process. Monkeys are pretty smart, so they’ll figure this out pretty quickly: “If anybody goes for the banana, the rest of us get the hose.” Soon they’ll attack any member of their group who tries to go to the banana. Once this happens, you take one monkey out of the cage and bring in a new one. The new monkey will come in, try to make friends, then probably go for the banana. And the other monkeys, knowing what this means, will attack him to stop you from using the hose on them. Eventually the new monkey will get the message, and will even start joining in on the attack if somebody else goes for the banana. Once this happens, take another of the original monkeys out of the cage and bring in another new monkey. After repeating this a few times, there will come a moment when none of the monkeys in the cage have ever been sprayed by the fire hose; in fact, they’ll never even have seen the hose. But they’ll attack any monkey who goes to get the banana. If the monkeys could speak English, and if you could ask them why they attack anyone who goes for the banana, their answer would almost certainly be: “Well, I don’t really know, but that’s how we’ve always done things around here.” This is a startlingly good analogy for the way lots of corporations do things; once a particular process is entrenched (and especially after a couple rounds of employee turnover), there’s nobody left who remembers why the company does things this way. There’s nobody who stops to think about whether this is still a good way to do things, or whether it was even a good idea way back at the beginning. The process continues through nothing more than inertia, and anyone who suggests a change is likely to end up viciously attacked by monkeys. But this is also a really good analogy for the way a lot of software works: a function or a class or a library was written, once upon a time, and maybe at the time it was a good idea. Maybe now it’s not such a good idea, and actually causes more problems than it solves, but hey, that’s the way we’ve always done things around here, and who are you to suggest a change? Should I go get the fire hose?

This is taken from an article Let’s talk about Python 3.0 by James Bennett. I hope he won’t mind I have reposted it.

Why did I post this as a whole? Because it is so true. It is a human behavior I have known and not understood throughout my life in software. For a long time, I was just frustrated without knowing why. The realization that I was different, that I did not have as strong a shackle on the past was a blessing when it came. Not that I was any less frustrated when I saw the practice in life, but I knew why. It allowed me to focus my efforts and help people understand that just because we “always did it that way” did not make it a good idea.

Being the person to play that role is hard. People do not like hearing it. And sadly, getting attacked by the monkeys is not fun at all. It wears on you when you do not see a way to convince people. You bring them numbers, show them the tole their policies are taking in terms of dollars, in terms of people, in terms of families, and they can’t understand that there could be a better way if they only let go of the past.

But it is in me to be that person, and I love doing it. I have plans and I’m stubborn and I can’t wait for the opportunities to do the right thing and see the results.


Most of you know that I read a lot. I have a hard time explaining sometimes why I read so much, nor why I get a certain pleasure in just amassing books. I have approximately 780 books in my house; I say approximately not because I guessed, but because I may have missed a few while counting. I won’t say I have read them all, but I have probably read at least 90% of them. Suffice to say, I like reading.

When I have headache, I read and the headache goes away. When I’m pissed at the world, I find a book and a dark cave and chill in a pleasant elsewhere. Forget about the knowledge and ideas passed along via the written word, reading a book brings a calm to my crazy NADD-driven world.

That is from a blog I read, Rands in Repose from a guy who is a software manager. But that is irrelevant to this discussion. He sums up how I feel about books quite well.

As vices or habits or neurosis go, collecting books is one I can be proud of. I hope I never stop. What am I reading now? The Player of Games by Ian M. Banks. Before that? The Last Theorem by Aurthur C. Clarke and Frederick Pohl. What’s next? I can’t wait to find out.


A month or so back I proposed that I would post entries on the topics of this election that concern me, comparing the main party candidates. As should be obvious, I have not done so. The reasons for this are immaterial but should not imply a lack of interest in these topics. A simple example as to why is that I am on a flight to Iowa right now that I booked less than 4 hours ago.

The election is now less than two weeks away. The competition has brought about many suprises; the first African American is running for president, Virginia seems likely to vote Democratic, it seems likely both of our Senate seats will be held by Democrats. The presidential contest seems to represent a generational shift in politics. On my way to the airport I heard a statistic saying that the 18-24 demographic favors Senator Obama by a 56% to 32% margin. Quite an indicator as to the direction of the country. Something that makes me happy.

As my readers should know, this matches my feelings. While I respect Senator McCain (I supported him in the last Republican primary against Bush), I find that to become “electable” in the eyes of the Republican base, he has compromised the things he stood for. He has fallen to playing the game of “politics of fear” as it has been called. The tone of his campaign has turned so ugly it is just disrespectful; so much so that at times he even appears embarrassed by it.

I believe that it is time for the next generation of politicians to take the lead. That is not to say that they are perfect, they are human like the rest of us. I have hope that Senator Obama will be a good president. He needs to be as we have many challenges ahead of us.



The trip to Europe was amazing. Between the relaxation, the great food (fresh ingredients are so awesome), the beautiful sites, and the wonderful company, I could not have asked for more. Tiffany did a great job of chronicling our trip and we both have lots of pictures posted. Go visit the links below while I contemplate how I can get back there :)


[Posting this nearly a week after writing it but first wifi I have found for free. In a McDonalds on Zurich.]

On my way to Zurich right now. Just finishing up dinner. Had a nice Caesar salad followed by a mustard thyme chicken. Accompaneed by a very nice glass of Malbec (ok, 3 glasses, I think). Now I have a slice of caramel tiramasu with a glass of port. Mmm.

Soon I will try the lie flat seats.

If you have to fly, this is the way. See you in Zurich!

[update: approximstely 4 hours later or so.]

Lie flat seats good. I actually slept. I don’t know how long exactly but we are about 2 hours from landing and I’m guessing takeoff plus dinner took 2 hours so that means I slept for almost 4 hours. Not perfect for sleep but should enable me to make it through Tuesday to get onto to Europe time. I must trick my body into thinking it is now almost 6am.


With this year’s presidential election coming on fast, it is getting to the point where I am starting to think about more than just the general overtones of the presidential positions. While I am pretty sure where my decision will land, I don’t like the idea of an uninformed decision, or worse, a reactionary one. While talking with Tiffany on a longish drive yesterday, I realized that what I need to do is make a list of the issues that are important to me and then see where the candidates stood on each of them. This will force me to identify what I think is important rather than let the media, pundits, politicians, friends, whomever, dictate what is important.

That said, it struck me that actually writing this all down would be beneficial; and what better place than to blog about it. So that is my plan. To try to lay out the items that are important to me and see how each candidate’s positions make me feel about them. I will be almost exclusively relying on the positions that are outlined on the Obama and McCain websites. I make no promises on how often I will write about this, nor what topics I’ll cover as I have not decided myself. I think my first will be on technology issues, but that may change.

Stay tuned.


From a resume I receieved:

Facilitated development of cross-LOB solutions that combined knowledge of particular business processes and issues, general technological options, and process facilitation techniques.

Can anyone tell me what this says? In English?


photo

My last entry covered my flight from Richmond to Chicago. Now I an on my way back from Chicago to Richmond. I always check in to my flights online the day before and this trip was no exception. But this time something new was offered; United gave me the option to upgrade to first class for quite a reasonable amount (with my trip per diem I still am coming out ahead). So, I said “what the heck, why not?” and did it.

Damn. I could get really used to this. The steward seems happy to keep my glass of wine full (yes, an actual glass). I just had to stop him so i can actually drive home The seat is actually comfy. Hell, I even have a phone. Why do I need a phone?

And coincidentally, one of the stewardesses is also a Tolkien nut lie me. She brought my exact complaint about the movies (to the level of what they did to twist Faramir).

I could detail my trip, but it was not much fun and I don’t want to spoil the mood.