And the Award for Most Annoying Goes To…

The Dexter Park website easily qualifies to compete for the title of Worst Possible Website Design in the History of Websites.

It’s honestly so bad I lost interest in living there partway through, and only kept browsing so that I could compile the following list of horrifying problems:

  1. It plays music in the background!  I was already listening to my own music when I got there.  Whatever Muzak you’ve chosen clashes with the upbeat music of Mr. Leroy Anderson I was enjoying before you so rudely interrupted.
  2. There’s no way to turn off the music!  On my first visit I closed the site because I couldn’t figure out how to mute it.  On closer inspection, I realized it can’t be done.  Again, I was already perfectly happy with my own personal music selection.
  3. Flash should never – never – be used for navigation.  I cannot bookmark any page of your site.  If I want to share a great floorplan with my friends and relatives, I have to call them up on the telephone and describe how to use the site.
  4. Clicking the “Neighborhood” button does not reveal the building’s address.  It does not even reveal a map.  It reveals a very, very low information-density graphic with a star where the apartments are and various other symbols for area landmarks.  It is not even possible to identify from this graphic the building’s neighborhood, ironically.
  5. The symbols on this graphic blink incessantly, which is evidently supposed to encourage visitors to click them.  Clicking one does give more information on the landmark, but…
  6. Here’s the description given for Boston University: “Boston University began as a Methodist seminary in 1839 in Vermont.  The school was transferred to New Hampshire in 1847 and to Boston in 1867.  It is now internationally recognized as a top institution of learning and research. …”  What can this possibly have to do with selling me an apartment?
  7. The emphasis on area universities is unusually strong for a building that (according to other, offline sources) does not accept undergraduates.
  8. There’s a “View T Map” button which just shows the T schematic diagram (still not a real map) and puts a star incorrectly at about the St. Paul Street stop on the B line.  In reality, the building is halfway between the B and C lines.
  9. Under “Floorplans,” site visitors can see thumbnails of various floorplans across the bottom of the screen.  Only three are visible at a time.  Arrows to either side will scroll through the thumbnails, but clicking an arrow doesn’t just advance to the next image.  It advances a few pixels.  Moving to the next image requires holding the mouse button for three or four seconds.  This is just grossly inefficient.
  10. After selecting a floorplan to enlarge, there’s a “Furniture Arranger” feature that lets visitors drag bits of furniture onto the graphic.  These example pieces of furniture come in various shapes, but only one size – every dining table in the world is about seven feet long, apparently.
  11. The homepage features a “Virtual Tour” button that is not accessible once the visitor has selected any other page of the site.  It’s not possible, as far as I can tell, to return to the homepage.  (The video itself looks pretty good, excluding the shot of a Peapod billboard as the narrator describes the building as ‘close to professional services’)

As a web developer, I’m appalled.  I’ve built plenty of sites that didn’t age well, and I’ve built plenty of sites that had design problems.  This is not an example of either.  It’s a flashy site that’s meant to sell a product (an apartment) that in reality drove me away almost immediately.

How Computers Get to Sleep at Night

There are two good ways to iterate over an array in PHP.  One is the classic syntax found in some form in all modern procedural languages:

for ($i = 0; $i < count($colleges); $i++) { ... }

There’s also this straightforward variant, also found in a lot of languages now:

foreach ($colleges as $college) { ... }

Given these two loops, under no circumstances is the following acceptable:

$i = 0;
while($i != (count($colleges) - 1)) { ... $i++; ... }

Besides being unnecessarily verbose, this will also never terminate if the array is empty.  Eventually the server will get bored of counting up one integer at a time and forcibly kill the script, but that just means users will have to call me to fix it.

In conclusion, please don’t let student developers touch any more of my production code.

1… 2… 10!

Dear MSIE 7,

You just reported an error in my script, which reads:

Line: 121561571
Char: 4
Error: ‘_input’ is null or not an object
Code: 0

That’s a lot of lines of code.  I’d like to propose a deal.

I only wrote 3,507 lines of JavaScript for this application.  If I promise to debug all of my code, will you debug the remaining 121,558,064 lines yourself?  This arrangement seems entirely fair to me, since I really shouldn’t be held accountable for 121 million lines of code you just invented on the spot.

Thank you for your cooperation,
A developer who didn’t introduce any bugs just now.

That Tip is a Little Shifty

“Select multiple conversations at once – check the first, then press shift and check the last.” – GMail tip

Google, you are my hero.  This is such an obvious feature to have in a desktop application, and it never once occurred to me that it might be implemented in GMail.

Couched in Metaphor

When I walked into the lobby of my apartment building this evening two people were having a conversation.

What I heard:

“Yeah, we’ve got CAPTCHAs and everything.”

What was actually said:

“Yeah, we’ve got couches and everything.”

I was wondering all day what profession I’m in.  Now I remember.

I Are Smart, It Say!

From my MySQL configuration:

database                          (No default value)
delimiter                         ;
...
i-am-a-dummy                      FALSE

It’s that last one that seems a little odd.

(It’s really just an alias for safe-updates, which won’t allow you to write a statement like DELETE FROM my_table; that omits the WHERE clause.  I just enjoy that MySQL informs me I’m not a dummy.)

What Does rm -rf ~/* Do Again?

The following command reports the number of files in the 2006 directory, including files in all subdirectories:

find 2006 -type f | wc -l

The following command deletes all the files in the 2006 directory, including files in all subdirectories:

find 2006 -type f | xargs rm

When both commands are in your bash history (left over from when you moved the 2005 directory), you should probably be careful before hastily executing one.