Visual Bootstrap Colors

Add some color to your Twitter Bootstrap customization experience with my Visual Bootstrap Colors Chrome Extension. Visual Bootstrap Colors automatically detects color values in the Customize Variables section of the Twitter Bootstrap customization page and uses them as the color of the corresponding label. All legal CSS color formats are supported (#, rgb, hsl, named colors) as well as several LESS color variable names. Feedback is welcome!

The Dead Projects Graveyard

I don’t know a developer that doesn’t have at least a few derelict, dead, or otherwise abandoned projects laying around (like, oh say, not updating a blog for two years). We all have our reasons to drop a project – maybe it was a project you finished but never kept updating, maybe you learned just what you needed to know without finishing the project, maybe you found another piece of code that did what you needed or somebody beat you to the punch, maybe you just lost interest in what you were working on, or maybe you just gave up on it or had more pressing things to do.

Whatever the reason, we all have those moments where we look back at code we wrote however long ago and cringe. Of course, it probably seemed perfectly good code at the time. But, if you look back at your old code and it looks perfectly fine you’re either Douglas Crockford or you’re not learning anything (or possibly both). Maintenance and refactoring are normal parts of the software development life cycle and help us become better developers. But dead projects aren’t part of that life cycle, and they seldom get any better.

Looking back at your graveyard of dead projects can be a scary experience. You might be mortified of past mistakes you unknowingly made, but if you know better now then that’s a good thing. And maybe, just maybe, you can learn still something from those projects. You might even find an old familiar favorite ready to be dusted off and have you breathe new life in it. Yay Zombies!

I’ve decided to give refactoring the dead a try, starting with an old favorite, a Lost countdown clock I put together sometime probably during the second season of Lost (roughly 2006). The JavaScript for the countdown clock, which counts down from 108 minutes unless you enter the reset code, is now on github. There really isn’t a need for a Lost countdown clock anymore, but I’m planning or refactoring it anyway, and may make a countdown clock jQuery plugin out of it.

possessionlessness mofongo

Google recently updated its search results page, beefing up the left column and adding other features.  For a while now, search results have been returning the top two results for “Did you mean…” when searching for many combinations of obscure, misspelled, and odd forms of words.  In the newest redesign, the unstemmed results for the original search for these types of words are now listed below the “Did you mean..” results.  A nice touch as it gives a view of the unstemmed results without having to use the ‘+’ operator.  Result counts have been changed, too, showing just a count of results and the time it took to run the query (i.e. About 839,000 results (0.37 seconds)).  Nice and simplified, But, it breaks Unthunk, so whacking is offline for now until I can update the code.

Update: Google’s move to using JavaScript to retrieve search results, while making Google much more robust and responsive, means Googlewhacking at Unthunk has been permanently retired. If you’re feeling nostalgic, you can still view the thunklist and stats at http://whack.unthunk.com.

Googlewhacking is dead. Long live Googlewhacking!

Back in November, Google made some changes that effectively killed Googlewhacking at Googlewhack and Unthunk.  This past week I heard from a few old Googlewhacking friends lamenting the loss of this game.  Well, Googlewhacking lives again!  I’ve removed the definition link checking from Unthunk after considering a few other approaches to Google’s changes.  Since you’ll never see definition links in non-idiom multiple word searches, it seemed fair to remove this restriction from the game.  This opens up the thunklist to just about any “word” you can think of, real or not, which could make for some interesting whacks.

I See What You Did There

So it occurred to me this afternoon after reading several  iPad jokes on Twitter and watching an old Mad Tv  iPad comedy sketch that Apple must have seen the this coming and named its tablet the iPad to cash in on the instantly memorable name via viral marketing of bad jokes, even if it runs the risk of brand dilution of the iPod:

Apple Tablet Development Team Member 1: “We need a good, catchy name for our tablet, something that will really get people talking.”

Apple Tablet Development Team Member 2: “Hmm, Apple plus tablet equals Applet?”

Apple Tablet Development Team Member 3: “But where’s the ‘i’ in that?”

Apple Tablet Development Team Member 1: “iApplet? sound like an ointment for pink-eye.”

Apple Tablet Development Team Member 3: “Ha ha!”

Steve Jobs: “Lame. Why am I paying you guys again?”

Apple Tablet Development Team Member 1: “How about iReader?”

Steve Jobs: “That just channels Ralph Wiggum’s ‘Me fail English? That’s unpossible?’”

Apple Tablet Development Team Member 2: snickering “Let’s call it the iPad”

Apple Tablet Development Team: laughing followed by awkward silence

Steve Jobs: “Yes.”

Apple Tablet Development Team: Silence

Apple Tablet Development Team Member 3: “Uh, but won’t people make jokes like you can only use it once a month?”

Steve Jobs: “Yes.”

Apple Tablet Development Team Member 1: “Or call it the iPon?”

Steve Jobs: “Yes.”

Apple Tablet Development Team Member 2: “iPad. Really?”

Steve Jobs: “Yes.”

Apple Tablet Development Team: confused silence

Steve Jobs: “Don’t you people have marketing degrees?”

Apple Tablet Development Team: more confused silence

Apple Tablet Development Team Member 1: “Uh, yes?”

Steve Jobs: silence

Apple Tablet Development Team Member 1: coughs and clears throat

Steve Jobs: “Exactly. It will be a viral hit.”

Apple Tablet Development Team: “Ooooooooh!”

Apple Tablet Development Team Member 2: “So, we’re naming it the iPad because of the viral marketing opportunity of using bad jokes to make it an instantly memorable name?”

Steve Jobs: “Yes.”

Looks like the joke’s on us. Well played, Apple.

It’s Dead, Jim

I just got an email from long-time Googlewhacker Will H that dictionary links are no longer appearing in some Google search results.  Single words are linking in some instances but in combination they are not.  For example, a search for “kafkaesque” links to a definition but a search for “kafkaesque nightclubby” does not.

I checked over at Googlewhack to see if Gary had any news on this.  According to Googlewhack “Late 04 Nov 2009, Google stopped providing definition links for public searches under certain conditions. That effectively broke Whack — which could be fixed — but similar problems occur every few months, and often are corrected by Google.” That’s the most recent update at Googlewhack, so it looks like it’s been broken since the beginning of November.

A quick Google search turned up an explanation.  About the time Google rolled its new live search it also changed the way it links words to definitions so that only single words and idioms are linked to definitions.  Additionally, the dictionary links are now pointing to definition pages on Google instead of answers.com.  Since multiple search terms no longer link, unthunk (and presumably Googlewhack) cannot validate whacks by checking for links when checking that the pair of terms returns only one result.  Link checking could be removed altogether or moved in single word score checking, but the former would change the rules and the latter would require additional searches.  As it is now, single word searches to get the counts per word are not performed unless pair checking show both are linked and only one result.

So for now, it’s dead, Jim.

First Impressions of Foursquare

Geolocation mobile app foursquare recently launched service into the Raleigh Durham metro (among several other cities) much to the delight of the local social media scene.  I’ve been trying it out on my iPhone and think it’s fun but not quite ready for prime time.  Like many other mobile users, I’ve been using Brightkite as my primary location-based mobile app.  Foursquare has some interesting and engaging features that Brightkite does not:

  • Badges - The more you check in, the more badges you can earn.  Think of them like the stickers people used to put on their suitcases when traveling around the world.
  • Become the Mayor – Check in the most times at a location and become the mayor.  You’ll get a cool crown icon and bragging rights about how much time you are spending somewhere.  Also, some venues (looks like mostly just in NY for now) are offering special deals/discounts for their foursquare mayor.
  • Push notifications – I like this feature a lot, but prepare to be bombarded if you have a lot of friends and/or your friends check in a lot (you can turn it on/off as needed),  like when @dgtlpapercuts and @waynesutton are fighting for the top spot on the leaderboard.
  • Leaderboard – You earn points every time you check in (bonus points for adding a new location and multiple check-ins per day), and whoever has the most points tops the leaderboard! A winner is you!
  • To-Do Lists – Really like that burrito you had for lunch?  Add a To-Do / Tip which is basically a note for other users about your experience/thoughts on a place, a la “OMG the burritos here as as big as your head!”  Looking for recommendations  on the area? Check the local To-Do / Tips for ideas.
  • Adding Locations – I have mixed feeling on this one, but it’s implemented in a positive way.  Foursquare allows users to enter locations into the foursquare database.  This means less work on behalf of foursquare as they can rely on users to populate their system.  Doing so can be tedious if you don’t have the address readily available, but you get bonus points for adding locations.  This also allows for the newest of the new locations to be added assuming foursquare users are hip to happening places.  The drawback is that foursquare is allowing users to populate their database, which, besides the bug mentioned later on, means duplicate locations, and false/erroneous locations.  I haven’t personally tried any SQL injection but I sure hope foursquare is using protection.

But, foursquare also comes with some annoyances:

  • Multiple Location Bug – As of this writing, there are a some issues with adding and choosing locations.   Location names are unique in a region, meaning that once “Starbucks” is entered with a particular address then if you check-in at a different “Starbucks”  (say in the neighboring town) the previously entered address is used.  Thankfully, there is a fix in the works for this which will allow locations to have the same name and users to choose which location they are at for places with the same name.
  • Splash Screen – I’d like to be able to choose a foursquare picture for my splash screen.  I don’t know about everyone else, but my default splash screen is the foursquare girl with the purse.  I’m a dude and I don’t own a purse.
  • Adding Friends from my iPhone – I have three choices for adding friends from my iPhone: scan my address book, lookup by phone number, or find twitter friends.   These are all nice but how about showing me people in my region or my friend’s friends?
  • Server Crash – This may have been a one time occurrence or a sign of growing popularity vs. capacity, but a few nights ago foursquare was throwing postgres database errors.  Cleared after a few hours and I’m hesitant to even mention it, but I hope a failsquare isn’t on the horizon.

In some ways, foursquare reminds me of Twitter-alternative Plurk in that Plurk and foursquare use public rewards for interaction (Plurk uses a Karma system while foursquare uses points/leaderboard, badges, and mayorship).  Peer pressure and competition are a powerful motivators.  However, they can also be deterrents if the rewards seem to unobtainable.

Maintaining karma in Plurk requires posting every day but not posting too many posts, gaining friends and fans, and sparking conversations in your posts.  This might not sounds to bad at the outset, but lets face it, most of us aren’t interesting on a daily basis sparking conversations and spawning new friends.  If we were, then everyone would be friends with everyone by now and we’d spend all our time talking about all the interesting things we each have ti say every day.  So, Plurk karma is too hard, and I think that this is a reason some people gave up on the site.  It’s certainly the main reason I quite using it despite some of the other cool features.

Foursquare’s rewards systems walk the dangerous line that Plurk’s Karma does, but instead of one large rewards system, it’s broken down into smaller objectives, more of a mini-game approach.  Once the novelty wears off, it will be interesting to see foursqaure’s rewards remain as motivators.  Overall, it’s a nice addition to location-based apps, but I can’t help but wonder if foursquare is to BrightKite as Plurk is to Twitter.

http://foursquare.com/

NC Amazon Associates Program is Dead

I just got an email this morning from the Amazon Associates Program that they are closing Amazon Associate accounts in NC due to pending legislation:

We are writing from the Amazon Associates Program to notify you that your Associates account has been closed as of June 26, 2009. This is a direct result of the unconstitutional tax collection scheme expected to be passed any day now by the North Carolina state legislature (the General Assembly) and signed by the governor. As a result, we will no longer pay any referral fees for customers referred to Amazon.com or Endless.com after June 26. We were forced to take this unfortunate action in anticipation of actual enactment because of uncertainties surrounding the legislation’s effective date.

Please be assured that all qualifying referral fees earned prior to June 26, 2009 will be processed and paid in full in accordance with our regular referral fee schedule. Based on your account closure date of June 26, 2009, any final payments will be paid by September 1, 2009.

In the event that North Carolina repeals this tax collection scheme, we would certainly be happy to re-open our Associates program to North Carolina residents.

The North Carolina General Assembly’s website is http://www.ncleg.net/, and additional information may be obtained from the Performance Marketing Alliance at http://www.performancemarketingalliance.com/.

We have enjoyed working with you and other North Carolina-based participants in the Amazon Associates Program, and wish you all the best in your future.

Best Regards,

The Amazon Associates Team

Put the Clear Button Back in Datepicker

As jQuery UI rapidly approaches version 1.6 (currently release candidate 6), a list of some of the changes underway can be found on the jQuery UI Development & Planning Wiki. It will continue to offer a fantastic array of widgets, interactions, and effects as well as themeroller, an awesome tool for creating custom UI themes. However, dig into the wiki and you will find a list of thing being removed, including the clear button in Datepicker:

“clear” button – seems like overkill since a user can simply clear out the field value manually. Plus, clearing the input would make the input invalid if the field is required. It’s best to encourage users to pick a date, not clear the field.

I think both of the last two statements are presumptive. Yes, an empty date field might be invalid, but it can also be perfectly acceptable. For example, a form may have start and end date fields. On the back-end, if there are valid dates in both fields, then all data within this date range would be returned: Show me all foo between two specified dates. However, leaving one or both of these fields blank may signify an open-ended search: Show me all foo up until the end date, or, show me all the foo since the start date, or, show me the foo!!! The back-end should absolutely be validating form data. It’s best to allow users to pick any data valid for a given field. I don’t have a problem with the front-end doing additional validation. I think allow developers a mechanism via Datepicker to choose what values are valid would be a better idea than assuming and empty field might be invalid.

As far as the first statement, not having a clear button makes it impossible to remove a date from a readonly field. Datepicker can easily set a readonly field but not clear it. So why would you want to change a readonly field? Despite the fact that the web has become ubiquitous, many people still are in the habit of double-clicking everything: hyperlinks, inputs, buttons, etc. Couple this with web browsers that keep previously entered values in input boxes and you end up with date fields that display Datepicker on the first click of a double-click and then a list of previously entered values over the top of Datepicker on the second click of the double-click. Setting an input to readonly prevents the history from appearing on a double-click and thus from interfering with Datepicker. Now, this could possibly be a semantic no-no and a violation of accessibility, but it does happen. Having a clear button makes it possible to clear a readonly field.

Datepicker is part of jQuery UI: it is a user interface for dealing with date fields. Whatever a user can validly do with a date field, Datepicker should provide a useful interface for doing so. Put the clear button back!

headcheese and mukluks