iPhone Tip: Enabling WiFi in Airplane Mode

I’ve decided to leave my laptop at home for an upcoming trip to Europe, so I’ll be using my iPhone for Internet acesss. I looked at AT&T’s international data plans, but none of them look apealling, so I’ll be sticking with WiFi.

To make sure I’m not charged roaming fees I’m going to keep my phone in airplane mode, but the problem is that automatically disables WiFi.

Well, as it turns out, the workaround is painfully simple… just turn it back on (duh). The WiFi slider automatically toggles to off when you enable airplane mode, but you can turn it back on without disabling it.

On a side note, I wrote this entire post on the subway using WordPress for iPhone in offline mode. Pretty cool, huh?


AppleTV + Flickr Interestingness

UPDATE2: I no longer use my Apple TV, so this is no longer being updated. I have made the source code available on github for anyone who’s interested.

UPDATE: One change from the original… It now only selects photos with a Creative Commons license. This means there are less than 250 new photos each day. To maintain the 250 photo set, it adds all the new photos and drops the same number of the oldest photos. That way there are always approximately 250 photos. For example, if there are 30 new photos one day, they will be added and the 30 oldest will be removed.

When at home, I listen to most of my music through AppleTV. This means the TV is on a lot, so I’d like an interesting screen saver. Unfortunately, AppleTV falls a little short in this area. It can rotate a set of photos as the screen saver, but you can only choose from a small group of Apple photos, your own iPhoto collection, or photos from a specific Flickr account. I like my photos, but don’t want to look at them all the time, and I had a hard time finding a Flickr user with a large enough album to keep things interesting.

What I really wanted was a way to display the Flickr interestingness collection. Interestingness is a pool of, you guessed it… interesting photos, that changes all the time. Unfortunately, since AppleTV only provides the ability to link to specific Flickr accounts, you can’t access this dynamic collection.

After searching for a solution, and inspired by this post, I finally came up with workaround. It’s a script that queries photos from interestingness via the Flickr API, then adds them as favorites to a special Flickr account I created called dailypool. The script runs every night, so there are always fresh photos. Since this Flickr account can be viewed by anyone, you can easily link to it on your own AppleTV.

Here’s what you need to do to set it up. This assumes you’re using AppleTV v2.

Add the dailypool Flickr account:

  1. On your remote, press Menu to get to the main menu
  2. Select Photos in the left menu, then Flickr in the right menu
  3. Select Add Flickr Contact, then type dailypool using the onscreen keyboard

Set dailypool favorites as your screen saver

  1. Press the Menu button on the remote until you get back to the main menu
  2. Select Settings in the left menu, then Screen Saver in the right menu
  3. On the Screen Saver screen, scroll down to and select the Slideshow menu
  4. On the Choose Photos screen, select Flickr, then select dailypool, then favorites
  5. Press the Menu button on the remote until you get back to the main menu

That’s it! Next time your AppleTV goes into screen saver mode it should display interestingness photos that will be refreshed every day. Enjoy!


Anonymization Through URL Shortening (Or Not)

For some strange reason I was thinking about URL shortening this morning, and how a nice side effect of it is anonymization. When I click a shortened URL the browser is first sent to the shortening service (for example TinyURL), which then redirects it to the actual destination. So in theory, the referrer would be the originating page URL on the first request and the shortening service URL on the second. Right?

As it turns out that’s not the case. I tried this with DwarfURL, EasyURL, Fhurl, Memurl, Redirx, SnipURL and TinyURL and in all cases the referrer at the final destination was the originating page. I haven’t researched it further, but I would imagine it’s because browsers (at least Firefox) don’t treat a redirect as a referral.

So long story short, you can’t count on URL shortening for anonymization.


Automatic My Coke Rewards Code Entry

Until recently I had a large backlog of My Coke Rewards points. In addition to all the codes I collected myself, I also received quite a few from my friends and family (Thanks!). The problem is that the site only allows you to redeem 10 codes per day, and I had a hard time remembering to enter them every day.

To help, I created a Ruby script for automatically processing codes. Every day, it reads 10 codes from a text file, then submits them to mycokerewards.com and logs the result. That way, I could just add all my codes to a file and it would take care of the rest.

I’ve provided the script below, as well as instructions for configuring it on a Mac (should be similar on Unix/Linux). If you’re using Windows, you can do the same thing by downloading Ruby and setting up a scheduled task. This isn’t the most user-friendly process, so a little development and/or command line experience would be helpful, but if you don’t have that you should be able to work it out by stepping through the instructions. Good luck and happy redeeming!


iTunes Hanging on Syncing Bookmarks

This morning, iTunes started hanging at “Syncing Bookmarks” when syncing my iPhone. Several tries yielded the same results, even when I left it syncing for over an hour. A quick Google search led me to this iPhone Atlas page which said you could fix the problem by deleting ~/Library/Application Support/iSync and ~/Library/Application Support/SyncServices but warned that you may end up with duplicate data.

Instead of deleting them, I just moved them to my Desktop so I could restore them if necessary, then tried to sync again. That fixed the problem and I didn’t notice any duplicates either on my computer or the phone. After the successful sync I checked ~/Library/Application Support again and noticed that iSync had been recreated, but SyncServices was not. So I dropped my original SyncServices back in and everything still works fine.

To summarize, it seems that the problem can be solved by deleting ~/Library/Application Support/iSync, then letting the iTunes sync recreate it.

Tagged as:

iPhone Webapps Directory

I’m sure this has been brought up many times before, but I can’t for the life of me figure out why the iPhone webapps directory (which is bookmarked by default on all iPhones) isn’t an iPhone optimized page. Not only is it non-optimized, it’s more difficult to navigate than most. Apple is (or was) encouraging developers to iPhone optimize apps, so it just seems obvious that they would do the same for their own.

On that topic, the iPhone 2.0 API and the new App Store have kind of overshadowed the web app directory. As a new iPhone owner, I just checked it out for the first time. It contains some good stuff; you may want to check it out if you haven’t already. Just remember to do it on your desktop.

Tagged as:

Twitter Developer Interview

There’s a short interview with Alex Payne, one of the Twitter developers over at radicalbehavior.com. He’s a Ruby / RoR developer (and big fan), but points out how it falls short for high traffic applications.

A few interesting quotes:

All the convenience methods and syntactical sugar that makes Rails such a pleasure for coders ends up being absolutely punishing, performance-wise.

It’s also worth mentioning that there shouldn’t be doubt in anybody’s mind at this point that Ruby itself is slow.

All of us working on Twitter are big Ruby fans, but I think it’s worth being frank that this isn’t one of those relativistic language issues. Ruby is slow.

Ruby is a great language, but this is just further proof that you need to take a close look at your requirements up front, then pick the best (not necessarily the coolest) tool for the job at hand.