Tiger Lab Migration Part 1a: Snags!

Snags! I've hit snags! And in the most basic part of this migration.

I don't know what it is, but it sure seems like any time I want to do something ambitious I end up having the weirdest problems. This lab migration is no exception. My first step is cloning my system drive, in case I need to revert back to the previous working state for some reason. A tedious but necessary precaution. And drop-dead simple, right? I mean, how many drives have I cloned in my lifetime? Well, I don't know for sure, but I lost count somewhere around twelve-bajillion or so. And how many times have I had a problem with it? Maybe three. And usually it was because I was doing something stupid.

But today, of all days, when I'm finally ready to take the plunge, wipe my system and install the dreaded Tiger, I find myself unable to successfully clone my drive to a disk image. Everytime (and I've tried Carbon Copy Cloner and Apple's Disk Utility) I get the same error message telling me that the disk image/folder is too big. Too big for what? I'm cloning a 13 GB volume to a 230 GB hard drive. Seem like I should have plenty of space. The error occurs, in all cases, right after the initial sparse image is created, and right before the ASR scan/conversion begins.

I tell you, I'm stymied.

I'm on my fourth attempt at this point, and this time, rather then being booted from the root drive, I'm mounting the system in firewire target disk mode, and cloning on a seperate system. (See? The advantages of having a lab full of computers. Nice.) My reasoning here is that I'm worried that there's something terribly wrong with my boot drive, and it's confusing the hell out of hdiutil. (Did I mention, the error message is from hdiutil?) So I figured I'd try from a presumably happy, healthy boot drive and see what happens.

I've been doing this all day, and it's getting pretty old. So, while my attempts at cloning run I am also:
1) Writing this blog (obviously)
2) Reading other blogs
3) Installing Red Hat Linux on a Windows box.

I am surrounded by progress bars, and yet I can't seem to make any progress.

Systems work can sure be frustrating sometimes.

Oh well.
_______
Update 1:
Argh! It happened again! Below is a screen capture of the error message.

Also, SprintPCS has been down for two days doing "maintenance." Probably removing cool features and replacing them with shitty ones. This seems to be a general tren in the industry. But I'll tell you, if I took so long to do maintenance, I'd be fired. What this means for me, of course, is that I cannot upload any photos.

Apparently, I can't do anything today. Maybe I should just go home.

Again I say, Argh!

_______
Update 2
Well, I've figured out the problem. Should've just googled that error message in the first place, but no, that would've been far too quick and easy. The problem is a bug in hdiutil and OSX 10.3.9 that prevents creating an asr restore image of disk images over 8 GB. So right this very moment I'm making a lean OSX 10.3.2 boot disk on a 6 GB firewire drive I have lying around. I'll boot off that drive to make my restore image. Hopefully, that will do the trick and I can move on.

Hmph! I knew there was a reason I didin't want to upgrade to 10.3.9. And there it is.


Um... WTF?

Tiger Lab Migration Part 1: Introduction

First, a very little about me: I run a Mac lab at an art school. I am in charge of about 30 Macs that are used for a huge variety of things, including office work, graphics, video, interactive authoring, web authoring, the teaching of these topics, and just about anything else you can think of. I manage multiple hardware configurations in an extremely heterogeneous network that consists of Windows and Linux machines in addition to my Macs. I run two primary servers: a Quicktime Streaming Server, and a Macserver that handles login authentication and other network services (including print services and preference management and maybe a few other things I'm forgetting offhand). I also run a test server or two, and soon I'll be running (if all goes well) an LDAP replica for my Macserver.

Phew! Okay...

As the administrator of this lab, I am constantly being asked if I will be upgrading to the latest, greatest Mac OS. This Summer is no different. And I just want to outline, if only for myself, some of the pros and cons, as well as how I might proceed, in doing so this year.

First let me say, the release date of Tiger affords me the perfect opportunity to upgrade. Previous revisions of the Mac OS always seemed to come at odd times, often in the middle of the semester, and made it inconvinent if not downright stupid to upgrade immediately. Usually what I would do in these instances was test the new OS and then, depending on how important the upgrade was and how smoothly the transition could be made, either upgrade between semesters or wait until Summer. Summer, you see, gives me a full three months to plan, test, and implement an OS upgrade. So I'll say right here and now that the release date of Tiger makes it almost certain that I will upgrade this Summer. Tiger is complex enough that it's not something I'd like to attempt between semsesters, when my time is much more limited. Waiting would likely postpone an upgrade to next year, and that's unacceptable to me, and would probably become unacceptable to students and faculty in the near future, when the real Tiger benefits start making themselves more apparent.

What I mean by this is that, from everything I've read, a lot of the really good, juicy, exciting changes to Tiger -- the things that will really be a boon to users -- are low-level. For instance, the offloading of many tasks to the graphics card. While these changes might not be readily obvious, or even useful, at the moment, when new apps like Final Cut and Motion begin shipping, I think we'll see some really good reasons to upgrade, and I'll be kicking myself if I haven't. Worse, my students will be kicking me. (Yowch! That's a lot of kicking.) I suspect Tiger will be really good for video. And we do a lot of video on our Macs. With the FCP Suite soon to hit the streets, I've one more big reason to upgrade.

The low-level changes, however, are also what make this, in my mind, such a challenging update. I've installed Tiger on my Powerbook for testing using the "Archive and Install" feature, and I must say, I've been underwhelmed with the performance of the new system. Most people are claiming that Tiger brings with it performance gains, but I've not seen them. If anything, my Powerbook seems a bit slower than it was on Panther. Mind you, I haven't done a clean install on that machine since I bought it (three years ago), so there's probably plenty of old junk that needs cleaning out (like, maybe, all those old, non-binary preference files) and I can't help wondering if an "Erase and Install" would have been the better route. Nevertheless, I may prove far too lazy to ever attempt such a process, as re-installing all my apps would take days, and I just don't have days.

Enter The Lab.

The great thing about working in education (or one of them anyway) is that I get to test and try stuff out on someone else's hardware, and I have a lot of machines at my disposal upon which to do so. The rationale for all this is that I will then implement, based on these tests, and build a productive and efficient lab for all to use. Ideally, the whole lab benefits from my test experiences. So, though I may not be inclined to Erase and Install on my Powerbook, or test generally on my personal computers, The Lab is the perfect place to try such things.

The thing about Tiger is that it's complex. It's a beast. There's a lot of stuff that I've implemented in Panther that will break instantly, and a great deal more that will need serious modification and coordination. I use rsyncx for backups of staff machines, for instance. What is the best way to seamlessly preserve that functionality given the facts that A) Tiger introduces a whole new, resource-fork-aware, version of rsync, B) the staff machines will probably be among the last to get upgraded, C) my machine, which performs the backups, will be the first to receive the upgrade, and D) the versions of rsync must match between client and server? It's a chicken-or-egg problem that will require a hack to workaround, but it's do-able. But what about my Macserver? What will be the interaction there? Should I upgrade the server first and then the clients, or vice-versa? (I still have not received my copy of Tiger Server, BTW, so that pretty much answers that question.) There are a whole host of questions and problems like these that will require some serious testing and planning.

So, at this point, I've pretty much decided on a first stage of my migration plan. And since Tiger is so complex, I've decided to shake off my complacency and implement this upgrade boldly, and I might add, from scratch. Yes, scratch.

Here's The Plan.

There are a few things I've been wanting to do that this Tiger-migration-from-scratch really gives me a good chance to do. The first thing is repartitioning. In the past I've partitioned my lab computer drives into two partitions: a SysApps partition that holds, what else, the system and application components, and a Work partition from which students can, yes, work. With the ever-increasing list of applications installed on my systems, and their ever-increating size, my SysApps partition is getting a little cramped at 20 gigs. And with hard drives getting bigger all the time, and students primarily relying on their firewire drives or network storage at this point, it seems like a good time to repartition. I'm thinking that SysApps will grow to 50-75 GB in the new scheme.

The second thing I want to try is to implement Radmind to track and monitor system configurations and to apply updates over the network. This may be overkill given the size of my lab. Radmind is really meant for managers with hundreds of computers and far more resources than I have at my disposal. And it's really not necessary for a lab of thirty or so Macs. Still, I see an opportunity here to try something new and learn. But also, there may be a real advantage to implemeting Radmind, for a lot of the reasons I complained about with regards to this and past upgrades. Seems to me like Radmind could effectively take some of the sting out of upgrades. Radmind allows the admin the ability to create sets of updates to both applications and the OS in what amount to layers on top of the base install. Ideally I want to create a system whereby updating the entire lab to a new OS revision is as easy as a few mouse clicks, so that after I've gone and tested Leopard, upgrading the lab will simply mean upgrading one machine and then porting those changes to the Macs in the lab. And, should there be a major problem I've overlooked, reverting will be just as fast and easy. Again, this is best handled from scratch, starting with a clean install of the OS for the base config.

Finally, if my Powerbook is any indication, I think that Tiger will be a much smoother upgrade going from scratch, and doing this gives me an opportunity to rethink, to some extent, my current implementation of the Mac lab. Things are working pretty well, but they could always be better.

Where to begin?

The lab admin is always Guinea Pig Number One, so I'll be starting, of course, with my machine. Yup, that's right. Today is the day. I'm wiping my admin box and installing Tiger. Needless to say, I will be backing up my Panther system with Mike Bombich's wonderful Carbon Copy Cloner, just in case I need to get back to a fully working system. If I could, I'd clone a working copy to a spare firewire drive and boot off that if I needed to, but alas, the downside to the smaller educational environment is that you don't have endless hardware resources, and so, no such drive is available to me now. I'm going to have to really take the plunge here, making a clone image for backup, and if necessary, restoring over my fresh Tiger install. This will be good motivation, however, to stay with Tiger unless it's absolutely imperative I revert.

After wiping and installing Tiger, I'll need to get backups online as fast as possible. This is my first priority. I will need to continue to use rsyncx as a stop-gap until I can get staff machines upgraded. Upgrading staff machines will be the most problematic and scary, as these machines are in continual use throughout the Summer, and as they have data and applications that absolutely must be preserved and in working order as fast and as seamlessly as possible (yet another reason to make sure my backups are working before proceeding). That being the case, I may opt to use the "Archive and Install method on those systems, but that decision can wait a bit. One potential major fly in the ointment is the possibility that rsyncx won't work in Tiger. If that's the case, I will need to upgrade my staff machines sooner (read: much sooner) than later. Like fast!

Next, I should probably start installing applications, just to get back up to speed. But this introduces an interesting problem: Perhaps my next step should be to install Radmind, test it, and then use my machine as the base config. My machine is different than all the other lab machines, though, so actually it might be unwise to use it as a model upon which to base all the other lab Macs. Using an admin machine for this model also seems like a bit of a security risk, so I probably won't begin with Radmind on my system. I think the best way to proceed will be to get my apps installed and get my system to a useful state again, then start building my Radmind server, modeling the base config on a lab workstation, which will also need to be built from scratch. This will require a lot of extra work, but I believe it's the best way to go. In any case, this is a really good example of the kind of logistical problems involved in a major upgrade such as this.

Once all my important apps are installed and my machine is doing the things I need it to do for work, then I can begin hammering Tiger for faults and problems some more. At this point I'm pretty familiar with all the changes, so this stage shouldn't take too long. The trickiest part will be getting things like cron set up again and porting over all my Startup Items from my backup. (I have some custom Startup Items that do lab-specific things that I'd really rather not delve into here. Suffice to say, these things, too, will likely require some testing and tweaking.)

When everything on my system is back up to speed and working to my general satisfaction, it will be time to test how Tiger client inteacts with Panther Server. That is, can I still log in as a network user? Do print services still work? What about managed preferences? If the answer to any of these questions is "no," then I need to figure out the best way to migrate my Macserver to Tiger before updating the lab's workstations (at which point you can expect another article). If the Tiger workstations can be peacefully managed from the Panther Macserver, I can wait a bit to upgrade the server. This would be optimal, and there is a good chance that this will be the case. I've already tested logins, and I know they work. Hopefully the rest works too, with minimal changes, as I'd like to (and may be forced to, as I have no idea when to expect my Tiger Server CD) update the server last.

And just an aside on that last comment: The logic behind upgrading the server last, I realize, is a bit skewed. The main idea is that, if I upgrade the server first, it is more likely to break my clients than if I upgrade the clients first. Though this may not actually be the case, my primary concern here is user logins. If those break, I essentially have no lab. Other services I can live without, but user logins are paramount. And I already know they work, so it's a much safer bet to upgrade the clients first. Also, there is the plain fact that I have no Tiger Server CD and I want to get moving. Finally, doing the client side the way I am is a much bigger job than the server is likely to be, and I want to get started on the migration now. In a perfect world, I suppose I'd build a Tiger Server on a seperate machine, and it's client on yet another machine and do my test builds in an all-Tiger environment. Alas, that is just not possible for me at this time. I am forced to be a bit more messy than that. But this is the only way I can move forward right now. And it should be fine.

Okay, so Tiger is installed on my admin box, backups are going again, apps are up and running, admin stuff is generally working. Great. Now it's time to start building my Radmind server. (And let me just say that, before I proceed, I may clone this fresh, working version of Tiger to a disk image, just in case.) The Radmind setup process is twofold. For the first part, I need to install the entire Radmind package on my admin machine and set it up as a server. (I will not go into Radmind setup in this article, as I don't know it nearly well enough to describe it from memory, but perhaps in another article.) For the second part, I need to begin building my master client. Ideally, the master client will be a conglomerate of all the various configurations in the lab, built in stages. Each stage represents an installation set. This will be one heavy machine. Essentailly we'll install everything we have on it. It will also take any new updates in the future. These updates will be tracked as well. Finally, sets of installs for various configurations of Macs can be built. For instance, some of our Macs run Motion. Motion will get installed on the master machine, and any machine that runs Motion will be put into the "Motion Computers" list, which defines what computers get what software/updates. To install Motion, or anytime it's updated, we install on or update the Master client and tell Radmind to update all the computers in "Motion Computers." Cool! So this Master client needs to get built first, and very carefully, tracking each change along the way with Radmind. It's probably a good idea to start with a list of the various system configurations in the lab, i.e. which systems get which software. This will eventually become the "Computers" list(s) in Radmind.

(By the way, I you might be wondering why I don't manage all this from Tiger Server's "Software Update Server." Well, from my understanding, Tiger Server only updates Apple software on clients. Radmind can update anything. Plus, Tiger Server doesn't let you revert changes, which is one sweet feature of Radmind. Radmind is very complex, but vastly more powerful in what it does, as it is specialized for that application. Tiger Server is really a different beast that will probably never be able to do everything Radmind does. If it ever can, it will probably be because Apple has bundled Radmind with Tiger Server. Which I could see happening someday, actually.)

Okay, this is where things get a bit hazy. But that's alright, because this stage won't be happening for at least another few weeks, and by then I'll have a lot more of the information gaps filled in my roadmap. The final stage will be to wipe all the machines on the floor, repartition them, install Tiger on them, and t

hen install Radmind on them. Actually, I'll probably just build one general system, set it up as a Radmind client, and clone it to my remaining systems. Once all that is done, it's time to whip out my Radmind. At this point it should just be a matter of designing sets in Radmind for each hardware/software configuration in the lab, and then simply telling Radmind to setup the systems. The staff machines can get updated then too, or along the way (though I may or may not manage them with Radmind -- staff machines are still up in the air at this point, and if I do use Radmind on them, I may make a completely new Staff Master config). And then I can turn my attention to the server. But that shouldn't be too bad, right? (I can't believe I just said that!) The major hurdle is the lab migration and Radmind implementation. Once that's under way, life should be pretty good.

Sound easy? My life should be so easy.

I'll keep you posted.

Tiger Raves

I know. I bitch and bitch and bitch. But there are some things I really like about Tiger. And now that I have stupid Spotlight under control, I'm in a much better frame of mind to talk about them. So I thought I'd take a minute out of my busy complaint schedule and write them down. These are really just off the top of my head.

TextEdit:One of my favorite things in Tiger is the new TextEdit application. I use this thing all the time, and they've added some small but very useful features.
• My most-used is the Lists feature, which allows you to define an outline style, very easily and intuitively, using bullets, Roman numerals, letters, numbers, and/or dashes. It's wonderful if you tend to make a lot of outlines, which I do. I had always used OmniOutlier for this in the past, but now I don't have to. Basic outline functionality is part of a bundled app that I use all the time and am very accustomed to. Cool!
• TextEdit now allows for basic creation, editing, and exporting of HTML. While I doubt I'll use this much, it's nice to know it's there.

Automator:I've gotten pretty used to writing shell scripts for most of the things I want to do. But Automator allows for a level of interaction in the GUI and applications that is difficult or impossible from the shell. Though it's basically just a user-friendly method of accessing AppleScript, I am pleased to see it. I, for one, could never quite effectively wrap my brain around the AppleScript language, either through lack of motivation, or intelligence. Right now it's a bit limited (Automator, I mean, not my brain, though the latter certainly might apply). But I'm hoping development on Automator grows and that we start to see lots and lots of available new actions, so that I'll never have to learn AppleScript. That would make Automator sweet!

Safari:The new features in Safari are subtle but nice. The best part is that the new features have not done anything much to break all the old stuff that is great about Safari.
• RSS feeds can now be read directly in the browser. I'm not a big RSS guy, but I do think the implementation is nice, and it's something that users have come to expect. I do feel, however, that if you really follow feeds, you'll probably want a specialized application for them. I mean, isn't part of the point of feeds to avoid the browser? Maybe I don't get it.
• Searching bookmarks is way cool!
• Importing/exporting bookmarks: Also way cool!
• The error messages and ensuing Network Diagnostic tool that show up when you have a connection problem are really great. I've never seen anything like this. I had some wireless problems and, until I figured out the solution, Network Diagnostics always got me back online. This is fantastic for inexperienced users, and in my experience, performed exceptionally.
• Sorry (I know this is supposed to be a rave), but I still want to be able to bookmark a group of tabs. Why is this taking so long?

Preview:The new Preview application has a few features I've really been longing for.
• Bookmarks, bookmarks, bookmarks! I read a lot of big long OSX Server (and some other) manuals. I don't know if you've ever read any of these, but they're very -- I don't know -- non-linear, for lack of a better word. That is, they give you an instruction in chapter 6 and then tell you to go to chapter 77 for more details. Chapter 77 then jumps you to chapter 42, which refers you back to chapter 6. There was never a good way to arbitrarily jump around between these chapters. These manuals always screamed out for bookmarks, and now we finally have them. Yay!
• Annotations are also pretty nifty. They allow you to write little comments and notes directly inside your PDF. The problem is that once the PDF is saved, the notes are saved permanently with it. There is no way to go back and remove or change them.
• The slideshow feature, while not really new (you could always go to "Full Screen..." mode in Panther's Preview), is vastly improved, and very nicely implemented, with a beautiful controller and lots of key controls for everything from shufflng through images to toggling between "fill screen" and native image resolution. Super nice!

UNIX:Ahhh! At long last! Some really great changes to the UNIX level. And very little removal of features.
• Finally we have UNIX commands that can handle resource forks, or as they're called in Tiger, "extended attributes." Sometimes this requires an -E flag (as in the case of scp) sometimes it doesn't (as in the case of cp). But in the end, who really cares? It's just so great to be able to finally use the shell like the other kids.
• ACLs are a new addition to Tiger's UNIX underside. Mainly for the server, they can be activated on the client version giving admins finer "granular" (my word for the week) control over permissions. Best thing is, the syntax (if not the dizzying array of combinations and hierarchies that can be achieved) is very simple and straightforward, thus reducing the fear factor and the learning curve. Pure Apple all the way. This is why I love those guys.

QuickTime 7 Pro:QuickTime 7 Pro has a few new features that kinda make you go, "Damn! It's about frickin' time, people!" As it turns out, these changes were not all that easy to make to this core piece of the OS. These are changes that, if you work with video at all, you will begin to see the benefit of, both immediately and for some time down the road. QuickTime now uses the graphics card to process (decompress) all the video in any (or all) given movie(s) that happen(s) to be playing. This opens the door to all kinds of great enhancements to the app, and to apps that use the QuickTime engine to any large degree.
• QuickTime Player 7's full screen mode and dynamic resizing are beautiful and work really, really well. The controller is also very nice, and added key commands in full-screen are simply delicious.
• QuickTime Player should now be much more capable dealing with highly compressed video during real-time playback.
• You can now export multiple videos while watching others.
• QuickTime Player now records video, albeit in a very functionally limited way (see my Tiger Beefs).

Mail:Some people love the new Mail look; some people hate it. Whatever your opinion, there are some important improvements in Apple's new Mail app.
• Finally we have the ability to tab into the all various fields of the mail browser.
• Searching is much improved: faster and more configurable.
• Smart folders for Mail are really useful. I don't really have a use for them in the Finder (and, at this point, I don't trust Spotlight with them anyway), but in Mail they really make sense and they work fairly reliably (though not without their quirks). I'm using them already to sort certain types of mail like my software licenses and my daily mail.
• You can now get a BCC field right from the message window.
• And personally, I like the new look. Panther's Mail just looks kinda silly and dated to me now.

The Finder:While the Finder is, in many regards, far more irritating than it should be (I try not to think about it, but when I read certain articles, I get pretty ticked), there are a few things about it that do, actually rock.
• The Finder now has a slideshow mode just like Preview's. Select a group of images from the FInder, control-click them and choose "Slideshow," and you're there: Full-screen slide show, with the lovely controller and the same key commands you get in Preview. Very nice. My Windows-using friends aren't laughing at me as much now, which I really enjoy.
• Sidebar menu items are, mercifully, contr ol-clickable now.
• Changes to the file system are now immediately reflected in the Finder. That is: copy something to the Desktop from the shell, and it appears without having to select the Desktop. This has been a long time coming and it's a relief to see.
• Well, that's all I can think of right now. Which is really kind of sad...
UPDATE:
• I just found one thing to love about the new Get Info: labels. You wouldn't think this would be such a cool thing to do from Get Info. Unless of course you have 100 files you want to temporarily change permissions on, label, and then revert permissions. I just had a need to do this, and being able to do it all from the Get Info window was simply wonderful.

Installer:This a weird entry, I know. But I thought there were a couple of little tweaks in the Inistaller app that were worth mentioning.
• The "Show Files" window is now searchable. Searching in this window can be quirky: If you search something that yields no results, the flip-down arrow disappears and must be reset by clearing the search field and re-entering the main window to re-flip it. Also, it's case sensitive. Still it's nice to see it there, and it's something that could be potentially very useful to admins like me who want to see what gets installed with the latest OS update. (Will this overwrite my resource-fork aware version of rsync? Wait... Doesn't matter now... But you get the point.)
• The "Show Files" window closes with command-w. Ahhh... That's much better!...

Networking:Networking has seen an improvement here and there.
• My favorite appears in the Advanced section of the Firewall portion of the Sharing pane: Stealth Mode. Apparently, Stealth Mode blocks uninvited network traffic from ever receiving an acknowledgement of your computer's existence. How all this happens, I have no idea. But it sure sounds fantastic!
• Also, now availble in the same section is Firewall logging. I do know how that works and I'm darn glad to see it.
• The Airport section of the Networking pane in Tiger has been revamped for the better. You can now set up a list of preferred networks -- both open and closed, secure or not -- for Airport to join when in range. This list was hidden and, thus, unalterable prior to Tiger. It's definitely something I've always wanted, so I'm psyched.

Help:It hasn't changed all that much, but for the sake of completeness, I do have one favorable thing to say about the Help application, and it's important.
• Help has gotten faster. Thank God!
• And, oh yeah! A little bit more helpful. (Okay, that's two.)

General:• Multiple text selections are now supported in most OS X apps. So, if I really, really want to, I can select "multiple" and "apps" and cut, copy and/or paste them to my heart's desire.
• The RSS Screen Saver is a neat idea, and well done. I would, however, like to be able to change things like the color, but whatever. I'll live.
• There really are some nice new Desktop pictures.

Conclusions:Tiger both adds and removes both some good and some bad to and/or from the Macintosh OS. Overall I've had more problems with this release than I had with Panther. But then again, I think there is much more significant stuff going on under the hood in Tiger than there was in Panther. It's a much more (possibly the most) ambitious release of OS X. But most of the ambition is happening behind the scenes. This is probably why it's been more problematic than most. Hopefully, though, it's this same ambitousness that will make Mac OS X an even greater OS than it already is. We may have to bear some bumps and bruises along the way, but my guess is it'll be worth it.

Tiger UTI Encounter

Okay, so I will bore you with the story (see previous story).

I've recently begun writing shell scripts. Just little things to make my life a bit easier or pass the time. Nothing big. Nothing complicated. But over the past few months I've written quite a few scripts, and in doing so, I've developed a working method. It's really not that interesting, but what I've done when writing scripts, to keep everything organized in a way that makes sense to me, is to start with a development folder named after the script. Versions are kept here. Each time I get to a certain point in the script where something I'm trying to do is working, I'll save it with a new version number -- usually something stunningly original, like 02, or 03, or maybe even 04. I'll also label my scripts according to their level of completeness -- yellow means "not working," orange means "working but not quite the way I'd like it," green means it's "done." Finally, I've always appended these in-progress scripts with a .sh file suffix. When I have a script that I like and want to make it double-clickable, I make a copy of it, put it in a folder of useful scripts, called, shockingly, "Useful Scripts," and change its suffix to .command. The .command suffix tells Mac OSX to open the file in Terminal and run the script while the .sh files continue to open in TextEdit (now that I've assigned them to do so using the "Get Info" panel) for quick easy editing.

Or at least they did. In Panther.

Tiger, as in many of my other workflows, has made fundamental changes to the operating system that break the original functionality to some degree, and thus break my workflow. In Tiger, text files with the .command suffix open in Terminal, but so do ones with the .sh suffix. If I change the "Open With..." application for .sh to TextEdit, using "Get Info" and apply the "Change All" option, files with the .command get changed too, though the ensuing warning message still (erroneously) states that the change will only affect files with the .sh suffix. So for some reason, Tiger is now associating .sh and .command files with the same application type -- essentially seeing them as the same types of files, which, in a way, they are. But Panther didn't do this, Panther allowed me to specify which apps opened certain types of files based on their suffix. I wanted to know what was going on, so I decided to hunt around a bit.

One of the big underlying changes in Tiger is the way it classifies files, meaning, how it answers the questions "what kind of file is this," and "in what application should I open it?" These questions have have always been been problematic, and especially so since the inception of Mac OSX. Prior to OSX, in OS9 that is, the Mac used information in the resource fork of any file to determine the file type and creator (i.e. the application that should open the file). This was usually a pretty good system, in my experience. But once OSX came along, Mac started using a combination of criteria to determine the file type and creator. Resource forks were still used, but in addition to resource forks, you could use file suffixes (like .sh and .command) to distinguish your files. This added an extra level of complexity to the association (between application and file) process, but also an extra level of flexibility: I could name two identical files with different suffixes, and then associate the suffixes with various different applications. So, I could have files with the .sh suffix open in TextEdit, and then have virtually identical (in content) files with the .command suffix open in Terminal. This was pretty nifty, I must say, and I got very used to it.

Silly me.

I should have realized that Mac OSX is still very much an evolving operating system. Apple is constantly making changes to the OS, some of them disruptive to work flows, and often (though not this one, actually) arbitrary. Each new release generally involves some kind of learning -- or maybe I should say re-learning -- curve. Key commands, for example, change all the time. (I still can't for the life of me, remember the key combo to flag an email!) It can be very frustrating. I tend to get into a way of working, and sometimes the changes made in major OS revisions drive me crazy. Then again, often they are not without purpose, and, in the end, for the better. So, I take them with a grain of salt, hold my breath, and hope.

Enter UTIs.

UTI stands for Uniform Type Identifier. With UTIs Apple is again trying to redefine the method by which files are identified and classified. From what I've read in everyone's favorite (myself included) ars technica article, they're doing so in a very smart way that should yield flexible yet accurate results and methods for both software and OS designers. The problem in the current implementation is that flexibility for the user is compromised. You see, certain UTIs and their implementation are hard coded and enforced by Apple. Software developers can write and specify their own proprietary UTIs outside of Apple's set, but type identifiers lie inside applications themselves and can't really be altered by the user. This means that, at least at this point, users have no way to associate a particular kind of file with more than one application if that specification has already been made in Apple's UTIs.

You can see where this is going, right?

So after much hunting around, reading up, and deleting of preferences and caches, I discovered (using the excellent RCDefaultApp preference pane), much to my dismay, that both .sh and .command files have a UTI defined for them. And it's the same UTI. So there is no way for the user to change the application association of one without changing the other. At least not that I could find. And I tried pretty hard. This means that this sort of association decision has been largely removed from the hands of the user and placed in the hands of developers. And now there's no way to change it. At least in OS9, if you wanted to (and I often did) you could get a resource editor and change the application association of a given file. And in Panther you could do this as well, but you had the extra option of simply changing the file suffix and making the association for all similarly suffixed files the same in the Get Info panel. Now we have a system of rigidly designed and enforced (from a user standpoint) identifiers and no way to override them for our own devious purposes, or, for that matter, for our most basic of workflows. I suppose now I'm going to have to rename all my .sh files to .txt to get back my old workflow. (Can anyone say "Automator?" Or, wait, maybe I'll just write shell script to do it. Seems more ironic.) But God only knows if, when or how the UTI for .txt will change. Or if Apple will even continue to use the UTI system.

Yes, I live in constant fear.