A recent session of Morning Pages generated a Category 5 GREAT FREAKING IDEA! As you might expect, this is an idea to build a piece of software that will scratch an itch of mine. This session also yielded another important idea: the concept for this editorial! LOL.

Let me give you the high-level idea here and we'll go from there. This idea spawns from my frustration with an application I've used for years to collect the random ideas that pop into my head. I use (well, used) this application to collect ephemera like article ideas, follow up notes, article links, small snips of code that I found useful and the occasional image (usually food or travel related). As with many software applications, this one evolved into a slow, feature creeped, bloated piece of software. I yearn for the days of its basic simplicity. My idea: build my own SIMPLE note taking application and return to the days of simplicity I so fondly miss.

This BASIC application will be able to capture and share notes across multiple platforms. Yes! I want to build an application just like all the other note taking applications that are probably available for a few dollars. But this one is unique and well, it will be MINE all MINE. It will also have a few tweaks that will make it different from all the note taking applications out there. Heard that one before, right?

And it was this GREAT FREAKING IDEA that yielded the idea for this editorial. I had an epiphany that… Yes! The computer is my paintbrush and has been for some time now. I just hadn't really grokked it yet. I have flirted with the idea in many of my editorials, but it really hit home the other morning that the computer IS my paintbrush, and it was high time I embraced the idea.

As this idea formed, I reflected on some of the cool personal projects I've created over the years and the joy they've brought me and others. The first one is a small Ruby project I wrote to help a friend...and soon after, to help friends salvage the articles they wrote for a site that was about to go defunct. I wrote a small program that “ripped” articles written by a group of authors. These articles were stored in a single file per author, which could be used to archive their material. This code is shown below with names scrubbed to protect the innocent.

require 'rubygems'
require 'open-uri'
require 'nokogiri'
authors = ['john','william','jacob','peter','brian']

authors.each do |author|
    f = File.new(author + ".txt",'w')
    1.upto(5) do |page|
        urltext = "http://www.***.com/bloggers/#{author}"
        urltext << "/page/#{page.to_s}/"
        f.puts urltext
        doc = Nokogiri::HTML(open(urltext))
        doc.css('h2 > a').each do |a_tag|
            begin
                f.puts "======================"
                f.puts a_tag.content
                f.puts a_tag['href']
                doc2 = Nokogiri::HTML(open(a_tag['href']))
                doc2.css('.post-body').each
            do |article|
               f.puts article.content
            end
                f.puts "==============================="
            rescue
                f.puts "ERROR DOWNLOADING:"+ a_tag['href']
            end
        end
    end
end

I used this same code to archive content for other friends from other sites that were about to go defunct or who they'd severed relationships with. One of the BEST things about this project is the fact that many of these authors were strangers to me when I wrote the code and now many of them are very close personal friends. I find it to be kismet that 30 lines of code can have such a lasting impact on me and my family.

The next project is another personal project I've started. I read articles from several entertainment-related websites and have grown tired of having to click on them one at a time. There was a time when we had tools that helped us do this. Well, the big baddies of the Internet (ahem, Google) have managed to kill the concept of RSS readers, so I busted out the old compiler and have started building my own. Figure 1 shows my own personal RSS reader. This is another personal work of art and I get immense joy tinkering with it.

Figure 1: My own RSS reader
Figure 1: My own RSS reader

Finally, there are applications I work on that bring me great joy and, from appearances, they bring great joy to many others. One of the applications hosts the digital collection of one of my favorite artists: Charles Schulz. Yes, THAT Charles Schulz. Figure 2 shows a few random images from the site. The best part of this application is that there are over 1,000 other museums in it that bring great joy to their creators and users daily.

Figure 2: Images from the Charles Schultz digital collection
Figure 2: Images from the Charles Schultz digital collection

It's fortunate that I spend my days turning ideas into tangible pieces of software that bring joy to others and myself. I also love the idea that still I love writing code for fun and enjoyment. I have been writing code for over 30 years and it still gives me a thrill! I hope you find your work as enjoyable as I do. Now, go paint!