March 2004 Archives

Extreme Programming Explained: Embrace Change

“Extreme” programming (XP) is a relatively new software development methodology which aims to allow small teams to produce higher quality software in less time, with less stress. The only thing that possibly exceeds the fervor of its adherents is the scorn heaped upon it by skeptics. Extreme Programming Explained: Embrace Change is “the XP manifesto”, which lays out the basic tenets of the XP idea, discusses the philosophy behind the principles, and delves into actually implementing XP in a programming team. I found the book to be a quick read, and I’m sure if you’re about to start working with an XP team (in either a developer or a customer role), it would be a good place to start familiarizing yourself with the theory and practice of Extreme Programming.

The first third of the book lays out the principles and the theory behind Extreme Programming, and reflects on how the realities of current software development don’t match up with classic development methodology that well anymore (if they ever did). By the end of this section, if you’ve been involved with any sort of structured software development, you’ll be nodding your head in agreement and/or cringing from the painful memories of past failed projects.

The middle third of the book starts out with a high-level overview of the mechanics of the XP process, and then quickly gets into the nitty-gritty of carrying out the distinct steps: The Planning Game, small releases, pair programming, collective ownership, refactoring, testing, and all the rest. Even if you don’t go for full-bore XP practices, there should be something in this section that will make you re-think some of your practices.

The final third of the book deals with practical considerations of implementing the XP methodology for software development, including when you shouldn’t try to use XP. This section, with recountings of commonly encountered problems, and descriptions of the different roles often filled by XP programmers, will be the most valuable for someone trying to actually turn theory into practice.

Overall, I found the book to be a quick, interesting read, and it was fun to consider how some things at my workplace would happen differently if some XP practices were to be adopted.

…is brought to you by sleep deprivation and the Ataris doing “Boys of Summer”: I’d pay some damn good money for a compilation of emo bands covering 10 from 6.

Yeah, it scares me too.

A couple of months ago, I pointed at Pornzilla, a project to turn Mozilla into the ultimate porn browser. One of the authors dropped me a line a while back and pointed out Pornzilla 2.0, which ports the project to the Firefox engine, among many other changes.

vanity

| No Comments | No TrackBacks

I just noticed that this site is the ninth Google hit for “John Anderson” — not bad when you consider the commonness of the name and the (at least) two famous people that share it.

/me looks up from his navel and gets back to work.

Nice Flash animation about vote theft in the state of ConfusionFlorida. (Warning: makes noise. Potentially cube environment unfriendly.)

Laurence Lessig is going to be signing books in DC next week. Not sure if I’m going to be able to make it; if anybody is going, drop a line and maybe we can meet up.

oreilly book page

“Bioinformatics” is the new sexy term for what used to be called simply “computational biology”. Simply put, it involves pretty much any application of computation techniques to biological problems. The reason for the new nomenclature and the greatly increased interest in the topic is, like much in modern biology, a more-or-less direct consequence of the many genome sequencing projects of the last decade.

The consensus in the field seems to be that it’s more productive (and certainly easier) to teach biologists how to program, rather than try to get programmers up to speed on the intracities of molecular biology. For similar reasons, Perl is a popular language to learn: it’s easy to get off the ground and be productive with it, without requiring a heavy computer science background. (This, of course, has downsides as well…)

Never one to miss out on a trend, I’m going to be teaching a course on Bioperl and advanced Perl programming, starting next fall, which means I’m doing a lot of reading in this topic area, trying to develop lectures and find good background reading material. One of the first books I grabbed was _Beginning Perl for Bioinformatics_, which has been sitting on my “to read” shelf since O’Reilly sent me a review copy in December of 2001. It’s a typical O’Reilly “animal” book (the cover bears three tadpoles), which does a decent job of introducing the basic features of the Perl language, and it should enable a dedicated student to get to the point where she can produce small useful programs. However, I’m not completely happy about the book’s organization, and I think the occasional “if you’re not a biologist, here’s some background” interjections could have been cut without hurting anything.

The initial chapters in the book cover “meta” information, such as theoretical limits to computation, installing (or finding) the Perl interpreter on your computer, picking a text editor, and locating on-line documentation. Some general programming theory stuff is covered as well — the code-run-debug cycle, top-down versus bottom-up design, the use of pseudocode. There’s also some biology background, but it’s very introductory level stuff — DNA has four bases, proteins are made of 20 amino acids, and so on.

In chapter four, the book begins to get into actual Perl, with some coverage of string manipulation. Examples deal with simulating the transcription of DNA into RNA. Chapters five and six continue to flesh out the language, covering loops, basic file I/O, and subroutines. Chapter seven introduces the rand() function, in the context of simulating mutations in DNA. Subsequent chapters introduce the hash data type (using a RNA->protein translation simulation), regular expressions (as a way to store the recognition patterns of restriction endonucleases), and parsing database flat files and BLAST program output.

I’m clearly out of the target audience of the book, as I already have a strong working knowledge of Perl. Perhaps that’s why I found the order that concepts were presented in to be a bit strange — for example, hashes, which are a fundamental data type, aren’t introduced until halfway through the book, and regular expressions (one of the key features of Perl) first appear even later. As I said above, I also found the biological background sections to be more distracting than anything, but I’ve also got a strong biology background, so perhaps I’m off base here too. That said, I think a person with a CS background would be better served with a copy of _Learning Perl_ and an introductory molecular biology text than with this particular book.

One of the things I did enjoy about the book were the frequent coding examples, all of which presented realistic computational biology sorts of problems and then demonstrated how to solve them. I’m sure that when I get around to writing lectures, I’ll be leafing through this book looking for problems I can use in class.

Overall, recommended for biologists without programming experience who would like to get started using Perl for simple programming. Not recommended for people with computer science backgrounds looking to get into bioinformatics.

The Selective Service is drawing up a special plan to draft IT professionals. My initial thought on hearing this was “boy howdy, good show that I’m over 25 and not eligible for the draft anymore”, but then I read the article and saw this bit:

The agency already has a special system to register and draft health care personnel ages 20 to 44 in more than 60 specialties if necessary in a crisis. According to Flahavan [spokesman for the Selective Service System], the agency will expand this system to be able to rapidly register and draft computer specialists and linguists, should the need ever arise.

Yet another thing to consider as November approaches: which presidential candidate would be mostly likely to reinstate the draft and/or activate this special provision?

Prompted by Dan’s post about planner.el, I’ve started playing around with some local wiki stuff, which is (hopefully) going to morph into a data store for the Bioperl class. Until then, I’ll keep sticking stuff up here…

  • Mike Gunderloy’s new book Coder To Developer looks like it could be of interest, but has a pretty heavy Windows focus, judging from the ToC
  • Intro to GNU screen. screen is one of those “how did I live without this?” programs that everybody that works in a Unix-like environment should know about. (Yes, you too, Mac heads.)
  • What do you get when you stick the various Perl IO modules in a blender with the “DWIM” dial turned up to 11? IO::All, one of those “damn, if this was installed by default and I remembered it, it would make my life so much easier” sorts of things.

Ever since eMusic decided to change their terms of service to terms of suck, I’ve been without a good source of free and legal MP3s. Consequently, I’m pretty excited to come across Fingertips, a site featuring links to various downloadable MP3 files. They even have a “new this week” page, which is going right into the Dose database.

(Meta: That “new this week” page is the closest thing to an actual as-the-word-was-originally-meant weblog that I’ve seen in many a day…)

Ed “Vacuum” Vielmetti asked about calendars and organization the other day. I meant to drop him a line, and never got around to it (things were extremely busy last week), so I’ll throw down some thoughts here and perhaps he’ll see them.

For calendaring, my personal appointments are in my PDA (a Sharp Zaurus, running OpenZaurus). Family event planning — doctor appointments for TheBaby, TheWife’s business travels, etc — are in an eGroupWare calendar on a server on the local network. We used to keep that info on a monthly wall calendar in our bathroom, but setting up the eGroupWare calendar was one of my gifts to TheWife this Christmas. We’re still working out the best ways to use it.

On the organization side, I’m very much a list person, and like all list people, I get a deep primal satisfaction in crossing something off a list — which is perhaps why my lists are all paper-based, and why my attempts at moving to electronic lists always seem to fail. I also find writing things out long-hand causes me to think more about what I’m trying to accomplish, because I can think faster than I can write. Unfortunately, paper-based lists have pretty high maintenance overhead: you have to rewrite them every so often, or they get really scraggly. I’d like to ditch paper, but my past experiences haven’t been all that positive.

Around the beginning of the year, I was thinking about ways to be more organized, and I realized that I had several tasks that I needed to do each day. Some were mandatory (take pills), some were long-term tasks that I needed to accomplish small bits of each day (read so many messages on a mailing list I was far behind on), and some were just things that I want to do daily, and sometimes forget (writing an entry in the diary). I ended up making paper-based forms, with a list of things, and a check box by each, and making a bunch of copies, and each day, I mark off the things I do. So far, it seems to be working relatively well — well enough that I’m thinking about how to write some software to allow me to construct more elaborate task lists — for example, I only need to take the recycling to the curb on Mondays, so that task should only show up on Mondays. Doing that on a paper-form-based level would be insane, but it’s quite reasonable to do it in a piece of software. Having software would also mean that I could generate statistics about how frequently I did a particular task, which appeals to the same part of me that crossing things off a list does.

Anyway, that’s how I try to keep track of my time and tasks. How about you?

Yeah, yeah, we’re one day late — but that’s almost a tradition in this family. Anyway, TheBaby wishes the good doctor a happy hundreth:

i do not like green eggs and ham

Is there some hack or tweak I can apply to an MT install to just disable the commenting functionality completely? The spam thing is getting dreary…