Book Review: Practices of an Agile Developer

Posted by Ryan Baxter Tue, 17 Jul 2007 20:45:00 GMT

At less than 200 pages, I was concerned that this book would either not have enough detail or leave me hanging at the very end. Its brevity is a blessing. Practices of an Agile Developer: Working in the Real World (Pragmatic Programmers) is like one of those 1000 page monster tomes, but distilled into manageable slices of wisdom. I absorbed the subject matter without having to reread paragraphs just to plod through a chapter. This book contains no boring filler or meaningless fluff. Each chapter consists of a series of short lessons that can easily be read in a single bathroom session. Nearing the final chapters, my reading pace quickened. I’m not sure whether this was due to shorter chapters or my growing fondness for the book.

Agilists will be tempted by the Devil himself while reading the text. I’m not joking. The book reads as a point-counterpoint argument between opposing angel and devil caricatures. Some of the devil’s quips seem a bit absurd, but the point would probably be lost if other words had been chosen. Rarely is the software world black and white. To depict this, the authors have provided examples to describe what each anecdote should “feel like”. This format works well in purveying the dos and don’ts of Agile Software Development.

“Go ahead, take that shortcut. It will save you time, really. No one will ever know, and you can be done with this task and move on quickly. That’s what it’s all about.”

“Start with the hardest. Always tackle the most difficult problems first, and leave the simple one towards the end.”

The book’s authors are well known amongst the Agile community. Venkat Subramaniam is the founder of Agile Developer Inc., a frequent conference speaker, and professor. Andy Hunt is the coauthor of The Pragmatic Programmer and an author of the Agile Manifesto. Many coauthored technical works suffer from poor editing. Their text reads as if it the authors’ words are stitched together with nothing more than a Ctrl-c + Ctrl-v. While reading Practices of an Agile Developer my inner monologue was only disturbed by the many “Ahah” moments I had while pondering some of the book’s more poignant topics.

If Moses were a Software Developer, he’d have descended from the Mount Sinai carrying Practices of an Agile Developer in his hands. Maybe not, but it wouldn’t hurt developers to read this book. With subjects such as Agile feedback, coding, and collaboration, this book would be a welcome addition to an Agile team’s bookshelf.

Which NAS Device?

Posted by Ryan Baxter Sun, 15 Jul 2007 19:00:00 GMT

Lately I’ve become paranoid about my home backup strategy. I’ve realized that burning CDs/DVDs just doesn’t cut it. Not only are compact discs a lousy medium, but I’m not diligent enough to make the backups. Even when I do make backups, they tend to get lost in my house – oftentimes ending up as the coaster of a frosty mug. A Network Attached Storage (NAS) device would give me centralized backups with the added benefit of a shared storage location on my home network.

I’ve been researching NAS solutions to adequately CMA. I’ve narrowed my search down to five choices. Each of the devices will work for my needs, but they all come with their own baggage. My list of must have features along with the five devices and my perceptions of each can be found below.

Must have features:

  1. Ethernet connected storage.
  2. RAID 1 mirroring.
  3. Less than $500 total price.
  4. 1TB (500GB mirrored) of drive space.
  5. Works in a mixed environment.

My choices:

  1. D-Link DNS-323
    Pros
    • Good user reviews on CNet.com.
    • Scalable.
    • Fast write speed.
    Cons
    • Looks like my toaster.
    • Price. With 2 500GB SATA drives this comes close to my $500 limit.
  2. Linksys NAS200
    Pros
    • The NSLU2 was a success.
    • Inexpensive. Amazon.com is selling the unit at a preorder rate of $129.99 (drives not included).
    • Scalable.
    Cons
    • Yet another ugly device.
    • Not yet released.
  3. Maxtor Shared Storage II
    Pros
    • Nice design.
    • Quiet.
    Cons
    • Average price. I found this retailing for $429.99. at JR.com.
    • Bad user reviews on Amazon.com.
    • Reviews suggest that the internal drives cannot be replaced.
  4. NetGear SC101
    Pros
    • Inexpensive. Retails at TigerDirect.com for $74.99 (drives not included).
    • Scalable.
    Cons
    • IDE drives only.
    • Toasteresque design.
    • According to user reviews, this device may not work in a mixed environment.
  5. Western Digital My Book World Edition II
    Pros
    • Price. I found the 1TB device for $356.99 at JR.com.
    • The best looking device. It reminds me of an Apple product.
    Cons
    • Horrible user reviews on both Amazon.com and CNet.com.
    • Supposedly has a very noisy fan.
    • Reviews suggest slow write speeds.

In the midst of writing this article, I ran across a detailed comparison of NAS performance specs. I’ll definitely be reviewing this information before making my final decision. I’m also open to suggestions as long as they fit within my list of must have features.

UPDATE: My final review of the Linksys NAS200 has been posted.

Code Snippet: Turning Oops into Ahah with Ruby.

Posted by Ryan Baxter Thu, 12 Jul 2007 15:49:00 GMT

Scrapbooking is my wife’s favorite hobby (stay with me). To fuel her passion, she takes hundreds of pictures at each family function with her digital camera. She edits the pictures, uploads them to yorkphoto.com, and then checks and rechecks our mailbox daily for the printed pictures. With the pictures finally in hand, she manages to combine the photos, bits of paper, stickers, and collected mementos to create a beautifully designed scrapbook page. Each page in her album is an original work. I’m constantly amazed and secretly jealous of her improving sense of design.

The Oops:

The camera my wife uses is a Canon PowerShot A80. It names each digital image with a sequential number that starts at 1 with the very first picture taken. In exploring the camera’s settings, I managed to reset the picture count. So rather than her next picture having a file name of IMG_103995837284942 it was named IMG_1. No big deal. Wrong! This messed up her entire workflow. Apparently my wife used the image’s file name as a unique identifier. Copying newly taken pictures to her working directory would have overwritten hundreds of files. Oops!

The Ahah:

To fix my blunder, I planned on renaming all of her archived images with a UUID. That way none of her images would be overwritten when adding the new pictures. Normally I would have written a bash script to handle this, but since I’d been spending some time with Ruby I thought I’d take the opportunity to learn from my mistake. It worked! The code from my image renaming script can be found below.

#!/usr/bin/ruby

require 'rubygems'
require 'uuid'

file_path = '/home/wifename/Desktop/Pictures'
destination_path = '/home/wifename/Pictures'
file_types = ['jpg', 'jpeg', 'gif', 'png', 'xcf']

Dir[file_path + '/*.*'].each do |file|
    file_extension = file.split('.').last.downcase
    if file_types.include?(file_extension) then
        file_name = UUID.new
        File.rename(file, destination_path + '/' + file_name + '.' + file_extension)
    end
end

puts 'Finished...'

With the above script, I was able to undo my mistake and learn while doing so. Now if only she didn’t have to use the command-line to run the code. Does anyone have experience with widget toolkits in Ruby? If so, contact me.

Older posts: 1 2 3 4