On Discussion

Of utmost concern to any computer science student at one point or another is the concept of the sorting algorithm. The sort is the builidng block of conceptual computer science much as the color wheel is for the visual artist. Once the student becomes familiar with manipulating the medium (such as the code syntax or the canvas), she or he must then be led through the process of understanding the deeper skills of the trade.

For the uninitiated, the sorting algorithm is like it sounds. I could hand you a stack of twenty-six cards, each with a unique letter of the alphabet written on them, and ask you to sort them in order. There are any number of ways to accomplish this task. You could parse through the cards one at a time to find A, then parse through it again to find B and so on until you’ve ordered all the cards into one big pile. Or, you could break the cards into piles, sort each pile, and merge the sorted decks back together again. Computer scientists, over the years, have devised a number of these algorithms of varying complexity and efficiency (a quick Google search returned this page with some excellent examples of sorting–complete with source code and animations). Sort algorithm studies are so pervasive in the field that they’ve become a sort of running joke. Check out the Zen sort and the random sort at everything2.

Another interesting, but unintended, truth that comes to light when studying sort algorithms is that whole idealism/realism dichotemy. Or, perhaps a better name would be the elegant/pragmatic tension. You know what I’m talking about. It’s that difference between getting something done, and getting it done right. Our lives are often frought with the compromise of doing something to get it finished, or taking the extra time to make sure it’s correct and complete. The sort algorithm exposes this problem in computer science very well. For, if you had enough time and enough power, you could throw the dumbest sorting algorithm you could recall from your CS 101 class and get the job done. It would be messy and ugly, but it would work.

You could think of this in terms of Shakespeare. Here, you have one brilliant (elegant) individual who as single-handedly written some of the greatest literature ever written in the history of Western culture. Imagine, though, putting 1,000 monkeys in a room, all working on typewriters for an unspecified (possibly infinite) amount of time. Arguably, the random collection of letters on millions of pages would begin to form into grammer, syntax, and story. Now, monkeys are stupid, making the second solution arduous at best. But if you could get enough monkeys and enough time, it’d get the job done. This imagery is called the “brute force” algorithm.

Which leads me to why I started writing all of this in the first place.

The Internet, over the last few of years, has really become a means of mass collaboration and discussion. HTML and its related technologies have finally gotten to the point that they’re easy enough to use for just about anyone who wants to converse about one thing or another. Take cloudmakers.org for example. This community of people started up because they all wanted to solve the online puzzle spawned by the movie AI. Blogs are a further extent of this thought in that they allow us to converse at length in a public forum about things that are meaningful to us. Ideas can be explored in depth by anyone and everyone.

Last night, I saw the Matrix again for the second time. Between this viewing and my last viewing, I was bent on not reading reviews or discussions on the movie in the hopes that I could come up with some “pure” observations–elegant observations. It was my hope that I could sit down and spend some time writing some relevant, insightful discourse on the movie that would shed light on the various levels of meaning woven into the film by the Wachowski brothers.

Contrary to the overwhelming evidence, I still like to think of myself as a clever, insightful, at times brilliant individual. As such, I thought it crucial to present new ideas into the Matrix discussion that is rapidly unfolding around the world. This required my views to be untainted from conversations such that I could construct my own thoughts, my own ideas, my own great insights. All of it to position my thoughts outside of the machinery of the “brute force” algorithm that is the Internet. To keep from being seen as a cog in the machine. I mean, that the Internet community is going to deconstruct the Matrix Reloaded at some point is inevitable. The majority of us, though, will only be repeating the observations and insights of a certain few individuals.

By now you’re probably rolling your eyes, having discovered that this isn’t about the Matrix, or the bubble sort, or monkeys at all–it’s another one of Ken’s tirades on identity. Nevertheless, the discovery is unique–at least to me–that maybe bringing insight to a discussion doesn’t mean hiding myself away up on a mountaintop, waiting for some big epiphany to come. Maybe it means talking things over with friends and getting involved with the discussion because the content is more important than what everyone thinks of the participants.

Maybe brilliant insight means ugly, messy, brute force anonymity every now and again.

Senior Project, Dogsitting, Schaeffer

We attempted to do a production install of our senior project software this afternoon on this machine. It turns out that the Tomcat web server software that was supposed to be running on the machine was replaced with something called ePrints. A production machine mysteriously had its web-guts torn out with absolutely no notice about two days ago (as best I could tell from using uptime), leaving us high and dry. Is this sort of thing common in the IT world? Maybe I should take up accounting… #

I’ve begun to read Francis Schaeffer again, which has been extremely refreshing for me and a welcome change from the rote consumption of technical data that this semester has been. I may have to quote extensive portions of True Spirituality in this space. Web Sites That Do Not Suck™ quote extensive portions of Francis Schaeffer. #

Speaking of which, do you know what the biggest hindrance will be to the Christian counterculture movement in the 21st century? It’s this: we just don’t understand semantic markup. I mean, com’on people—we actually believe that the Word was made flesh (cf. John 1)! Surely you’d think that this very statement in the Scriptures would express the critical importance of the written word. Context is king, subtlety is beautiful, and words have as much power to heal as they do to destroy. We have technologies that emphasize the context and subtlety and meaning of these words, but we still build web pages that are the browser-based equivalents of bad photocopies: tag soup, table alignments, and misshapen text. The web has been chosen as the medium for the voice of the Christian counterculture. I’m afraid that unless we start using the technology to its potential, no one is going to hear us. #

Sarah spent Friday and Saturday dogsitting for a friend of the family. It occurred to me in the process what kinds of sacrifice owning a large dog really involves:

* if you want to have dry feet, you must either buy slippers or wear shoes at all times
* sleeping in until 5 AM is a luxury
* eating anywhere but in the kitchen?—forget it
* washing your hands at least 3 times per hour
* entertaining friends and family by trying to make the dog turn his head to the side in order to understand you
* never, ever using the word “walk” again

Contrary to where this list may lead, we did have a really good time. :) #

If you don’t obsessively read Dive Into Mark everyday, you’ll likely have missed the CSS Zen Garden. Don’t knock it until you’ve tried it: Dave Shea provides five nine (9!) completely different skins for the exact, same markup—all brought to you by the wonders of Cascading Style Sheets. #

Site Changes

Sarah is taking call again tonight, which means I’m sitting in the apartment alone with my MT templates–a very dangerous combination. :) You’ll certainly notice a bunch of changes here. Some of it is stuff that I’ve been cooking up for a little while now and some of it is stuff that I’ve done in the last 24 hours. In no particular order:

# I’ve set up Mark’s MT Macros plugin, which not only automatically appends <acronym> tags to predefined acronyms (such as HTML or NJIT), but also converts those cute smiley faces. (I double-checked with Mark to make sure that taking the smilies was copasetic–it was). I’ll work on getting this set up for comments soon, too.
# Set up Brad Choate’s MT Textile plugin, which does nice conversions in my blogs so I don’t have to expressly write out the HTML for things like the em dash entity or bulleted lists.
# Deprecated the JavaScript Dynamic Curly Quotes. That kinda sucked because I was so excited about getting that to work–MT Textile does it for me now, though.
# Migrated the WeatherBox graphics to this site rather than requesting them from another site (I know, I should probably be clubbed for doing that in the first place).
# Changed the font a bit. It should be somewhat easier to read now. At least, I think so. ;-)
# Jai cleaned up my banner graphic. Thanks, Jai!
# Minor markup and stylesheet tweaks.

In other news, in case you couldn’t tell, the stress has throttled back a bit from school. I still owe some homework and will take a final on Monday, and we still need to do a production install for the senior project, but there’s far less pressure than there was before I finished my Management paper (35 pages), the senior project documentation (101 pages), and our final presentation.

Sarah and I also decided to take a cruise to Bermuda for our anniversary. I can’t wait to get out there with some good books and just…relax.

They May Not Be Popups…

…but they sure are annoying.

Jeffrey Zeldman: Close that thing! Open that thing! We’ve opened third party links in a named new window since HTML first made it possible to do so. Some readers like this; others not. (No additional mail is needed on that subject.) New window haters, Blogzilla tells how to suppress new windows by hacking a file in your browser. It’s easy, takes a few seconds, and unexpected new windows will never torture you again.

I saw this on Blogzilla the other day, too, and quickly sang praises to the authors.

Trolling for Cash

A good friend of mine confided to me recently how much money he has made from the Amazon Associates referral program: it was well into the hundreds of dollars for last month alone. Wow.

The Amazon Associates program, if you don’t know, is really a more subtle form of paid advertising. You sign up with them and get a customized referral URL with a tracking number embedded in it. The idea is that you can take this custom URL, blog about a book or a Segway or a DVD, and link over to Amazon with it. If anyone who clicks through and purchases stuff (it doesn’t even have to be the thing you recommended), you get a cut of whatever they purchase up to $10. Not a bad deal. In fact, it’s better than that—you’d kinda have to be stupid not to use it.

There are entire blogs (like this one) that are dedicated to the Amazon referral program business model. I mean, it’s not a bad side-job if you think about it. This site costs me $50 a year, and a MovableType key (since I’d be making a profit) would cost ~$35 as a one-time fee. That, plus some time to make a sharp looking site and do the editorializing, is all it takes to rake in some serious cash. Probably not enough to make a living, but certainly enough to make some nice pocket money. My friend—who makes recommendations on a forum that he was already reading anyway—suggested that I set up an account with Amazon, and I’m considering the idea.

I mean, I have opinions that people are generally interested in by dint of the fact that people read Our Story. When I recently recommended Evanescence, linking over to Amazon would have been totally legitimate. I could also review good tech books to the advantage of some of my geekier readers. People who know me already know that I think O’Reilly books rule. If I would have recommended a book to them in person, why not do so online, too, and make a couple of bucks from having the knowledge? What’s more, the people who read what I have to write might even want to know my opinion about such products. It all seems like a win-win situation for everyone involved.

But then I’m confronted with worldviews like this (and, perhaps to a more extreme degree, this) and I’m given pause. In the same way I was debating over my overt Google-consciousness when I post up on the Internet, I wonder if I really want to be motivated by the Cash Cow when I even just write. Besides, people are already taking issue with the overt link-obsession that Google’s PageRank has caused in the online community, who wants to give Jeff Bezos that much power as well?

It’s the age-old problem of creative self-expression versus making a pragmatic buck, I guess. I don’t mean to denegrate my friend’s hobby—I actually think it’s a really shrewd and clever way to make some money by doing something that you enjoy. I just think that Our Story isn’t the place for me to do that.

Thoughts?

(Note: of course, if I ever did sign up for the program, this blog would have to “go away.” Amazon expressly states that you cannot mention the program in your advertising site.)

Better Networking Through Blogrolls

Okay, so there’s this technology called FOAF that’s supposed to allow you to put an XML file on your site that describes a bit about who you are and your relationship to other people. It’s a sort-of XML schema for social networking. It occurred to me today, though, when I was looking at a complete stranger’s website: why go to all the trouble? I mean, sure, the FOAF thing might catch on and have real interesting applications—but, we already have these lovely things called blogrolls. They’re everywhere.

Certainly it wouldn’t be hard to determine that “Ken is interested in Christianity, blogging, Apple Computer, and the Mozilla project” and that there’s a possibility that anyone who links to Ken is likely interested in the same things? That’s not fool-proof, of course: not everyone who visits here is interested in what I have to say about blogging or my faith, for example. But, if you cross-referenced me with another name, say Asa Dotzler, and found sites that link to us both, you can start to narrow your search to find people who are also interested in the Mozilla project. It’s sort of like digital name dropping. :)

Hm. Add a GUI to illustrate this blogroll network and let people click through it, and you would have one interesting project.

A couple minutes later: Drat! Google won’t let you search more than one “link:www.blah.com” type entry. Perhaps this could be a job for…the Google API?

More minutes: Ah. Not surprisingly, Mark thought of this, like, a year ago. Still, though. His purpose was to find people of interest who are being read by the people he reads. I want to find people who are reading the people that I read. This is key because I’d like to connect to people reading non-blog type sites as well. In other words, “find me all the people who are linked to Mark Pilgrim and TheOoze.”

Question: anyone have any code suggestions in ASP “classic” (not .Net), PHP or Perl? Or, at least, any examples of Google API implementation?

Acquire, Manage, Listen (etc.)

Scientific American: The Semantic Web. For the semantic web to function, computers must have access to structured collections of information and sets of inference rules that they can use to conduct automated reasoning. Artificial-intelligence researchers have studied such systems since long before the Web was developed. Knowledge representation, as this technology is often called, is currently in a state comparable to that of hypertext before the advent of the Web: it is clearly a good idea, and some very nice demonstrations exist, but it has not yet changed the world. It contains the seeds of important applications, but to realize its full potential it must be linked into a single global system. Just think, ten years from now, we’ll be laughing about how irrelevant this all was.

InfoWorld—arguably one of the best tech news sites on the web since C|Net got diluted—is now offering RSS feeds.

The Matrix: News. As promised, we are pleased to offer five new essays tackling philosophical themes that arise in The Matrix. Psh, what’s the big deal? I had mine finished two years ago. ;-)

Apple announced it’s much ballyhooed Music service today. There is a Quicktime stream of the dog-and-pony show hosted by the inimitable Steve Jobs. Some improvements to iTunes make it exceptionally easy to share music between computers, something that I’ve used a Winamp plugin called BrowseAmp to do (ooh, there’s a new version out). What’s better, it looks like they are finally addressing the idea of legal MP3 downloads—for 99¢ a pop. :) By the way, do not miss the “Baby Got Back” advertisement.

Lessons Learned

bring it all into perspective
the tongue will steer the ship ahoy
spark up a flame
feel the pain of habañero sauce
a word’s forever
when we speak we set `em free
so watch your mouth
and you be careful what you say, Jimmy

Newsboys, Cup O’ Tea (cf. James)

Every now and then I like to reaffirm my monumental witlessness lest it should fall into doubt. Oh, well. I suppose it could be worse.

Update: fixed that link. Last time I link to Hoosier Times, though.