-
A Few Things…
Hey, you! This tumblelog’s been quiet for a minute, but I recently made a couple updates that are worth touching on.
Ads by Yoggrt
Not one for ads in general, I’ve caved in and joined the Yoggrt ad network as a publisher. Really, though, I don’t see it as “caving in” because they’re some of the classiest around — small (160x90 pixels), unobtrusive, well-designed, and the advertisers tend to relate in some way to the content I publish. I think I’ve also managed to integrate it into the sidebar pretty well, too.
New Web Clip Icon
With the arrival of the iPhone 4 (and the iPad, for that matter), my old 57-pixel Web Clip icon wasn’t looking too hot my home screen. So, I whipped up a new 114-pixel icon, uploaded it, and tested it out. Quick and easy, right? Unfortunately, no. The new icon was showing up crisp and clear on the “Add to Home” screen, but once it was added to the home screen, it was blurry and pixelated. Thinking the apple-touch-iconmeta tag was wrong or outdated, I investigated further only to find jQTouch was still handling everything correctly. Does the icon have to be in the root directory? Nope. Looking around, I noticed some people were using 129-pixel icons; so I scaled mine up, but that didn’t fix the problem either.Thinking I was going crazy, I finally came across a post by Walt Dickinson mentioning the same problem. Apparently, if you’re using
apple-mobile-web-app-capablemeta tag (which I was) to make your web app look more like a native app (fullscreen, no Safari chrome), there’s a bug in iOS4 that distorts the icon on the home screen. Ugh, really? Nevertheless, I removed the tag in favor of a crisper looking icon. So, until they fix it, it’s basically just a bookmark to the mobile site.Tidying Up
Aside from these, I’ve cleaned up a couple other minor things:
- Updated social network links: removed Facebook and Brightkite, added Dribbble and Gowalla
- Recent authentication changes to the Twitter API caused the ‘recent tweet’ box on my About page to return blank — it’s fixed now
- Pushed the logo a little to the left
- Updated my @font-face declarations to make them more compatible
- Changed the two photos of me to ones taken this year
And that’s it. I’m looking forward to being a part of Yoggrt network for a couple reasons, but mostly because I’m hoping it reinvigorates my posting habits, particularly with more original content. We’ll see.
-
FontFonter
This is a wonderful tool. Enter a URL and replace its fonts with any of FontFonts web fonts. Hmm, this site looks rather nice with FF Dagny and FF Meta Serif replacing Helvetica and Georgia.
Kinda diggin’ my site with FF Kievit Web.
-
Louis Harboe has recreated the iOS4 icons in Pure CSS. These are incredible, and totally resolution independent. (via webkitbits)
-
Getting a large, diverse group of people to agree […] means the designer has to be a strategist, psychiatrist, diplomat, showman, and even a Svengali.
-
A promotional product for audio firm, GGRP, the record jacket transforms into a record player that is manually operated with a pencil. Be sure to take a look at the accompanying 50s-style instructional video, too. Designed by Grey Vancouver. Now, how can I get ahold of one?
-
Extension.fm is really quite awesome. Once installed, when you view a page (or your dashboard) that contains mp3s, they get added to your library (sortable by blog, artist & album).
Another great feature is that whenever you play an song on a page, it gets played in the plugin (and not the page) meaning you can close that page, or go elsewhere and the song won’t get interrupted (probably my biggest gripe with web-based music).
My only feature request would be shuffle functionality. If you need some fodder to fill your library, stop by ♪.tumblr.com & eplp.
-
Driver’s Seat
Growing tired of my current crop of wallpapers, I set out to create something non-distracting and easy on the eyes, and that I could leave up for a while and not get burnt out on. So far, I’m about one month in, it’s still up and I’m not yet tired of it — your mileage may vary. Named after those perforated, breathable seats found in many automobiles, here’s Driver’s Seat:
Included are both Apple-branded and plain versions in the following sizes:
- 1920x1200 (Cinema Display)
- 1400x900 (15” MacBook Pro)
- 1200x800 (13” MacBook [Pro])
- 320x480 (iPhone)
-
Whatever work you do when you are procrastinating from other things is probably what you should be doing for the rest of your life.
-
Optimized for Small Screens

Before launching this site, I had plans to create two alternate optimized versions: one for iPhone, iPod touch, and devices that run Android (for simplicity, I’ll refer to this version collectively as iPhone-optimized), and one for all other mobile devices. Shortly before taking off for the holidays, I wrapped them up and they’re now live (iPhone-optimized, mobile-optimized). The iPhone-optimized site incorporates the fantastic jQTouch by David Kaneda while the mobile-optimized site is much more simple.
iPhone-Optimized Site
I’ve been keeping tabs on jQTouch for a while now and was glad to finally take it for a spin. For those in the dark, it’s a jQuery plugin that provides a powerful framework for quickly building mobile web applications. While not limited to use on iPhones and iPod touches (it’s geared to work just as well on Android-powered and other capable devices with WebKit-based browsers, though I can’t test and confirm), the interface, included themes, and experience are based heavily on that of the iPhone OS.With the help of jQTouch, I was able to build an iPhone-optimized counterpart that retains all the same content from the full site relatively quickly and without duplication of content. The about page copy, work entries including their image sets, Tumblr posts, and contact form — it’s all there.
Integrating Into CakePHP
Since the main site is built with CakePHP, implementing an alternate iPhone layout was, well, cake. First, the layout (located in views/layouts/iphone.ctp) is triggered in the
AppController’sbeforeFiltermethod when the sub-domain, i.mightydream.com, is accessed; here I also set a globally-available variable calledis_iphonetotruewhich is helpful later in the individual controller actions:class AppController extends Controller { ... function beforeFilter() { if ($this->Session->host == 'i.mightydream.com') { $this->layout = 'iphone'; $this->is_iphone = true; } } }Now, it’s business-as-usual in Cake with a minor addition to each controller action that also renders a view for the iPhone-optimized site. Each interior page in the iPhone interface is loaded on-the-fly via Ajax to help keep the initial payload down; these requests are made using the same URL structure as the main site (e.g. /about, /work, /work/giftag) and, thus, use the same controller actions. If the previously-set variable,
is_iphone, istrue, the iPhone view is rendered instead of the normal view:class WorksController extends Controller { ... function index() { $work = $this->Work->find('all'); $this->set('work', $work); if ($this->is_iphone) $this->render('iphone/index', 'ajax'); } }The addition of the ajax parameter used in the
rendermethod causes the view to be rendered by itself without a surrounding layout. And that’s it. These examples are simplified, but at the most basic level this is how I provide an alternate layout.Styling It
I started with the “Apple” theme included with jQTouch and made various tweaks to fit my own preferences and needs. I cleaned up a few minor pieces that were slightly off, added a tilted arrow for links that open in a new window, and added style support for the spinner shown as sub-pages are loaded via Ajax (which is all of them). Now that it’s up and running, perhaps my next urge will be to bring it more in-line with the full site, design-wise.
I also took advantage of jQTouch’s simple support for bookmarking sites on the home screen. When bookmarked, you’ll see a custom icon, a loading screen, and true full-screen support which ditches the Mobile Safari address and tool bars.
Image Galleries
For the image gallery in each work entry, I used a modified version of the jQTouch extention, jQTouch-Gallery, by Ryan McKillen. It provides a nice interface similar to the native iPhone photo gallery including tapping once to toggle the title and navigation bars for a full-screen view.It was also a breeze to implement and I had to make only a few minor modifications: (1) I rearranged the contents of the title bar, and (2) I changed the look of the navigation bar. The transitions I’d like to bring more in-line with the native UI (sliding only the image instead of flipping the image including the title/navigation bars), but that’s all for another day.
Handling Auto-Redirects
There’s much discussion surrounding how to handle directing visitors to companion mobile site(s). I settled on the approach of automatically redirecting mobile users to the appropriate site, then providing a way to view the full site. On the iPhone-optimized site, tapping the View Full Site button on the home page will take the user to the full site and remember this preference for 30 days by setting a cookie. Revisiting the iPhone-optimized site directly will reset this preference and return the auto-redirect behavior to normal. The code in question also sits in the AppController’sbeforeFilter:class AppController extends Controller { ... function beforeFilter() { if ($this->Session->host == 'i.mightydream.com') { ... } else if ($this->Session->host == 'm.mightydream.com') { ... } // or force layout for mobile agents else if ($this->RequestHandler->isMobile()) { // iPhone & Android if ((stripos($_SERVER['HTTP_USER_AGENT'], 'iPhone') || stripos($_SERVER['HTTP_USER_AGENT'], 'Android'))) { // if the iPhone cookie is simply not set or the user has not tapped "View Full Site", redirect to iPhone site if (!isset($_COOKIE['MDRM_iPHONE']) || (isset($_COOKIE['MDRM_iPHONE']) && (bool)$_COOKIE['MDRM_iPHONE'] != false)) { header('Location: i.mightydream.com'); } } // mobile else { header('Location: m.mightydream.com'); } } } }Mobile-Optimized Site
The mobile-optimized site doesn’t need much explanation—it’s simply the raw HTML of the full site with the CSS stripped out. I don’t believe many people will see/use this, therefore I didn’t put much effort into it. It’s here more for the “see, there’s a mobile version, too” factor.
-
Delta boarding pass redesigned by Tyler Thompson. More here: Redesigning the Boarding Pass (via @awilkinson)



