Nick Denton: Blog Maven / Thief

Every once in a while someone you hear a story that makes your blood boil. Sometimes it happens to someone you know. Joe Clark has the complete details, but here’s a rundown of the events as I understand them:

  1. Noel Jackson redesigns Fleshbot using CSS and XHTML, all in perfectly compliant code. I talked with him for a bit of this, sent some screenshots. He worked really hard on it and the result was, if I may say so, gorgeous despite the questionable content.
  2. Joe contacts Nick Denton on behalf of Noel saying what a neat thing Noel had done and recommending they hire him. Joe can be a nice guy like that.
  3. Denton responds that they can’t really afford anything like that right now.
  4. Noel’s design shows up on Fleshbot, a few days later they remembered to credit him for it.
  5. Later Noel’s exact code, right down to an empty div he had to add to get the layout to work just right, shows up on Gawker and Gizmodo. Some colors are changed, and likely due to incompetence of the implementor the other new designs have numerous mistakes added.
  6. Noel steams quietly for a few days, then talks to Nick Denton. Denton doesn’t see what the big deal was using Noel’s copyrighted work on several other sites. It reminds me of people who rip off other’s designs and then don’t understand why you’re mad about it. The copies are not as high quality as the original, as well.

Smells rotten to me. Personally I was quite fond of Gizmodo, as it really is a high quality blog, but I’m not going to visit it anymore and I’ve delinked it because I don’t want to support a company with such low ethical standards. I encourage you to consider the situation and come to your own conclusions. All I can do at this point to support Noel at this point is let more people know about what’s happened to him, in the hope that possibly this could end on a more positive note.

Update: Denton has emailed me and is telling everyone that he has posted chat transcripts that clear everything up. I applaud him for putting more information out there, but it doesn’t seem to help his case much. I suppose anyone can claim ignorance as the reason for a mistake. Some will believe that, some won’t. What makes the difference is actions from here on out, now that everything is “clear.”

Happy Birthday Sarah

Before it’s too late, I wanted to wish the wonderful Sarah Michele Williams who plays trumpet a happy 18th birthday.

Birthday Wish

On your Birthday,
Stretch for a sunbeam…
Reach for a star,
Go for a beautiful dream…

Pick out some wishes,
no matter how far,
or how hard to reach
they may seem…

Cherish some hopes
that are dear to your heart…

And as a new year comes in view,

Treasure & keep them,
and know from the start,
that this year,
you can make them come true

I hope your birthday was as special as every day deserves to be for you.

Distributed Social Networking Software

One of the greatest things about South by Southwest interactive last year, which I just barely made it to, was the incredible creative energy born of like-minded people interacting with each other closely. Out of a conversation with Tantek ร‡elik regarding linking, social interaction, and leveraging HTML rather fabricating new formats I became involved in what now is known as XFN, or the XHTML Friends Network.

XFN is a standardized method for leveraging the HTML rel attribute to describe relationships between people. More simply, it’s about enhancing how you link to somebody. Together with Tantek and Eric Meyer (and wonderful feedback) we’ve put together some great information and guidelines for using XFN. Check it out and share the link.

As an example of an early XFN application, people who I’ve met in person now automatically have a star beside their name when I link to them. See the “timely dozen” to your right or my portal page.

Sortable Tables and PDAs

For the Houston Palm Users Group meeting today I wanted to put together a comparison of currently available PalmOS PDAs for people shopping for the holidays. The idea from the beginning was to present the information as accessibly as possible, and after toying with doing a slide-based presentation, but talking about them all, or some sort of giant table I settled on the table, mostly because members could check it on the website when they got home and use it as a reference. Of course, giant tables are generally as unfriendly as you can get online, so I started thinking about ways I could boil down the information into just a few values, objective and subjective, and how to present in an effective manner.

The architecture of the table ended up being simpler than I anticipated with just 7 columns: model name, street price, weight, internal memory, total pixels, screen dimensions, and the completely subjective MattRating. I chose the values based on what people seem to care about most at meetings, and with a number of assumptions. Internal memory is important, but less so now that nearly every unit supports external memory (memory stick or SD) transparently. Total pixels was a compromise to present the screen dimensions as a sortable value. “MattRating” is a subjective rating of how I think each unit rates as a gift, taking into account all its features, expandability, the unit in comparison with what else is available, and price. It’s the secret sauce that balances out the values included with everything else about a PDA that couldn’t be usefully quantified or there wasn’t space for.

Finally to make the table as useful as possible I was determined to make it sortable by the table headers. I search high and low and found nothing better than the unobtrusive DOM sortable table code from kryogenix.org. It functions exactly how I think great javascript (ECMAscript, whatever) should. My only problem has been it seems to sort things oddly when you first click on a header, but corrects itself if you click on that header again. I’m trying to track down what could be causing this, but haven’t had any luck so far. Still, even with that one flaw, it’s better by far than the other sortable table implementations I found.

The result of these labors can be seen on the HPUG website, Holiday PDA Comparison.

Now what would be cool is a way to do it with alternating row background colors

Death of Flexible Width Designs

It’s over, it’s done. Those of you holding on should wave the white flag as two of the best flexible width sites, Doug Bowman and Dan Cederholm, have thrown in the towel and gone fixed-width without even an entry of explanation, I suppose because the benefits of fixed-width are so obvious no explanation is necessary. Update: Cedorholm’s design is now centered.

Bowman's Stop Design Cederholm's Simple Bits

The assault is coming from all sides:

Dear Mr Antonioni:
I recently screened your classic film, The Red Desert, starring Monica Vitti and Richard Harris. I have a problem with the way you used screen space. My theater’s screen is big and wide. It is capable of handling many actors at the same time. For instance, crowd scenes and battle scenes work well. But in your movie there are only a few actors — and many times they are pictured in one corner of the screen or another, against a stark minimalist background. This is a terrible waste of screen space. For instance, there is one scene where Ms Vitti is filmed on the left side of the screen and there is a white forest behind her. The white forest is not much to look at. Sure, I can look to the left and watch Ms Vitti’s performance, but what do I see when I squint my eyes and look only at the right side of the screen? Not much! I urge you to add extra characters and situations to your movie so every inch of my screen bursts with action at all times.

Sincerely,
Howard Gumpf

Ouch. Now I think the film/web analogy is a bad one, and it breaks down with any sort of critical thought. Zeldman knows this but he’s trying to make a point.

Was it that long ago that flexible-width designs were all the rage? They came in with a bang, and left with a whimper. Is anyone still holding out? Are there any good flexible sites left? The only place I see it anymore in web applications (such as the WordPress administration interface) and in lightly designed e-commerce sites like Amazon.

Calculate Age in MySQL

I just got an email from docs@mysql.com saying the following:

The user comment system in the MySQL manual is not the place to request features. You can do so using our bug-tracking system at http://bugs.mysql.com/. Thanks. (Actually, your comment is not a feature request, but it relates to another comment that is. The example you’re giving is nice, but this is a reference manual, so we have to restrict it to _a few_ useful examples.)

My original comment was:

You bring up some important issues, but dealing with ages really isn’t that hard. For example you could do something like this:

mysql> SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(dob)), '%Y')+0 AS age FROM people;

Where ‘dob’ is obviously their date of birth. It’ll also work with pre and post-epoch dates. Please excuse the funky formatting as the
comment stem seems to insist on inserting line breaks into the code block. I ran into this problem while working on some genealogical things over at Mullenweg.com, a family site. I hope this helps!

Looking back, it’s funny that the comment is still around, I wrote it over two years ago. The date and time functions is the MySQL page I use most, so in some sense it was always nice to have my mark on there. For google and posterity I’ve preserved the comment here.

I’m glad they’re cleaning up the comments, as they are really bad in places and have atrocious formatting, especially when compared to say, the PHP manual. However there is a later comment (which is still up) that offers perhaps a better method. From Kirill Novitchenko:

The method posted by Mathew Mullenweg is good, but leap years goof it up on birthdays. (Try it. Use the current date and subtract exactly 5 years ago.)

Hopefully this will be the last ‘find age’ function. There is a simple premise to it:

  1. Subtract the current year from the birth year to get the age.
  2. If the current month and date is less than the birth month and date, subtract 1 from step 1.

Therefore, this should work with everyone who wasn’t born in the future.

SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) AS age

where dob is date of birth.

I’ve never run into any problems with my function but I see nothing wrong with the way this one works, so I may update my code to use it.

Why not just use unix timestamps and avoid all the funkiness? When I first started writing everything I actually did, but then one day I got a call from my lovely sister saying that it was showing everyone’s birthday as January 8th, 1901 (or something like that). I had reached the negative limit of a 32-bit integer, the upper limit being sometime in 2038. Moving all the date functions into the SQL is probably bad from a programming point of view but it works great for the application. Of course I have no clue how it deals with the 10 days Pope Gregory removed from the calendar in 1582. Hopefully that won’t come up. ๐Ÿ™‚

Thunderbird 0.4

As you may have heard, Thunderbird 0.4 has been released, and it’s a delight. I’ve been using Thunderbird off and on since I first heard of the project. I snubbed 0.2, as it was quite clunky. 0.3 changed my mind and became my default email client over Outlook Express, and I also set it up for my mom. However it was not so much on Thunderbird’s merits of the time that I switched, because it was still quite rough in many areas, it was simply the least bad of all the IMAP email clients I have tried. (And I’ve tried them all.) However this new 0.4 version is a pleasure to use. The graphics have been completely revamped, which is a much bigger deal than I would have thought and really changes how I view the application. (Literally.) Of course they were pretty patchy before, it didn’t even have a separate icon for mail you had replied to. The other problem I had before was that the program would get hung up on something, I’m not sure what, but when it was nothing would work until I restarted the application, which was annoying to say the least. I haven’t even seen a hint of this problem for about two months now (I’ve been keeping up with the weekly builds).

It just does IMAP so well. Having all my email and folders on the server makes it easy to try different email clients and not worry about importing, exporting, or keeping my data in sync. A few minutes ago, just to make sure I wasn’t remembering things wrong, I opened up Outlook Express again to give it another go. That’ll probably be the last time I ever do. Moving IMAP messages to different folders in Outlook Express opens a dialog box that actually precludes you from doing anything else in the application, so if you’re moving a message with a large attachment or several messages you have to wait for everything to finish before you can do anything else. For someone who lives in their email client, that is simply unacceptable. Thunderbird does all that in the background, and it’s so fast with most things that the “IMAP lag” is gone.

It’s not perfect, there are a few things I hope the Thunderbird team addresses in future releases. First is the spell check, which rocks but always wants to spell check the name of the person I’m replying to in an email. Second when I forward a message inline it includes all the headers, which can often be twenty or thirty lines, most of it junk that isn’t important. Just give me from, to, subject, and when it was sent, and I’ll be happy.

Thunderbird understands that on some IMAP servers, including mine, some folders contain mail messages and some just contain other folders. Outlook Express would try to select these “holding” folders and return an error, where Thunderbird shows them in italics so they’re visually set apart from the folders that hold actual mail. Thunderbird is also supposed to have some great spam handling, but since I handle all that on the server side I can’t speak to that personally.

Bottom line: try it out. You have nothing to lose and you might just find that perfect email application you’ve been searching for. The best thing about it is I know that right now another version is in the works, and in a few months they’ll be a 0.5 I can rave about. Or I could wait until 2006 for a new version of OE to come out with Longhorn. Right.

Style Updates

For better or worse, there have been a number of stylesheet updates around here, so you may notice things looking slightly different. First off are the shadows behind the main content box, for whose sake non-semantic elements were added to this page for the first time ever. How quick we are to sell out!

Speaking of selling out, text advertisements may appear at the top every now and then. Yes they suck but it’s the holidays and extra cash is always nice.

I moved the background image for the post titles from the anchor element to the h2 element to prevent the blinking when you rolled over the titles in IE on Windows. My Mother will be sorely disappointed as she thought that was a rather cool effect I had done intentionally. I wish!

Tantek and Eric informed me that my site was completely borked in respectively Mac IE 5 and Safari. This site is an experiment, so I make no guarantees as to browser compabilitiy but I try to be good about testing things on browsers available to me. Last night I used Greg’s Powerbook to see what was going on. It seems Safari was having trouble with some commented out content (the ads that are temporarily disabled) so I moved that from HTML comments to PHP comments. Commenting things out server-side is actually a much better practice because it keeps the source code maintainability for you the author but hides the comments from any visitors. There is also a savings in bandwidth, but in many cases that will be minimal. So as a best practice go from:

<-- Three extra divs added because prima the donna designer just HAD to have his shadows. And my idiot boss agrees with him. -->

to:

<?php /* :-- Three extra divs added because the prima donna designer just HAD to have his shadows. And my idiot boss agrees with him. And they'll never see this comment. MUHAHAHA! */ ?>

As for Mac IE, I wasn’t sure where to begin. It doesn’t handle the float on the menu list items well so instead of a nice tabby menu you have a series of giant honking bars in the header. I could go to display: inline for the navigation list items and work with the horizontal menu from there, but I’ve always prefered having the list items floated and the anchors as blocks, which you can’t do when the containing list element is inline. If I remember correctly Eric helped me around this problem before on the WordPress site (thank you!) by giving the items a fixed width, but I don’t have the space to burn here like I did on that menu.

Checking over my stats, Mac IE users make up approximately 2.1% of my viewing audience over the life of this site, and closer to 0.9% over the last month. Uowever is this low and declining number because other browsers are now in vogue on the Mac and IE hasn’t been updated recently to quench Mac users’ insatiable desire for upgrades? Or is it because my site looks so bad in their browser? The world may never know.

So the moral of the story is: the web is a jungle and watch your comments when on Safari.