Illusory Follies Sed quis debuget ipsos debugatores?

11Apr/082

Integration of Information = Value

... at least in some cases.

It's easy to store information on your cell phone by typing some text in. It's more advanced to be able to send text messages. But what about providing a "universal" interface (meaning a web services interface) that can receive text and makes text available?

This is what Twitter does. I wasn't very impressed when I first heard about it a while back because it seemed so... simplistic. Anyone can write a simple database with users and allow them to post text messages. But I was missing the point.

I can now use my cell phone to send a message to Twitter (there's a program called MobileTwitter that I just downloaded and installed. This text messages pretty much instantly wings its way to the Twitter servers. From there, people can subscribe to my "stream" of messages using desktop-based clients (I use Spaz on my MacBook and my Windows PC). However, I'm not stuck using one companies application -- all I need to do is poll the web service. A simple curl call will easily retrieve my latest Twitter message

curl -u andrewflanagan:mypassword http://twitter.com/statuses/user_timeline
/andrewflanagan.xml?count=1 -s -o /var/twitter/andrewflanagan.xml

and a few lines of PHP will make it displayable on my web page:

$xml = new SimpleXMLElement('/var/twitter/andrewflanagan.xml', 0, true);
$status = $xml->status->text;

Alternatively I could have the PHP script directly call Twitter but I ran into some problems since it takes longer to load the pages each time someone visits and Twitter unfortunately limits requests to 70/hr which results in ugliness when I get too many hits on my site. So instead I set up a cron job that runs every 5 minutes (using the curl call above) and updates the locally-stored XML file.

But anyway, the point of this is that you can easily define new interfaces for entering, receiving, and displaying text. It's simplistic, yes. But it means that on my way back from work (in the car) I can update the front page of my blog with a message using my cellphone. I can also be pulled over by a state trooper. They have no appreciation for the depth and usefulness of this technology!

6Apr/080

Design & Functionality

I have always been a stickler for functionality in my programming. What I seek to do is develop solutions through code that model existing efficient functionality or create entirely new abstract models that can be understood clearly and manipulated easily to achieve functionality.

I'm not a "GUI guy" and I have a hard time when I move from developing an easy-to-interface class library to an easy-to-use user interface. Basically, I seem to have no trouble with the idea of adequately describing objects (even abstract objects) and developing easy interfaces. However, displaying this information to a user is harder.

I'm a big fan of simplistic interfaces. I like my new virtual server provider and my new domain registrar because both sites are simplistic. They have well-defined functions and they present the information in easy-to-understand lists. You don't have to grasp some complex object model or understand what the difference is between clicking on "My Account" and "My Hosting" or some bizarre thing like that. It just makes sense.

Now, at the same time, both these sites (and I love them dearly) are rather ugly. I myself don't mind this at all. They're functional and they feel right -- like a solid metal tool in my hand, it doesn't look pretty but I thoroughly enjoy using it.

The intersection of functional code and beauty to me is pure happiness. However, beauty is, or at least is often regarded as being in the eye of the beholder. And on the Internet, there's a lot of beholders.

I'm reminded of the site CSS Zen Garden; it allows you to view the same material using many different style sheets. There's some beautiful graphics and layouts but at the same time the actual content never changes (you're simply switching stylesheets). I like this a lot. Beautiful websites are great but beautiful websites where the presentation is perfectly separable from the content are wonderful. I know this isn't really "functionality" but it allows the opportunity for such. With this concept, you can develop extremely functional content and then alter the stylesheet to present that functionality in a myriad of ways.

I actually did something like this (but very simplistically) for our family website. I have a stylesheet for each month and every month visitors are presented with a different stylesheet by default. It helps keep the site from feeling old and boring to myself and to others. The functionality is always the same (very plain-vanilla WordPress functionality)

There's a lot of this sort of thing happening on the Internet and there are plenty of good, clean websites with very solid and well-thought-out designs that provide excellent functionality. But it's not really the norm I wouldn't say.

My new iPhone to me is an example of combining functionality with beauty. It's not quite as functional as I would like but it's much better than what I've had in the past. The interface and presentation of material though is absolutely wonderful (like much of what Apple makes).

I guess my rambling point is that popular success seems to lie at the intersection of functionality and beauty. Allow users to aid in defining beauty (through open and customizable interfaces) and you've added even more value.

I'm revving up to produce some new web applications (and possibly an iPhone app if I can find the time). I think my biggest issue is that although I feel confident making functional applications and making them have customizable interfaces, I'm pretty lousy at developing anything more than the most simplistic presentation. I've picked up some books on design so maybe I'll actually get better at it. We'll see... more to follow as I pursue this.