rack-modernizr 0.0.2 released

14 Nov

With the ever increasing proliferation of browser capabilities, I’m a fan of the Modernizr JavaScript library. Modernizr is:

… a small and simple JavaScript library that helps you take advantage of emerging web technologies (CSS3, HTML 5) while still maintaining a fine level of control over older browsers that may not yet support these new technologies.

Modernizr uses feature detection to test the current browser against upcoming features like rgba(), border-radius, CSS Transitions and many more. These are currently being implemented across browsers.

What’s problematic about this yummy data is that it is only available client-side.

Well, it was only available client-side until the release of jamesgpearce‘s super cool modernizr-server PHP library.

So now what’s problematic is that this data is only available client-side — or if you are using PHP.

For Rubyists, I created rack-modernizr, a Rack middleware inspired by modernizr-server but leveraging the powerful Rack programming model.

rack-modernizr makes Modernizr data available on the server from a Rack environment variable:

<%= request.env['X-rack-modernizr'].inspect %>

It performs this magic trick by checking to see if the server know about the modernizr data yet, and injecting some javascript into the body tag if not.  The javascript sneaks the modernizr data up to the server on the back of an image tag.

This morning I released version 0.0.2.  Its my first ruby gem, the first open source project I started personally, and I am very excited about it!

Insanely awesome iPhone vs. Android vs. Blackberry comic

14 Nov

This C-Section Comics bit on iPhone vs. Android vs. Blackberry users had me in stitches:

iPhone vs. Android vs. Blackberry Users

I also took a stroll through their archives and found a few gems, like this one on Facebook.

(hat tip: TechCrunch)

My Gmail keyboard shortcuts stopped working

11 Nov

I’ve been an avid user of gmail’s cool kid keyboard shortcuts.

A couple of days ago these mysteriously stopped working, knocking my reflexes off track.

I realized this morning that the culprit was the Vimium plugin for Chrome, which was stealing keypresses like ‘J’ and ‘K’.  Vimium’s settings page allows you to turn off the plugin for specific pages based on a string match (in this case “http*://mail.google.com/*”).

Back to normal now!

Disable autocorrect in zsh

6 Nov

I’ve been using oh-my-zsh for a little over a year.  Some days I find it to be super crazy awesome, other days not so much.

On the items that’s been sticking in my craw is the theoretically helpful autocorrect feature of zsh.  If you are reasonably precise typist (I am), and you use a lot of unusual scripts and commands (I do), chances are you’ll be incorrectly nagged by the autocorrect feature several times a day.

The surgical fix is to manually disable autocorrect on a per command basis.  For example, “heroku logs” is helpfully incorrectly autocorrected to “heroku log.”

% heroku logs

zsh: correct ‘logs’ to ‘log’ [nyae]?

Gah!

I can disable autocorrect for the heroku command only by adding this line to my ~/.zshrc.

alias heroku=’nocorrect heroku’
Bleh.
Honestly, I’d rather just call the whole thing off.  So I went into my ~/.zshrc and inserted the following line after the oh-my-zsh startup script.
source $ZSH/oh-my-zsh.sh
unsetopt correct_all
Done.

Amazon RDS announces support for Master/Slave Replication

5 Oct

Today Amazon announced support for Read Replicas, an implementation of MySql’s Master Slave replication for AWS’s RDS (Relational Database) service.

You can now create one or more replicas of a given “source” DB Instance and serve incoming read traffic from multiple copies of your data. This new database deployment option enables you to elastically scale out beyond the capacity constraints of a single DB Instance for read-heavy database workloads. You can use Read Replicas in conjunction with Multi-AZ replication for scalable, reliable, and highly available production database deployments.

This is fantastic news for anyone looking to build a massively scalable data platform on top of EC2.

w00t!

Respect the Web 2.0 Grind

4 Oct

Today’s Quote of the Day is from TechCrunch’s If Web 1.0’s Kryptonite Was the Bust, Web 2.0 Kryptonite Was the Grind

You can’t build a huge business with less than 20 million monthly uniques and getting there is a brutal day-in, day-out grind of producing great work, making the site as intuitive as possible and continually finding reasons to remind people you are worth 5 minutes of their day everyday.

Calacanis Nails It on Apple’s Ping Network

3 Sep

Jason Calacanis totally nails it in the most recent JasonNation.com newsletter.  He wraps us Apple’s new Ping service in an entertaining metaphor based on Akira Kurosawa‘s classic Yojimbo.

What if http://PING.Apple.com become your social network in 2011? What if that social network will be built off of:

  1. Music preferences from Ping/iTunes
  2. Video game preferences and rankings from your iPod, iPad and Game Center
  3. Photos from your iPhoto library
  4. Your social graph…err, “circle of friends”…from your iPhone address book
  5. Your calendar from your iPhone

In other words, Apple could integrate social networking into every single product line and Facebook will be left wondering how on Earth they lost their two most engaging businesses (photos and games) so quickly.

This is Jason’s best article since I signed up for his mailing list a year ago.  He closes the piece with a Recommendations section that is classic Calacanis: Apple should buy Twitter (10:1), Apple should buy Zynga (7:1) and Facebook should buy RIMM (3:1).

I found this article stolen and shamelessly posted online on this Posterous blog.  Theft of copyright aside, this is a great place to check out Jason’s writing.  If you like the article, be sure to sign up for the weekly newsletter at JasonNation.com!  I look forward to the newsletter each week.

Update:

Link to evil Posterous blog removed at Jason’s request.

Top Align Form Labels For Fun and Profit

2 Sep

There’s a fascinating article over on UX Movement on why it’s easier for users to fill out forms where the labels are aligned over the top of your fields.

Top aligned labels have proven to be faster and easier to fill out than left or right aligned labels. This is because top aligned labels require half as many visual fixations than left or right aligned labels. Top aligned labels also allow users to move down the form in one visual direction, instead of two visual directions with left and right aligned labels. This makes filling out forms quicker and easier.

I’m going to pay attention to this as I wander about on the web this week.

My Life with Droid

31 Aug

10 things I Love about my Droid X (and 5 reasons I miss my iPhone 3G)

So I’ve been rocking the Droid X for a couple of weeks now.  These are a few of my favorite things:

1. Completing Calls

The title line says it all.  Calls on the Verizon network have been rock solid.  In the past two weeks I’ve experienced zero drops – except when I’ve been talking to iPhone 4 users.

To be fair, I’ve experienced two unexplained problem calls on which the audio from one side audio dropped out while the other side could still hear.  For those who were keeping score at home, that’s a dramatic improvement from two or more dropped calls per day with AT&T.

2. Swype

Swype in ActionSwype is a touch screen text input mechanism that allow you to draw words by sliding your finger from letter to letter.  Sounds neat?  It turns out to be more effortlessly wonderful once you get your hands on it.  Trace the letters of words you want to type without lifting your finger. 

Unlike other alternative text entry systems, I was productive immediately using Swype.  Major win.

3. Obscenely Large Screen

TDroid X vs. iPhone 4he Droid X’s 4.3 inch screen is ridiculous.  There’s really no good reason to tote around a phone that has a screen this large.  Except that it’s awesome.  I’m already spoiled to it.

As they say: there are two kinds of smartphone users.  Size queens, and liars.

4. Customization

Want to use up 1/4 of the real estate on your home screen with a calendar widget that displays your next 4 appointments?  There’s a (Motorola) app for that.  It helps me keep upcoming to dos in mind when planning out my day.  Want a weather app who icon changes to show today’s current temperature and conditions?  There’s a (Motorola) app for that too.

There was a lot that the iPhone wouldn’t let you do, because a hypothetical rogue app developer might do something rotten with it.  Unfortunately studies show that there are rogue app developers doing something rotten with the Android.

Be careful out there, kids.  For every incredible Android app that does something wonderful that would never be possible on the iPhone, there are two apps that do something horrible that would never by possible on the iPhone.

5. Automation with Tasker

The Tasker app takes all of the Android’s customization bells and whistles and exposes them through a powerful macro language.  They’ve even got a wiki full of recipes like muting the phone during calendar meetings, launching the music app when headphones are inserted, and changing the home screen wallpaper image according to the weather.  I use Tasker to disable the screensaver when using the Maps and Navigation applications and turn down notification sounds at night.

6. Camera

The Droid X takes beautiful pictures, and sports a flash for low light conditions.  The picture quality is a tremendous improvement over the iPhone 3G (although merely competitive with the snazzy new iPhone 4).  The Droid X’s camera app gives you the option of automagically uploading all of your photos to Facebook.

Downsides?  Pictures with flash are prone to excessive red eye, and the photo browsing application is weak.

7. USB Charging

A USB phone charger that uses a standard USB tip?  Great idea!  (Too bad my house is already littered with iPod cables)

9. Flashing Green Message Light

Steve Jobs would have you think that a phone notification light nagging you about your unread messages is the 21st century equivalent of the <BLINK> tag.  And to tell you the truth, at first I felt liberated by the iPhone’s mediocre alerts system.  I get a lot of SMS messages that aren’t urgent, and it was nice for them to drift into the background.  Not having these notifications was the critical boost that helped me form the discipline to focus my daily communications time into Email Dashes.

But there were definitely times when the iPhone was a bit too meek, and I was a bit too slacks-idasical about checking my messages.  In my iPhone years I missed some important texts.  Now that I’ve mastered Inbox Zero (most of the time), the blinking green notification light has become an appreciated tool rather than a slave driver.

10. I still have an iPad

Yes, I do miss the iOS from time to time.  Thankfully, at the end of the day I still have my iPad.  When I want a device that "just works," I can always get out my big, bulky, but beautiful iPad.

But when I’m rocking the iPad, I sure do miss Swype.

And Five Biggest Reasons I Miss My iPhone

5. Lack of a Screenshot App

I never thought I’d be missing the screenshot feature on the iPhone.  I only used it a few times on my 3G.  But I felt its absence in the process of writing this review. 

Android owners really only have two (preposterous) options for taking screenshots:

  1. Install the Android SDK and work through a painstaking process or
  2. Root your phone 

Excuse me, was that second option ‘root your phone?’.  Really?  Gah.

4. Push Notifications

I was flying for business last week, and my gate was changed at the last minute.  Let me tell you, I really missed FlightTracker Pro’s push notification feature when I strolled up to the wrong gate in the wrong terminal.  Not having push notifications sucks.

Yeah, yeah, I know that Android is getting Push Notifications in the Froyo version that is rumored be hitting Verizon Droid X phones as early as next week.  That’s great news, but it will be months before there is decent app support after the feature launches.

3. Audio Quality

The Droid X speaker is weak and tinny.   There’s not much more to be said about this point, except that this can be fixed by using a decent headset.

2. The App Store

Even the most rabid Android fans will readily admit that the Android Marketplace is a steaming pile of dino dung.  Google, I’m talking to you here – how do you find me the needle in the entire Internet haystack when I’m searching from my desktop, but you can’t lead me to a decent application on your phone, in your own marketplace?

1. Unwavering Great Design Standards

Android was created by brilliant programmers, for programmers.  The iPhone was created by brilliant designers, for everyone else.  My Droid X is a beautifully executed, fully expressive, massively functional device.  But it has some seriously rough edges.

In effect, I’ve traded “it just works” for “this phone could do anything that I want.”  And as someone who hates to be told “that can’t be done,” it’s a tradeoff I can live with.

Do Fanbois Dream of Electric Sheep?

17 Aug

I loved you iPhone.  I really did.

I remember when I first beheld your simplistic beauty.  Text input unencumbered by the magic of “cut and paste.” Ambling EDGE downloads.  Didn’t even have MMS.

But you bloody well worked, didn’t you?  In the beginning you were but a simple phone, and you did simple things perfectly.  Your old EDGE iPhone model was a good phones, and provided the first mobile browser that was worth a damn.

And I sang your praises.  My poor wife put up with my yammering evangelical delusions.  The iPhone was my first Apple product, and I love it so much that I bought more.  iPods, MacBook Pros, Mac Minis.  Backed up by Apple’s impeccable service, I went on a binge that lasted for two solid years.

Verdict: iPhone OS 1.0 – good phone, incredible portable Internet device.

Then came the App Store and its associated a delightful frenzy of activity.  iPhone, you changed my world.  You turned this obligatory brick that I must carry around in my pocket into an endless source of delight.  Apps are fun.

After enduring my endless chatter about Apps, my beloved wife picked up an G1 Android phone of her own.  It was a neat little toy, but couldn’t hold a candle to Apple’s design of great beauty.

Verdict: iPhone OS 2.0 – good phone, great portable Internet device, game changing hand held computer.

Ah, but with great power comes great responsibility.  And there is something debilitating about a device as powerful as the iPhone coupled with AT&T’s 3G network.  Calls began dropping with ever increasing frequency.  And really, what use is a phone if it can’t complete a call?

Well, at least I still had great apps, and my experience with the lady’s Android indicated that Mobile Safari still blew everything else out of the water.

Verdict: iPhone OS 3.0 – mediocre phone, decent portable Internet device, best of breed hand held computer.

And then came the dark times.  I was a fool, and recklessly upgraded to iOS 4.  This was my first bad experience with an Apple product, and it has been an unholy mess.  I won’t bother itemizing the multitude of problems with this configuration.  Let’s just say the evangelizing has been curtailed.

Verdict: iOS 4.0 (on iPhone 3G hardware) – crappy phone, unworkable portable Internet device, unusable hand held computer.

And so today my Droid X arrived.  It’s sleek.  The screen is humongous.  And it is a pretty good phone.  I think the level of polish has improved significantly since the Android G1, but is still not up to iPhone standards.

But it works.  Consistently so far.

I still miss my trusty iPhone a bit.  And if Apple releases an iPhone 4 for Verizon, I might give it a try.  But I’ll be darn well sure to give it a few months after the release to but sure that others are having a good experience.