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. ๐Ÿ™‚