Switch your Flickr login from Yahoo! ID to Google or Facebook

Flickr/Yahoo just added Facebook Connect and Google OAuth support to their sign-in, this is great, coz now I no longer needs a Yahoo! account to use Flickr. (I assume you all loathe Yahoo! as much as I do right?)

Here’s how to change your Flickr account from your Yahoo! ID to your Google or Facebook account:

  • sign into Flickr with your Yahoo! account if you’re not already logged in
  • go to http://www.flickr.com/account/transfer/
  • hit “use existing Yahoo! ID”:
  • Flickr: Transfer your account

  • Hit “sign in as a different user”:
  • Dock-26

  • Choose Google, or Facebook (if you must):
  • Sign in to Yahoo!

  • signin and authorize your Google or Google Apps email and password, or if you chose Facebook, you probably will see a familiar oauth authorization window requesting some permissions
  • Click the “Okay, do it” button:
    Flickr: Transfer your account

Now is the time to downgrade your AT&T SMS plan

I’ve always had the $30 unlimited family text plan with our iPhones, I’ve switched to using SMS replacement apps with my most frequently texted contacts. I used to average about 700 messages a month in the plan, but the past several months I’ve gone under 200. Paying $30 a month for SMS is pretty ridiculous, worse yet, when I text between my 2 lines in my family plan, it counts on each line, while it’s free to actually place a voice call to any AT&T subscribers. I believe voice calling uses more network resource than an SMS.

So this Monday I downgraded the family text plan to the 200 messages plan for $5, going from $30 to $10 total. Here are the apps I use to replace SMS, there are many more, but these 2 use your existing mobile number as your identifier, which makes them real SMS replacements and allows easy contacts discovery.

  • WhatsApp: popular in Taiwan for some reason, $1
  • KakaoTalk: popular in Korea, free app.

In addition, I’m a huge BeejiveIM user, it’s the best IM app and definitely worth the $10. I’ve also dialed down my SMS from Twitter with push notifications from Boxcar and the Twitter app. Boxcar notifications consistently arrive before Twitter SMS when I had both turned on.

Looks like AT&T will be discontinuing the $5 SMS plan, so if you’ve been procrastinating to downgrade, now is the time to do it.

Leaked: New ATT text messaging plans in preparation for Verizon iPhone | Gear Live.

Long Beach Cruisin [vid]

Long Beach Cruisin. from The Fly on Vimeo.

Some friends at DC Shoes made this amazing little video for the FA11 line. Since they have no interest in showing it to the domestic general public I’m uploading it here because I like it and it will embarrass Mark. Ha!

Starring: Mark Winn (and his Mino Denti)
Film by: Tobin Yelland
Edit by: Justin Smith

I used to love Skitch…

UPDATE (12/5/2010): With Skitch Plus, everything is awesome, definitely worth the $15/year. Pretty sure they looked at metrics/custdev to figure out what power users do and then they purposely made those things annoying with their new site and added Plus to make it awesome when you pay.

Preferences

Original post:

I’ve been using Skitch since very early beta, got all my friends to use it, I pretty much can’t work without it. I have about 1.5k images skitched on my current Mac.

I just want to get an URL to a skitched image as soon as I can, with Skitch, you have to upload, open the webpage, wait for the Flash to load, and copy the link to URL. Often time Flash will almost crash my browser in the process, and their new website makes this workflow even more annoying by hiding the share menu and adding a bunch of different copy-to-clipboard links that I don’t care about:
andrewng | skitch.com

It’s now at least 4 clicks and 10 seconds from skitching an image to getting its URL in my clipboard to share. The client app should be able to give me that with a single click.

I did try CloudApp, great idea, but I need to edit the image and Skitch’s editor is nice and simple.

One thing I will try is to symlink ~/Pictures/Skitch to my Dropbox, that way I just need to save the image in Skitch.app, and skip the whole web UI non-sense.

@beartheyorkie

I’ve been pretty busy with work these days so not much time shoot photographs or blog. Snowboarding season is almost here, cabin and passes all good to go for the season. Pretty stoked about the “triple whammy” this year. The house still got room for a few more shredder so let me know if you’re interested. It’s in SLT close to Sprout, so good if you ski/ride Heavenly, Sierra, or Kirkwood.

btw, Bear now tweets as @beartheyorkie (@iamthebear was taken by a bear), in case you need to follow more people.

jQuery form submit handling and inline onsubmit woes

jQuery’s event handling triggers in the bubbling phase, which is fine for most usage. I had to write some JavaScript to traps the submission of forms on any webpage, naturally, I wrote something like this:

$('form').each(function(e){
  $(e).submit(function(e){
    console.log("submitted!");
}

This works for most forms, but since we don’t have any control of what types of forms our users put on their sites, it doesn’t work in 2 cases: (a) when there is an inline onsubmit on the form tag, this is pretty common, the Feedburner email subscribe form does this, and (b) when the form is within an iframe on the page.

The fix for (a) is not trivial, I found out that the bind submit event is called after the inline onsubmit, so first thought was to put what I need to do on submit into a function, and prepend that in the onsubmit. However, this didn’t work as $(‘form#some-id’).attr(“onsubmit”, “blah”) didn’t set the value. So after a bit of experimenting, I ended up having to remove that attribute, but remember the contents of it and call it in an annon function at the end of execution, it looks like this:

$('form').each(function(i,e){
  var onsubmit = $(e).attr("onsubmit");
  if (onsubmit != null) {
    $(e).removeAttr('onsubmit');
    onsubmit = new Function(onsubmit);
  }
  $(e).submit(function(e){
    console.log("submit pressed!");
    if (onsubmit != null) onsubmit();
  })
})

Now on to finding a solution for the (b) iframe case.