Plugin Progress

I had a chance to do a lot more work on my watermark plugin this weekend and I made lots of progress. Most functions work, but I still need a few days of QA & testing before I can release it.

Success!
Uploaded with plasq‘s Skitch!

Black Star Rising tells why you should add your name and copyright notice when posting a photo, which is the reason I wrote this. I noticed that almost all of the pictures by the professionals from last week’s photowalk have a copyright notice, so I wanted to make it easier to do with Aperture.

Protecting your photos

After seeing how my blog posts have been republished without my permission, I realize that the same thing is likely to happen with my photos (and most likely already has happened). Most photographers add a visible watermark or copyright notice to identify their photos. Although Aperture can embed a copyright notice and author info in the EXIF data, it doesn’t have a way to add a visible identification.

One way to do it is to edit in Photoshop and add a text layer. As an alternative, I started to write an Aperture editing plugin that can add text to a photo. I hope to have it ready for public release next week.

Watermark
Uploaded with plasq‘s Skitch!

SproutCore + Fluid = Wonderful Synergy

The most exciting thing that came out of WWDC wasn’t Snow Leopard or the iPhone 3G; it was SproutCore, an open source JavaScript framework. When Steve Jobs demonstrated Mobile Me during the keynote, he didn’t say how Apple was able to make those web applications look as nice & responsive as desktop apps, but we found out a few days later in a session introducing SproutCore.

I’ve been looking at SproutCore and playing with the demos for the last few days and I’m very impressed. The photo sample looks like a stripped down iPhoto. I think with a bit of tweaking it would make a great online photo gallery.

One thing that takes a bit of getting used to is that SproutCore uses a ruby gem to build your application and serve it during development, but you can build a static version that doesn’t require Ruby and can be deployed to any web server.

While web based applications are starting to look and act more like desktop apps, Fluid lets you bring your favorite web sites or applications to the desktop. With Fluid, you can build a site-specific browser that you can double click to open that web site immediately. Fluid also adds some additional functionality to web apps, such as showing dock menus, badges, and growl notifications. You can even make your web app a menu extra so it’s available anywhere by a single click.

The two pieces work together beautifully as a new way to deploy applications. Write your application in SproutCore, deploy it on your web site, and build a Fluid desktop app that your users can double-click from their desktop to run your web-based application just as if it actually was a desktop app.

Things I learned at WWDC

  1. JavaScript doesn’t suck. I’ve been looking at SproutCore and I really like it a lot. I’ll probably be using it for future web applications.
  2. Lots of cool stuff is being written in Ruby. I really need to start learning it.
  3. iPhone push notification is no substitute for background tasks. It still isn’t possible to schedule something to happen at a particular time. Apple just considered one very specific use case, where something like AIM needs to notify you that a message has been received. You can’t have a process check in with a server at timed intervals, for example.
  4. Animated effects are very easy. It takes almost no effort to add animated effects to views & controls in a Cocoa application and it makes the app look so much cooler. Simply set a property in Interface Builder, write a few lines of code to define the animation, and let it happen in its own thread as you go about your business.
  5. San Francisco has some of the most aggressive beggars. Headphones & loud music are a must when walking from Union Square to Moscone if you want to block them out.
  6. The Barenaked Ladies are a lot better than I realized. Somehow I never got into them, even though I like They Might Be Giants & Soul Coughing, whose attitude & humor are similar. After the Thursday Night Bash I bought some of their music in iTunes.
  7. Carrying a MacBook Pro for several hours isn’t fun. At the end of the day I usually had a sore back & shoulders. I’m considering a switch to either a MacBook or MacBook Air as a travel machine for my next trip. I’m not sure if the 1/2 pound difference of a MacBook will make it that much more pleasant, but it’s a much more capable machine.
  8. Thirsty Bear has the best beers in the Moscone area. Their Valencia Wheat is especially good.

WWDC a success

Despite the record-setting crowd of over 5000 people, this year’s WWDC ran much more smoothly than any recent one. The WiFi network was very reliable, and for the first time we had WiFi working in the Presidio during the keynote, so I was able to live blog it at MacMegasite. Most of the rooms had plenty of power strips available, so it was easy to keep our laptops charged.

The lines were much longer for most of the sessions and they started lining up as much as 15 minutes before the sessions started, but I was able to get into all of the sessions easily.

For tonight’s bash, which took place in Yerba Buena Gardens as it did last year, Apple got the Barenaked Ladies to play for us. THe band members are big Apple fans, since one of their videos appeared on the System 8.6 CD.

I found that after carrying around a MacBook Pro for several hours a day, I ended up with sore shoulders. For my next trip I’m seriously considering getting either a MacBook Air or MacBook instead of the MacBook Pro. The MacBook only weighs about 1/2 pound less than the Pro, but it’s quite a bit smaller, and is a lot more powerful than the Air.

Off to WWDC

I’m getting ready to leave for San Francisco early in the morning. My flight is at 6:45 so I’ll probably have to be up around 3AM. I change flights in Atlanta and arrive in San Francisco around noon, so I’ll have plenty of time to pick up my badge.

My MacBook Pro is fixed

Thanks to the awesome service at the Fort Lauderdale Apple Store, I now have my MacBook Pro working again. It needed a new motherboard, which they had in stock so they were able to replace it right away. I brought it in at 11AM this morning and was out of there in less than 15 minutes. A little after 1PM they called to let me know it was ready. Thankfully I won’t have to take either a Dell Inspiron 4150 or OLPC laptop to WWDC!

Dead MacBook Pro Display

I woke up to an unpleasant surprise this morning when my MacBook Pro wouldn’t wake up properly. I noticed it was warm and the display wouldn’t turn on. After rebooting, the display was still black, and it also wouldn’t drive an external monitor.

However, the MacBook Pro still showed up on the network for screen sharing and SSH, and I was able to boot into Firewire Target mode and access the drive. Luckily I do full backups to a bootable external drive at least once a week, so I was able to quickly do an incremental backup.

I reset the SMC and zapped PRAM several times, but still no change. This seems to be a widespread problem, according to Apple’s discussion forums, but there seems to be no consensus on a solution.

I’m starting to suspect a motherboard problem or the graphics chip failing. The console log shows several errors which seem to indicate that it can’t find the display:

Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:32: — last message repeated 1 time —
Jun 4 09:16:32 localhost kernel[0]: Matching service count = 1
Jun 4 09:16:32 localhost kernel[0]: Matching service count = 3
Jun 4 09:16:32: — last message repeated 4 times —
Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:32 localhost kernel[0]: Previous Shutdown Cause: 0
Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:32 localhost kernel[0]: IG: Invalid firmware max backlight setting

With the console log filtered on ‘display’:

Jun 4 08:54:25 localhost kernel[0]: display: family specific matching fails
Jun 4 08:54:25 localhost kernel[0]: display: family specific matching fails
Jun 4 08:54:49 Mcohen-MacBookPro kernel[0]: display: family specific matching fails
Jun 4 08:54:49 Mcohen-MacBookPro kernel[0]: display: match category IOFramebuffer exists
Jun 4 08:54:50 Mcohen-MacBookPro kernel[0]: display: match category IOFramebuffer exists
Jun 4 08:54:55 Mcohen-MacBookPro kernel[0]: display: Not usable
Jun 4 08:55:06 Mcohen-MacBookPro com.apple.loginwindow[34]: Wed Jun 4 08:55:06 Mcohen-MacBookPro.local loginwindow[34] : CGSDisplayServerShutdown: Detaching display subsystem from window server
Jun 4 08:55:06 Mcohen-MacBookPro loginwindow[34]: CGSDisplayServerShutdown: Detaching display subsystem from window server
Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:32 localhost kernel[0]: display: family specific matching fails
Jun 4 09:16:48 Mcohen-MacBookPro kernel[0]: display: Not usable
Jun 4 09:28:16 localhost kernel[0]: display: family specific matching fails
Jun 4 09:28:16 localhost kernel[0]: display: family specific matching fails
Jun 4 09:28:26 Mcohen-MacBookPro kernel[0]: display: family specific matching fails
Jun 4 09:28:27 Mcohen-MacBookPro kernel[0]: display: family specific matching fails

Even more interesting, System Profiler now thinks the MacBook Pro has an Intel GMA X3100 instead of a GeForce 8600M.

GMA X3100
Uploaded with plasq‘s Skitch!

Unfortunately this comes at the worst possible time for me, just a few days before I leave for WWDC. I’ll probably be bringing it into the Apple Store later today or tomorrow.

Mac OS X 10.5.3 syncs with Google

I installed the Mac OS X 10.5.3 update a few hours ago, so far with no problems. One feature Apple didn’t mention in the release notes is that Address Book can now sync with Google contacts. The sync happens automatically with a .Mac sync, as well as when syncing with an iPhone. It worked very nicely for me, although I had a few duplicate entries to clean up.

Address Book Sync with Google
Uploaded with plasq‘s Skitch!