Tuesday, May 27, 2003

I find that the tenets of the Manifesto for Agile Software Development ring true in my software development experience:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Scott Ambler's site agilemodeling.com has a few good introductory articles. The Agile Alliance site has links to many more articles from different sources.

I seem to recall seeing an article when I found these pages in which the author promoted the idea of writing as few test cases as possible before writing code (contrary to standard extreme programming practice). Instead, he emphasized writing a test case for each debugging session/bug fix and saving each of those. Three weeks later, I can't find this reference. Please let me know if you see it.

Monday, May 12, 2003

Build your own safety sign. If I had my own server or were using a image hosting service, I'd post an example... instead you can see some on the blog where I found this.

Friday, May 09, 2003

A former cow-orker has posted an article over at his weblog discussing meta-weblog issues. It's a pretty good read and even though I usually try to keep the navel-gazing to a minimum here, after encouragement from the author here are a couple comments regarding this...

First, while I agree that RSS/RDF has potential for helping create a semantic web, I'm still a little skeptical about the predictions of massive impact of syndicated blog content. Speaking purely about my own habits, I don't have the interest or time to scan even RSS summaries of many blogs. I don't see people caring much about the idle ramblings of random bloggers.

I haven't yet read the story linked from this article concerning blog reporting on Presidential primaries, but it's an intriguing idea.

The other issue I have with the current state of weblogging is what Moveable Type, Blogger, and other blog frameworks have done (or more accurately, not done) to encourage printable versions of their content. For example, this review of blogging APIs appeared on a major blog. But look at it... two wide columns of fluff bordering a narrow column of content. This is an important issue for me because I tend to do a lot of reading on the subway and I like something printable. In such cases, I tend to copy the text to a document in a word processor where I can make it more usable for subway reading.

One way to fix this at the blog level can be accomplished with the help of modern implementations of CSS have the ability to specify different stylesheets for different media... e.g. look at the source of a news story on wired.com and you'll see a line like this:

<link rel="stylesheet" type="text/css" media="print"  href="http://blahblah/wnPrint.css" />
This stylesheet does nice print-version friendly things like hiding the menu bars and ads and switching from the screen-friendly font verdana to a more readable serif font. (No, I haven't added such a stylesheet to this site... new css for this site is in the works.) Of course this doesn't address the issue of reversing the order of blog entries -- a problem which I addressed with the one-off hack shown in my recent entry.

Thursday, May 08, 2003

Are you worried that some dumpster diver might find your bank account numbers on your discarded hard drive? Then you need Darik's Boot and Nuke "a self-contained boot floppy that securely wipes the hard disks of most computers".

Incidentally, I found this one via the monthly newsletter from tinyapps.org. If you have to use Windows, look for your utilities on tinyapps. From the tinyapps FAQ:

To qualify for TinyApps, a program must:

  1. Not exceed 1.44mb
  2. Not be adware
  3. Work under at least Windows 9x (this does not apply to non-Windows apps, of course).
  4. Not require the VB/MFC/.NET runtimes. Also, preference is given to apps which are 100% self-contained, requiring no installation, registry changes, etc.
  5. Preferably be free, and ideally offer source code. Shareware will only be listed if there is no freeware alternative.
(n.b. the hyperlink on the word "free" is from the original. I haven't read the target page in its entirety, but it looks pretty good.)

Wednesday, May 07, 2003

There's lots of talk about a weblog allegedly written by a very wealthy heiress on the run. I first saw mention of it over at memepool and now wired.com is running a story about it, too.

Hoax or not, it's a story that has me hooked. I tried reading in backwards order, but it isn't easy. So, for those, like me, who joined the story late, here's some help.

The following tcl script will reverse the order of the entries. Copy the HTML of the main content (i.e. not the menu bar, not the title bars) into a file. Edit the script to find your saved file and run it. Don't expect tech support.

    #!/usr/local/bin/tclsh

    set input_file "flight-risk.html"
    set output_file "out.html"
    set open_tag "<blockquote>"
    set close_tag "</blockquote>"

    set ip [open $input_file]
    set input [read $ip]
    close $ip

    set index 0
    set length [string length $input]
    set quote_count 0
    puts "starting... length is $length"

    set outl [list]

    while {$index < $length && \
               [set this_one [string first $open_tag $input $index]] != -1} {
        set this_one [expr $this_one + [string length $open_tag]]
        set this_end [string first $close_tag $input $this_one]
        set this_end [expr $this_end - 1]

        incr quote_count
        set index [expr $this_end + [string length $close_tag]]

        set this_chunk [string range $input $this_one $this_end]
        append this_chunk "\n"
        set outl [linsert $outl 0 $this_chunk]
    }

    puts "found $quote_count total"

    set op [open $output_file "w"]
    foreach chunk $outl {
        puts $op $chunk
    }
    close $op
Now you can print and read at your leisure.