WWDC Impressions, Day 1

Monday, June 9, 2008

The big thing at WWDC is always the keynote address. Steve Jobs inevitably riles up the crowd (mostly composed of Mac geeks) by some groundbreaking announcement. This year’s keynote, while not as feature-rich as previous years’, at least gave me a month to wait for the iPhone 3G that I’ll inevitably have on pre-order as soon as that’s an option (does anyone want a black Razr?). The other big announcement at the keynote, aside from all the presentations by iPhone software engineers, was Apple’s replacement for .Mac, “MobileMe”. I’m of two minds about this service. First, I think the idea of the service is great. I sync my iCal, Address Book, etc. with Google right now through Spanning Sync; MobileMe is more expensive but also does photo albums and a 20 GB iDisk. I imagine I’ll try the 60-day trial and either not use it or enjoy it enough to subscribe. The part I don’t like is the name; Apple’s marketing department is usually top-notch, yet the logo for MobileMe is eerily reminiscent of Windows ME. Hopefully the two products won’t have the same “success” stories.
Time to go to my first session (which I can’t legally talk about here).

Updated: Resizer AppleScript

Wednesday, May 28, 2008

After looking at my AppleScript to resize windows, I’ve decided to make a few updates.  Instead of manually doing the math for each resolution, I’ve created a new variable, desired_width, which is exactly what it sounds like: how wide you want your windows to be.  I’ve also made the other variable names more human-friendly: _nl and _nr are now left_bound and right_bound, respectively, for example.  After adding iTunes to my script, I noticed that it was being resized behind the menubar, so instead of setting the upper bound for all windows at 0, I’ve defined the variable top_bound, which defaults to 22 to account for the height of the menu bar.  If you find that this setting is incorrect (e.g. if you’ve enabled some accessibility settings that change font sizes and therefore the size of the menu bar) you may need to change it; I haven’t found a way to get the height of the menu bar in AppleScript yet—so far I’ve only found it in Java—so if anyone knows feel free to leave a comment.  Finally, after seeing this post by Jamie Matthews, I added some functionality to automatically set bottom_bound to the height of the Dock.

After all of these updates, the script now takes a desired width and moves applications that support AppleScript such that they range horizontally to your desired width, centered on the screen, and stretching from the bottom of the menu bar to the top of the Dock.  In the future, I’d like to make a separate application, perhaps AppleScript-based, that will allow for user customization of how the windows are arranged, allow for custom application settings, and perhaps Spaces integration.

I use my MacBook Pro in a few different scenarios: by itself, plugged in to a 21” Apple Cinema Display, or plugged in to a 24” Dell 2405FPW.  I’m also rather OCD; I prefer my Firefox/Safari, Mail.app, and Vienna windows to be centered, stretch from the menu bar to the top of my Dock, and be a certain width.  I created a small AppleScript to auto-detect my resolution and size the windows accordingly:

tell application "Finder" set screen_resolution to bounds of window of desktop set screen_width to item 3 of screen_resolution set screen_height to item 4 of screen_resolution end tell tell application "System Events" to tell process "Dock" set dock_dimensions to size in list 1 set dock_height to item 2 of dock_dimensions end tell set desired_width to 1400 set side_space to screen_width - desired_width set left_bound to (side_space / 2) set right_bound to left_bound + desired_width set bottom_bound to screen_height - dock_height set top_bound to 22 (* for the menu bar *) try tell application "iTunes" activate set the bounds of the first window to {left_bound, top_bound, right_bound, bottom_bound} end tell end try try tell application "Firefox" activate set the bounds of the first window to {left_bound, top_bound, right_bound, bottom_bound} end tell end try try tell application "Mail" activate set the bounds of the first window to {left_bound, top_bound, right_bound, bottom_bound} end tell end try try tell application "Vienna" activate set the bounds of the first window to {left_bound, top_bound, right_bound, bottom_bound} end tell end try

With that in place, I saved it as an application in ~/Applications, and put it in my Dock. Now, whenever I change resolutions, I just click the button and everything is how I like it.

To change the script, you should be able to add any application with an AppleScript dictionary that supports moving and sizing the window.  The numbers I’ve used make the windows 1,400px wide, and the height that you want will depend on the size of your Dock. The script moves windows to the center, desired_width wide, and from the menubar to the Dock.

Note: I have had some trouble recently; sometimes when I change my resolution the AppleScript doesn’t pick it up.  To combat this, I told the Displays System Preferences pane to keep its icon in the menu bar; when my script uses the incorrect resolution, I change my screen resolution then change it back, which is enough for the script to detect the change.

Update 2008-05-28: Made some usability changes. Details here.

WWDC

Saturday, May 17, 2008

I’m really looking forward to WWDC this year.  It’ll be the very first time I’ve been sent anywhere on a business trip, and I plan on not only learning a whole ton, but also having a great time and meeting cool people.  Apple just posted the schedule, so I’ve been mapping out an itinerary filled with mostly the IT track stuff (since, obviously, I’m in IT).  Unfortunately, the developer sessions that I’m interested in are mostly offered during IT sessions that I’m interested in and are also directly relevant to my job, so I’ll probably go to the IT ones and watch the developer ones on video—I believe WWDC tickets come with free video downloads via iTunes.

Being in San Francisco should be fun, too.  I might hit up a Giants game while I’m there, and I’m going to try not to eat at the same restaurant twice (hotel breakfast bar excluded).  Any good suggestions on things I should do or food I should eat while in town?  Leave a comment!