Quantcast

How To Configure Your Laptop for Wireless Backups Using Time Machine

The greatest thing about Leopard is that you can configure your Mac laptop to backup wirelessly and transparently using Time Machine. You can wander around the world editing files, and your laptop will automatically back them up when you come home and connect to your wireless router, without you having to do anything.

You will need a second Mac or Linux box to host the remote backup. This takes five to ten minutes to set up and configure.

First, configure your remote backup machine. These instructions assume that you are using a Mac for this.

  • Configure your remote backup machine with a static IP address
    • Your backup machine must be connected to the same wireless router that your laptop will connect to when you are home
    • My wireless router is set to assign IP addresses starting with 192.168.1.100, so I assigned my remote mac to use 192.168.1.23
    • To assign an IP address manually while still using DHCP to get other network settings from your wireless router, go to System Preferences -> Network -> Airport -> Advanced -> TCP/IP and choose “Using DHCP with manual address”
  • Configure AFP File Sharing under System Preferences -> Sharing
    • Select the “File Sharing” checkbox. You should see a message that says “Others can access your computer at afp://192.168.1.23″, or something similar.
    • Click the “+” button under “Shared Folders:”, and add the hard drive you want to store the backups to the list
    • Click the “+” button under “Users:”. Create a user called “backup”. Give this user Read & Write permissions to the backup hard drive

Now, configure your laptop
  • Mount the remote backup hard drive
    • In the Finder, choose “Connect to Server…” under the Go menu
    • Type afp://192.168.1.23 in for the server address
    • When asked, log in using user “backup” and type in the password. Be sure to click “Remember password in my Keychain”
  • Now, Configure Time Machine
    • Choose System Preferences -> Time Machine
    • Click “Choose Backup Disk”
    • Choose the remote backup disk that you mounted using AFP

That’s it! The first time Time Machine backs up, it will be really slow. Just let it run overnight. All the following hourly backups will be very fast.

If you use your laptop in the standard, Apple-approved manner, then you can configure Time Machine to only backup your Users directory, which will save space and time. Let me know if you need more help!

Remove Leopard Dock’s Obnoxious Mirror Effect

Apple seems to be trading in productivity for flash … here is how to disable the “reflecting mirror” effect from the Dock in Leopard:

defaults write com.apple.dock no-glass -boolean YES

Then send kill -1 to the Dock process.

Link to the blog I found this on

QuickSilver Now Open Source

QuickSilver is now open source! Check it out on Google Code..

Shoes, a Tiny Toolkit for Making Web-like Desktop Apps

Shoes is a new project by the infamous why:

Shoes is a very informal GUI toolkit. It’s for making regular old windowing apps. It’s a blend of my favorite things from the Web, some Ruby style, and a sprinkling of cross-platform widgets. (More in the README.)

Check out the book reader tutorial on Hackety.org

simple screenshots:

Update Twitter via iChat status message, part II

A while back I posted a perl script that would update your Twitter status whenever you changed your iChat status message. Unfortunately, you had to configure launchd or cron to use it, which no one wanted to do. So I made an open-source Cocoa app that is easy to use! It’s called TikiTwit, and you can download it for free!

TikiTwit.png

Download it here! This is a very early version, so please help me test it!

url encode in cocoa

Let’s say you need to url-encode a string. No problem! You can call uri_escape in perl, or urlencode in php, or urlencode in python, or CGI.escape in ruby…

But now let’s say you are writing in Cocoa. ugh. Before you shell out to your favorite scripting language, check out CFURLCreateStringByAddingPercentEscapes() It doesn’t encode the RFC 2396/RFC 2732 reserved characters by default (other than ‘[' and ']‘), but you can specify additional characters to encode in the fourth argument. Use something like this:

CODE:
  1. CFURLCreateStringByAddingPercentEscapes(
  2.     NULL,
  3.     (CFStringRef)@“escape this %;/?:@&=+$[] string”,
  4.     NULL,
  5.     (CFStringRef)@“;/?:@&=+$,”,
  6.     kCFStringEncodingUTF8
  7. );

It took me quite a while to figure this out… I found the NSString method stringByAddingPercentEscapesUsingEncoding, but that doesn’t escape the reserved characters.

(I have a suspicion that Cocoa developers are getting paid per letter…)

My MBP Returns Home Again

DHL “released” my macbook pro box back to me today after I called and hassled them about it. Just another note in the Apple Support Saga: According to DHL, Apple’s Contract with DHL does now allow the customer (me) to sign for and pick up the laptop box from DHL dispatch if there is a missed delivery attempt. Apparently they feel this reduces theft somehow. Anyway, to avoid this annoyance, make sure Apple Support sends “The Box” to your workplace, or be prepared to stand outside your door all day waiting for the DHL guy.

So now I get to go through Apple Setup again and create my user account and go to System Preferences and change “key repeat rate” to “Fast” and change “delay until repeat” to “short” and pull out all the crap that’s in the dock and put terminal in the dock and I think you get the idea. I have to set up my mac again. Every time. I’ve done this around 40 times in 2006 alone.

Apple Setup has an option to transfer data from you old mac, but it’s pretty specific to transferring your home directory from a previous machine. There is no option to “restore you laptop to the way it was before the hard drive crapped out”.

And wouldn’t it be nice if it was simple as copying my home directory? But no, many applications install stuff into the “/Library” folder and so on, kernel extensions, registration keys. As I mentioned a couple weeks ago, the music that I purchased from the iTunes Music Store will no longer work on my macbook pro even though it is exactly the same machine with a new hard drive. Everywhere in the iTMS documentation it says you can “authorize up to 5 computers” … but really what is implemented is you can have up 5 different installations of Mac OS X authorized to play your songs at any given time. If you lose access to those installations for whatever reason you are screwed and/or have to deal with Apple Support to reset some counters. I am really curious how Apple Support handles this iTMS authorization issue but I haven’t had the energy to make the phone calls yet.

I was hoping the boot-disk-RAID-mirror would solve the problem of backup but in the end it didn’t work out due to complexity, poor documentation of Apple RAID Mirroring, and just plain not understanding what happens when there is a conflict between two mirrored disks. In one of my tests, the file with a conflict just ended up with some bogus data in it … I didn’t feel like it was worth my time to analyze what does and does not work with Apple RAID when the mirrored pairs are disconnected, modified differently, and then reconnected. There is no point to making a backup if you are unsure whether it’s even going to work.

This is a long way of saying I would love to hear about a way to back up your mac in a way that minimizes all these problems.

More MacBook Problems

MacBooks appear to be dropping like flies. It’s so frustrating to have this supposedly “premium” computing gear just flake out. I had to get “the box” from Apple Support in order to send in my MacBook Pro for service - there is a ghost in the hard drive that starts corrupting sectors even after a fresh install of Mac OS X (yes, zeroing all blocks first).

Just now the backlight on my white MacBook is kaput. I can see the display is working back there but just barely because there is no backlight. Apparently I am not the only one. A failed backlight almost certainly indicates a loose connection or a failed inverter board. This means … you guessed it, I have to get “the box” for my MacBook now.

I have three mac laptops. Only one of them is functional right now, all due to hardware failures that are not my fault. I’m really glad I kept this PowerBook 12″ with which I am composing this post. It has worked like charm for the nearly two years that I’ve owned it. And at the moment it’s the only mac I own that works at all.

It’s very frustrating but still, I would *much* rather be dealing with Apple Support than Dell or HP. I am noting down some techniques for how to get the fast path through Apple Support when you know you have a hardware issue and just want to have them send you “the box” with minimal amounts of BS.

Link to a helpful “my backlight is broken!” Apple Discussions thread

Mac Tablet!!!!




OK, so this is not an Apple product but to me it’s a huge breakthrough. I want a mac table bad! I want Mac OS X in my pocket. Computers are too big. For many of my tasks (email, web surfing) an iPod class of device would easily be able to run a stripped down version of Mac OS X. I’m curious to see how much this news resonates in the blogosphere, it would be a good indicator of demand for mac tablet (err… market demand from bloggers anyway).

So this guy was able to install and boot Mac OS X on type of windows tablet PC (x86 I guess). Very tempting. If there is no mac table from Apple at MacWorld (and I don’t think there will be), I will probably sell one of my macbook’s and try to get this working.

Link to the Mac OS X on a tablet story

UnFairPlay: How Apple Screws Creative Geeks

You could say I’m a power user of Mac OS X: I know a fair bit about it and I reinstall the OS a fair bit. Sometimes I reinstall because I messed something up, but more often it’s because of HFS+ filesystem corruption or other bugs that are in Mac OS X itself. As if dealing with all these backups and re-installations was not enough, I found out recently that Apple’s FairPlay technology is tied to the OS installation, rather than a hardware ID. What this means to you is that Apple locks you out of the music you paid for if you reinstall Mac OS X on your machine. If this isn’t adding insult to injury, I don’t know what is. All this from a company that does allow you to use “protected music” with iMovie and iDVD, but not with Traktor or other 3rd party music applications.

It goes something like this:

Step One: Re-install Mac OS X

According to the Apple playbook, you are supposed to remember that you have to “deauthorize” your mac before you send it in for service or reinstall the OS. Seriously, who is going to remember to do this?

Step Two: Double Click on Your Hard Earned Music

You will be greeted by this friendly iTunes dialog that says:

This computer is not authorized to play “The Mambo Craze”. Would you like to authorize it?

What!?!!? Oh yeah, I reinstalled, I guess I have to log into my account and deauthorize that “installation”, even though that installation doesn’t even exist anymore and I’m still using the same exact laptop.

Step Three: Help!

You can click the question mark button to figure out what the heck is going on. Next you will see a pleasantly worded explanation of how fucked you are:


Well that’s all very nice. But this documentation isn’t going to help you … instead:

If you have trouble deauthorizing the computer, visit the Music Store billing support webpage at www.apple.com/support/itunes/authorization.html.



It says you can authorize “up to five computers” but really this is “up to five installations of Mac OS X.” Once you hit 5, you can deauthorize all your installations and start over again. But only once per year. Given the rate I’ve been forced to reinstall Mac OS X recently, I won’t be able to hear my music in about a month.

Link to iTunes Music Store authorization policy

I Just Hosed My System

Hey, probably not a good idea do this on your Mac OS X machine:

sudo mv Security.framework Security-1046.framework

Good lord, every process uses PAM, which links to Security, so basically you won’t be able to launch or use any programs, even command line. In particular you can’t use “sudo mv” to fix what you broke because sudo, of course, uses Security.framework for authentication. It’s pretty hilarious, kind of like messing with ld.so or libc.so on a Linux system.

To fix it, reboot, hold down command-S to boot into single user mode, follow the directions to make the filesystem read/write, and then use “mv” to fix it.

I’ve been dorking around more with /System days, just like I did with Linux lo those many years ago (well, it was /lib on Linux). I need to start watching TV or something.

Automatically Opening Your Own Downloaded Files With Safari


This is one of those totally basic operations that is right in your face with Firefox (”download file, or open with application ‘blah’ “), but with Safari it’s a battle with MIME types, “Universal” Type Identifiers, and file extensions. For the quick fix, copy com.apple.DownloadAssessment.plist into ~/Library/Preferences in your home directory and add to the list of file extensions that you want automatically opened after download (aka “Safe Files”).

I thought it would be straightforward to write a CGI script that emits CSV and have that automatically be opened in Excel. Good lord, what a pain. First of all, Safari has no easy way to associate a MIME type with an application. But can associate an application with a given file extension by doing a “Get Info” on the file in Finder … look for “Open with:”.

So I had to find and download a helpful app called RCDefaultApp. It installs as a System Preference and allows you to change all the crazy Launch Services business (associations MIME types, UTIs, file extensions, etc).

The official MIME types for CSV are text/csv and text/comma-separated-values. Unfortunately Safar breaks this. As far as I can tell, Safari just automatically displays “text/*” inline in the browser. So I used RCDefaultApp to defined “application/csv” (yeah, I guess I should have made that “application/x-csv”), and associated that with Excel.

Here is the perl code I used to test this whole mess:

PERL:
  1. #!/usr/bin/perl -w
  2.  
  3. $result = “foo,bar,baz\n;
  4.  
  5. print “Content-type: application/csv\n\n$result”;

And here is the plist file just to give an idea of what it looks like:

XML:
  1. <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com-PropertyList-1.0.dtd">
  2. <plist version=“1.0″>
  3. <dict>
  4.  <key>LSRiskCategorySafe</key>
  5.  <dict>
  6.   <key>LSRiskCategoryExtensions</key>
  7.   <array>
  8.    <string>csv</string>
  9.   </array>
  10.  </dict>
  11. </dict>
  12. </plist>

Figuring out how to tell Safari that CSV was a “Safe File” was harder to track down. It’s totally undocumented, but a couple of hardy Mac OS X nerds have uncovered the fact that com.apple.DownloadAssessment.plist holds the key to the magic. It allows you to override the download assessments that are hard coded into Launch Services. A post over at MacEnterprise.org provides some great documentation on exactly how to set this up.

The asute reader will notice that my com.apple.DownloadAssessment.plist file has a definition for the “csv” file extension rather than a MIME type. That’s because to get things to work at all, I had to actually make my CGI script have a filename that ends in “.csv”, which is totally crazy. Otherwise Safari downloads the file alright, but it saves it with a file extension of “.pl” or “.cgi”, and then cleverly reminds us that we might be downloading a PERL executable. In fact it is simply CSV text with a “.pl” extension. So it looks like the key steps here were:

  • renaming CGI script to so it downloads with the proper “csv” file extension
  • use Finder to make “csv” files open with Excel
  • construct and install a com.apple.DownloadAssessment.plist so Safari will automatically open the “csv” file after download.

Gosh, Mac’s are so easy to use, I can just hardly believe it :-) Sorry folks, I think this is a case where the “PC guy” wins, hands down.

Link to Modifying Safari Safe Files List
Link to RCDefaultApp for editing MIME type associations

Transparent Backups and the Ultimate MacBook

I finally went through the old hard drive from my B&W G3. The machine is long gone but I took out the drive because I wanted to save the GIS stuff and other random projects from the carefree and unemployed days of the dot-com crash. Along the way I’ve learned many things about drives and RAID and booting and hard to make a FireDrive bootable. It took awhile but here are a couple of my findings.

a:\> sys a: c:

Remember “sys” ? In the dark days of DOS, man that was super helpful. “sys” would transfer the system files from one disk to another and make the disk bootable. Didn’t matter if the disk was a floppy or your internal hard drive, it just worked. Well, these days the normal installation process for Windows, Linux, or Mac OS X takes the better part of an hour. But I’ve found a new friend in the darwin command “asr” (which stands for Apple System Restore). “asr” is used in the Apple manufacturing process, so you know it’s good stuff. And you don’t have to use the command line. You can do the same stuff with the “Disk Utility” application.

If you set things up right, “asr” will perform the function of Carbon Copy Cloner except way faster. To get the juice you need to do the following:

  • Boot from a Volume that you are not using as a source. This could be an install CD or, if you are pimpin’ four external firewire drives like I am, use one of those.
  • Fire up Disk Utility, click on the drive you want to copy to and click the “Restore” tab.
  • From there, drag the source drive to the “source” thingy and the destination drive to the “destination” thingy. (Is this a Mac or what? Remember fdisk?)
  • You don’t want anything on your destination drive, right? Cause we are about to nuke the whole thing. Double click the destination drive in Finder to make sure you know what you’re doing.
  • Click the “erase” checkbox and then click the “Restore” button.

At this point Disk Utility should be saying “Copying Blocks ..” with a progress bar. This sweet block copy mode clones my 16GB system in less than 15 minutes. That’s longer than the 3 seconds from the “sys” days, but it’s way better than waiting an hour to copy file-by-file. Remember, to get the juice the source drive must be unmountable (i.e. not your boot drive) and you have to be doing an Erase install.

A Backup I Will Actually Use

Do you do backups? Most people don’t … I certainly don’t. Except for this old G3 drive, I’ve never really done backups. I mean do I need to hang on to my Web Browser Cache files? Typically anything important I’m doing on the computer is A) Email or B) code checked in to source control. But these days the digital pictures are piling up, and I want to save them even though I know I’ll never look at them.

The key for me is going to be Apple’s software RAID system. It took me a while to understand but it’s good stuff. For my data and pictures I have two 160GB firewire drives configured RAID-1 (mirroring). This is a pretty stock setup, except I made an extra 20GB partition on both drives so I can …. well, those partitions come in handy sometimes when I’m trying to do stuff.


But the coolest thing is setting up my laptop’s hard drive to be part of a RAID mirror. This feature will allow me to have the Ultimate MacBook: one that is impervious to hard drive failures. How do I do it? Set up the internal hard drive to be part of a RAID Mirror set. I didn’t even know you could do this, but you can. Here are the steps:

  • First you need an empty partition on a FireWire drive. This is going to be the other half of the mirror. Make sure this partition is smaller than your internal hard drive. Otherwise the stars won’t align correctly. You might have to repartition your FireWire drive for this to work. Oh, and this is a good time to mention that your FireWire drive might need to have a “GUID Partition Table” if you want it to boot Intel Macs. I’m not sure of all the cases but I just made mine GUID because I will only be using this on MacBooks.
  • OK, you’ve got your partition set up. Nothing you want on there right? Cuz it’s curtains for that data. Fire up Disk Utility and “Erase” the partition, which puts a nice fresh (empty) file sytem on there.
  • Now quit Disk Utility and execute the following in Terminal:

    diskutil enableRAID mirror /Volumes/YourFreshEmptyPartition

  • Cool, you’ve got one half of a RAID mirror up, with nothing on it. Now we use the hint from above and “Restore” your internal drive onto this empty RAID. Drag the RAID Mirror drive to the Restore “Destination” and drag your internal drive to the “Source”. Remember, if you booted from your internal drive it’s not unmountable and you won’t get the speedy “Block Copy” behavior. Click the “Erase” checkbox and watch the bits fly….
  • Sweet, you now have a copy of your internal drive on the RAID (which still only has one Slice at this point). At this point we are going to nuke your internal drive, so you Really, Really, Really should check it out and know whats up.
  • Ready? In Disk Utility, click on your RAID drive and hit the RAID tab. Now drag your internal drive onto the RAID set. (goddam!! I mean really, this kicks 3ware in the pants…)
  • Important!!! Click the “Options…” button and make sure “RAID Mirror AutoRebuild” is checked. You can’t change this later, and trust me, this is what you want.
  • After you’ve added Mr. Internal Drive to the RAID set, you’re basically done. The set should automatically start rebuilding itself. Yeah, it takes a long time (about 2 hours for the 100GB RAID Mirror I have set up with my MacBook Pro’s internal drive), but I think it’s worth it.
  • Make sure the rebuild has completed, then use System Preferences “Startup Disk” to set your startup disk to this new RAID array.


So what’s up with this rebuilding thing? Well, any time you disconnect the FireWire drive, the system assumes you might have changed some data on the disk. So it sync’s up the two drives, but the algorithm is naive — it just copies block by block. This if fine for my purpose. Basically when I come home I plug my laptop to the power supply to recharge the battery, and plug in the FireWire slice of my RAID mirror to “recharge” my data. Since I let all of those things stew overnight anyway, it doesn’t matter that it takes two hours to rebuild. The rebuild process is nice and quiet in the background too. It takes up about 4% of CPU (via the kernel_task). Compare that to rsync, which was using between 40%-100% of CPU in the tests I was doing. And if you have used other backup software … well, you know how crappy it is to be enumerating the filesystem and l dribbling weird programs all over your Mac. It’s all about the software RAID running at the disk block level.

But the biggest feature is the transparency. Because it’s so automatic, as easy as plugging in the power cord, I know this is backup that will actually happen as opposed to me just thinking about it.

I think I’ll throw a second FireWire drive in there just to be extra safe.

RSS is the New Email: A Polemic in ObjC




About a month ago I was going on about trying to use a newsreader to keep up with all the RSS flying around. I tried Google News Reader, hated it. I tried about 10 other RSS readers, both web based and client software (mac)… I felt like they all missed the point.

When I’m reading RSS, I actually don’t give a monkey’s tail about the RSS. RSS is stupid, unformatted, unstyled text with no soul and even less information. The way to consume RSS coming from websites is to read it in it’s richest form: from the website itself. Some client newsreaders go a short way down this path by giving you button to open the article in your web browser. But this is totally lame. I mean, a drunk dog could open up a web browser and sit there through the World Wide Wait and sift through the blink tags and advertisements and try to read the article.

I am happy to make the first public mention of TikiRobotReader, a Mac OS X application that (eventually) will handle RSS in a way that is not totally dain bramaged. TRR is Open Source, a Cocoa application, and a work in progress.

The basic idea is that for a given Article, TRR will download the link to the article’s web representation and convert it to PDF so the articles are all nice and shiny and ready for your skimming pleasure, no waiting required. Here is what I want TRR to be:

Principles of Operation

  • Simple keyboard commands everywhere. Should be operable one-handed while eating lunch.
  • RSS is disposable content. It’s not critical like most (personal) Email.
  • Read the content as presented by the website, not some random choice of Font and Color.
  • Blog posts and status messages from friends are way more important than Yahoo/CNN headlines.
  • Streamline the reading process. No nagging feelings of “should I delete this article or save it?”
  • Download and cache web pages as PDF. Zero latency when switching articles.
    • PDF loads immediately, vs 1-5 seconds for an HTML page to render
    • PDF is a static page, no blinking and bouncing flash ads and animated GIFs
  • RSS is a source of content. Provide easy hooks for the sinks: Sharing and Research.

The current release is ugly as hell, but functional. At this point TRR is best enjoyed by running out of XCode so you can debug crashes and implement nifty features. I will be using it as my daily news reader in this fashion. But the nightly builds are functional and get the idea across. Feel free to contribute! Design ideas are helpful and code contributions are always a good thing. TikiRobotReader is meant to present RSS the way you, the discerning TikiRobot! blog reader, think is best. TRR will be a great place to implement all those Web 2.0/client features we want but can’t get anywhere else.

Link to TikiRobotReader nightly build
Link to TikiRobotReader SourceForge page

A Joyous Crash in removeObserver:forKeyPath: / _NSKeyValueObservationInfoCreateByRemoving

 Images Frustration Today I had the joy of trying to figure out a tough crashing bug somewhere deep inside a Cocoa / Core Data / KVC / KVO application. In case anyone else is running into this crash, it’s not your fault:

Ah, the infamous _NSKeyValueObservationInfoCreateByRemoving crash bug.
That’s shown up with a number of triggers, and is definitely not
reproducible, nor is your code at fault. I filed a bug on it, and Jim
Correia (who often posts on this list) has sent in a reproducible case.

If you can figure out the interface item or binding that’s triggering it,
you may be able to work around it. In my case, I was able to have an object
traverse a relationship for me, instead of binding through the relationship,
and that stopped the crashing.

I was able to avoid this crash by overriding removeObserver:forKeyPath: to do nothing (especially not call NSObject’s implementation, which was doing the crashing).

I’m also getting a crash in -[NSOutlineView _sendDelegateWillDisplayCell:forColumn:row:] which I don’t understand. I’ve turned off all my NSOutlineView customizations….maybe I’m calling reloadData too often. If anyone has ideas, I’m all ears.

Link to a cocoa-dev message I wish I had seen about six hours ago

Un-fuX0ring Skype on Mac OSX

Skype is poorly-designed software, but I use it to chat with people who refuse to use anything else. I’ve already written how Skype is the worst software installed on my Mac, but now I have two new frustrations:

1. Skype doesn’t gracefully deal with my laptop going to and waking up from sleep. When my laptop wakes up from sleep, Skype should change my status back to online, but it doesn’t.

2. The control to change the Skype status message, which they called the mood message, is so hidden away that it’s difficult to change, and since you don’t see your own status in your buddy list, it is frequently out of date.

These are two things that iChat has no problem with. We could easily sync our iChat status with Skype if both applications supported AppleScript. We know that iChat supports AppleScript, but does Skype?

It turns out that Skype’s AppleScript support is limited to just one command that you can use to call Skype’s public API. That’s good enough for us, and an interesting solution to dealing with how frustrating it is for app developers to support AppleScript.

Here is a script that syncs iChat’s online status and status message with Skype. You can run it periodically via launchd, as described here.

PERL:
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. my $iChatStatus = `osascript -e ‘tell application "iChat" to status’`;
  7. chomp $iChatStatus;
  8.  
  9. my $skypeStatus = ;
  10.  
  11. if (‘available’ eq $iChatStatus) {
  12.     $skypeStatus = ‘ONLINE’;
  13. } elsif (‘away’ eq $iChatStatus) {
  14.     $skypeStatus = ‘AWAY’;
  15. } elsif (‘offline’ eq $iChatStatus) {
  16.     $skypeStatus = ‘OFFLINE’;
  17. }
  18.  
  19. if ( ne $skypeStatus) {
  20.     `osascript -e ‘tell application "Skype" to send command "SET USERSTATUS $skypeStatus" script name "s1"’`;
  21. }
  22.  
  23. my $statusMsg = `osascript -e ‘tell application "iChat" to status message’`;
  24. chomp $statusMsg;
  25.  
  26. `osascript -e ‘tell application "Skype" to send command "SET PROFILE MOOD_TEXT $statusMsg" script name "s2"’`;

Slide for Mac Rides Again ….

That’s right, it’s time for another “where the heck have you been for the past few weeks” update. So, what have we been up to?

I created a tutorial for our iPhoto Exporter which I’m happy with . The images got scaled a little weird but I’m not going to redo all those screenshots! :-)

As always we need more traffic on Slide for Macintosh blog. Where are you guys? I want 100 blogs linking to our site!

New Features. We packed a bunch of cool things into this release:

  • New Text Mode Engine - Previously, enabling and disabling text mode mean you had to wait until Slide processed the images again to render an image representation of text. Now we treat text as it was meant to be treated: like text. So switch back and forth to your hearts content, the text mode changes instantly. Our new text engine also looks better. We threw some wordwrap technology in there for good measure.
  • Mini Browser Preview Window - Want a quick preview instead of switching to Safari to read your news? Clicking on feed items now brings up a new and nifty mini web browser that Dave cooked up. Check it out! AppKit Framework scaling rocks ….
  • Address Book Auto-completion - Don’t you just love the way Mail completes email addresses. It watches as you type and when you complete a recipients it get’s packaged up into a nice little rounded rectangle. Now Slide has that too! In the “Send To:” field of the Share Window, Slide will auto-complete names from your Mac OS X Address Book as well as your Slide Friends List.
  • Recommended Slide Shows - Want something to watch? Click the “Play” button the ticker and check out our new Recommended Slide Shows feature. This smart playlist is full of good stuff and needs watchin’, so get to it!
  • Edit Your Slide Shows - Now it’s even easier to edit your Slide Shows. Click “Edit..” from the context menu and you can modify your Slide Show right inside Slide.
  • Add RSS Feed - RSS is back! Drop a feed:// URL onto Slide so you can watch all of your favorite Blogs and RSS feeds right in Slide.
  • Upload Directly From Pasteboard - Who says we’re not helpful? Select an image in any application and hit Command-C to copy it … switch to Slide and hit Command-P. Yup, now you can upload your image to the Slide Show of your choice, no intermediate image file is required.
  • Upload Progess in the Dock Icon - Keep an eye on how your uploads are going. Start an upload session and the Slide Dock Tile will display the number of images remaining to upload.
  • Open Item in Frontmost Safari Window - Do you want your items to open in Safari but tired of a gazillion Safari Windows covering your screen? We added a new preference for you under “Controls.” You now have the option of Single click or Double click opening the item in the topmost Safari window. Let’s hear it for AppleScript!

Phew! I’m tired just thinking about all the bug fixes we did last week to get this thing out….

Link to Slide for Macintosh.

Slide for Macintosh Goin’ Nuts

Wow! Tons of awesome cool stuff. I haven’t worked this hard since college, and next week is WWDC ….

  • Download the Slide Dashboard Widget! It’s cute and gorgeous and has cool content to choose from on the back
  • Another crazy update of Slide for Macintosh. Drag and drop files or URLs into the ticker and broadcast them all over the Web. It’s crazy fun. Learn all about it on …..
  • The Slide for Mac Blog! Yes, Macintosh community! Stay up to date with new features, tutorials, screed, feature ideas, and all the other reasons blogs are great….

Link to the Slide for Mac Blog.
Link to Slide for Macintosh.
Link to the Slide Dashboard Widget.

New Slide Player for Mac!

This is a bug fix release for the clients, web site, and server, and we corrected 48 separate issues in the mac client alone. But true to form, the Mac team snuck in some awesome features for you:

  • Read and Unread - darken or remove the item in the ticker after you click on it. Check the “History” tab in the preferences for some more options on this feature.
  • Take My Picture - Is there a video camera built in or connected to your Mac? If so, the Upload Window now has a “Take My Picture” button. Check out the evidence above! :-)
  • Direct-From-Camera Uploads - If your digital camera or card reader (SD, CF, etc) is connected, click on the “My Camera” button to bring up the Image Capture services dialog. Select one or more pictures, click “Download” (wait for the pause, sorry no progress bar yet), and boom, you can upload those pictures to a Slide Show.
  • Scale Down Large Image Files - This makes the above feature usable. Images are scaled down to 1600×1200. As a bonus, I respect the EXIF “orientation” flag. This keeps your vertical pictures vertical (if your camera supports it)

Whew! Now if you don’t mind, I’ve got some camping to do :-) I’m psyched that when I come back from Utah I can just drag images from my SD card reader onto slide and have them up on the web…

Link to Slide homepage which has Download!!! links all over the place.

New Slide Player for Mac!

New release of Slide Player for Mac! Many, many new features in this release including:

  • Slide Screen Savers! (pictured above: “SlideTickers”)
  • drag and drop items into chat window!
  • Text Mode (shows text alongside picture)
  • status messages when changing channels
  • iPhoto export-to-Slide plugin
  • “new” badge on new items
  • MySpace notifications - scrapers your MySpace account for cool stuff

Check it out and let me know what you think. The chat feature is a lot of fun.

Link to Slide homepage.

Accidental Design Perfection

This document came up as a search result for “screensaver security.” It’s the quintessential LOL. The layout is perfect, the fonts are flawless, the NSA seal is in color. You think it’s a joke but it’s not a joke.

Unclassified indeed.

Link to the PNG screenshot and the original PDF (3mb)

i finally wrote some code that Apple likes

Just over a week ago, some folks at WebKit invited me to make my little web development tool, tixe, an official part of Webkit. I am super excited. That is just about the best compliment I could have imagined. So I jumped right in, and after furious coding (which actually amounts to embarassingly small amounts of code), I’m happy to say that the framework formerly known as tixe (and even formerly known as BionicDOM) is now part of the WebKit nightly builds. Plus, I’ve gotten the opportunity to work with a really tight group of smart people.

So, to celebrate, we’re having ice cream! Raj and I and anyone else we can round up will be at Maggie Mudd in Bernal (903 Cortland) tonight at 9. There’s internet access there, and if anyone will let me, I will try to show off the li’l WebKit hack that made it big. Join us!

Repartition discs without reformatting… finally!

diskutil in OSX 10.4.6 allows you to resize a volume nondestructively. Yay!