My Little Corner of the Net

YAHOO! User Interface

I generally consider myself a back-end guy, preferring to program in languages like PHP to generate dynamic web pages. The front end and the user experience is still important, but that is the area that I, admittedly, give the least thought. I do make every effort on the server side to ensure usability and accessibility of my pages, but that’s generally where I stop. I’ve never been a fan of using JavaScript simply because a) you can never be sure that it will work in the user’s browser, b) every browser does it differently, and c) having JavaScript “widgets” on a page in a non-JavaScript browser generally means that there are things on the page that are not accessible–a big no no in my book.

My thoughts, however, are starting to change. Several months ago I discovered the YAHOO! User Interface library (or YUI for short), the same JavaScript library that adds all the dynamic eye candy you find on YAHOO! owned sites like Flickr and Upcoming.org. Like so many others probably have, I downloaded a copy of the YUI library, extracted the files, and played with the examples. Then, of course, I stopped and moved on to other things.

Last week I had a sudden renewed interest in the YUI. I downloaded a new copy and started playing with the examples again. This time I actually started looking at the code and the docs and started doing stuff with it. In my experimentation I discovered that the YAHOO.util.Event object is a really powerful piece of code, giving developers consistent event handling across browser platforms. In addition its onAvailable() and onContentReady() methods allow you to register event handlers that will fire as soon as an element is detected in the DOM, but before the page loads. This gives you the ability to add content to a page dynamically AFTER the page has left the server, but before the page’s onload event fires, making it possible to add JavaScript-required features to a page once you’ve determined that the browser supports them. Non-JS users will just get the page as is from the server–they’ll miss out on the “bells and whistles,” but they won’t lose any accessibility either (assuming the page coming from the server is accessible, of course).

So far I have created one custom widget: a popup date picker object based on YUI’s calendar component. It exists in a custom namespace (IB.datepicker) so that it can be dropped in to most any page without worry of naming conflicts. All you need to do is call its initialize() method to set it up on the page and attach() it to as many text input objects as you’d like. I plan to release it (under BSD license) once I do some more testing, but if anyone is interested in beta testing it, just leave me a comment and I’ll hook you up.

The Super Bowl and LifeMinders.com

I watched the Super Bowl this year.  But I didn’t really care who won, in fact I’m not much of a fan of either team.  This year I watched for the commercials.

Now unlike every other blogger that watched for the commercials, I am not going to start discussing what I thought of the commercials this year.  Yeah, there were some impressive ones, but by 10:00 tomorrow morning everyone will be sick of hearing about them anyway, so why bother.

Instead I am writing about LifeMinders.com.  OK, now before you go out and try loading LifeMinders.com to see what it is, let me say the site doesn’t exist.  At least not anymore.

Several years ago while I was in college (1998 or 1999, I believe), right at the top of the dot-com boom, the big deal was that many of the Super Bowl advertisers were Internet startups.  I seem to remember that being the year E-Trade started their Super Bowl ads, and I believe Amazon.com, MySimon, and Yahoo! had a presence that year as well.  And of course there was LifeMinders.

LifeMinders was a site where you simply built a profile about yourself and then you’d receive email alerts–reminders about birthdays and anniversaries, notes about pet care, gardening tips–all personalized to your interests and sent free of charge.  The company added advertisements to the email messages they sent so to keep the service free.

The commercials weren’t all that memorable.  If I remember correctly, they looked like a pad of paper with pencil writing and were narrated by a male voice.  I don’t remember how they pitched the service exactly.

I never used LifeMinders, but I remember my roommate at the time signing up
with them the day after the Super Bowl where the ads debuted.  I don’t recall him actually using the service–if he did, he never shared any info about it with me.

I would have forgotten about LifeMinders a long time ago.  Like so many dot-coms, LifeMinders was unable to turn a profit, finding that relying on ad revenue as its only source of funding just didn’t cut it.  A couple years ago I was watching a TV special on Super Bowl advertising and a couple seconds of a LifeMinders ad was shown.  At that time I checked the site and found it still running.  Watching the game tonight once again jogged my memory, so I checked it out, finding no site at that address.  In fact, the domain is now registered to an individual person, but she doesn’t seem to be using it for anything right now.

Although no site funded solely on ad revenue seems to work, LifeMinders was perhaps a bit ahead of its time.  These days the web is all about personalization.  Since like 30 Boxes let anyone set up and share calendars and others, like Yahoo!’s Upcoming.org make it easy to find community events around you.  And now we aren’t limited to email notifications either–sites now send reminders and alerts to our cell phones with SMS and to our desktops with RSS.  If LifeMinders were created today it would be interesting to see who would by it–Google, Yahoo!, or Microsoft?

CSS Trick for the Nested DIV “Problem”

This is more for me than anything, but I can never remember how to make a parent object expand to contain all of its content objects when all of the contents are floated.  Every time I need to do this I end up googling for the solution, but it often takes a while to find.

So, to save me time next time, I’m posting the solution that I always stumble up from here on my blog.

All I need to do is add this CSS to my container element

#container:after {
    content: "."; 
    display: block; 
    height: 0; 
    clear: both; 
    visibility: hidden;
}

Remember to change #container to the actual id of the container element, of course.

KO the Morning

This is how I feel most mornings.

http://www.morningimpaired.com/gcm/index.html

Web 2.2 (Nooooo….make it stop!!!)

If you’re like me and hate the whole concept of Web 2.0 then don’t click this link.  You don’t want to hear about Web 2.2.

For the record: I have nothing against the technologies that are wrapped under the name “Web 2.0,” nor do I dislike the “community orienteation” concept that it embodies, either.  I just dislike the name.  Its not like the “web” protocol changed (if there was such a thing) or the “web” standard was revised (again, there’s no such thing).  Its just a new idea, a new approach to providing web content to users.  When flourescent light bulbs came on the market, we didn’t callit “lighing 2.0,” so why do we have to connect such a name to the web concept?

<