Really last minute WWDC predictions

Short this year, but I wanted to get something up.

  • New iPhone demo
  • iPhone not immediately available
  • 10.6 demo. No, this isn’t 10.5 SP1 (really!)
  • No new MacBook Pro, much as I want one
  • A cleaner architectural re-alignment of OS X from a developer perspective
  • Twitter will melt
  • AAPL will be up at the end of the day
  • I don’t see how they can launch the store until next week. Half the people here would be immediately flooded with support and administrative requests. There will be pre-launch resources available, but the store won’t launch right away.

    10.5 is great, but there are a lot of rough edges. The rumors about 10.6 being previewed are probably true, but I don’t think this will be a $129 upgrade. This will essentially be Service Pack 1. Apple isn’t Adobe, they won’t charge money to fix things that are broken.

    Twitter is going to add such a bizarre additional layer to this.

    And we’re walking in… or at least closer.

    Share |

    link: Jun 09, 2008 9:48 am
    posted in: misc.
    Tags: , , ,

On “seat meat” and padding your office

Dan Benjamin linked to a somewhat bizarre product, Thriving Office. While I can completely understand the thought behind this, the absurdity of it makes me a little sad.

I commented about how it was common to pad an office with “seat meat” for client visits. He then replied:

Is that really common? wow that’s a shame. I’d rather have no business than business based on false pretenses.

It depends on how it’s done. There’s nothing wrong with asking assorted freelancers to come in on a specific day. Especially if their being in the office helps convince a client that you’re big enough to handle an assignment, which then allows you to hire those same freelancers for that project.

Branding is fundamentally about crafting how other people perceive a company.

We dress up for meetings, as a sign of respect but also to give the client confidence in us. Is that superficial? Yes. But split-second instant judgements always are. Split-second judgements often make or break a deal.

An empty desk never says anything good about a business in the same way vacant storefronts or lots are bad things for a neighborhood.

As a business, it’s a whole package thing. We dress up. The office is cleaned. Seats are filled. Fresh flowers are put at the front desk. Nice baked goods and fruit are offered. Fresh coffee is brewed.

In a way, everything is a design problem. How a business communicates it’s own image is vital to it’s long term success.

Our sad GE Oven Saga

Normally I don’t like to use this site to vent or gripe, but I’m going to make an exception here.

For the past several months, the oven in our 3.5 year old GE Profile gas range (JGS968) has been half-broken. It leaks gas and won’t stay hot.

The problem is completely reproducible:

  1. Set oven to some common baking temperature, like 350°.
  2. About 5-10 minutes after the oven comes to temperature, the smell of gas will be noticeable. It has essentially “gone out”. The oven will start to lose temperature but the flow of gas seems to continue.

If the oven is turned off and restarted to again bake at 350°, the temperature will start out significantly below the 350° mark. Often, the temperature will then stall, never rising above the first sampled temperature.

The oven can be “re-lit” by rapidly opening and closing the door. Like a bellows. There is an audible ‘poomf’ and the temperature immediately starts rising again.

The stovetop burners work fine. The only time we smell gas is when trying to use the oven.

It should be obvious that this problem makes the oven nearly useless. Besides gassing everyone out of the room, it can’t hold a temperature so baking and slow-cooking are nearly-impossible. At least the broiler works.

I’m a repair guy, see I have a shirt.

So far we’ve had five visits from three different GE repairmen. Of the three, only one was worth paying. Of course we never saw that one again.

The first visit, way back in December, the guy came with some sort of gas-sniffing instrument, poked around for 5 minutes then told me to change the incoming gas line, that GE doesn’t cover that and it just cost me $100 for him to tell me that. I pointed out that there were no gas problems with the stove, which feeds from the same hose, but he insisted, swiped my credit card and left.

The second visit, was the nice and seemingly competent repair guy. After listening and poking around more than any of them, I’m seem to remember this was the only repairman who checked behind the oven, after asking a lot of questions (!), he replaced the igniter, and billed us for the part.

Third and fourth visits were the first guy again, but at least we’d been escalated so no more charges. First he determined it was a part which would need to be mailed to us. Part ordered, next visit scheduled. Next visit, part replaced. He waited a few minutes to be sure it worked, which wasn’t long enough, then left. We tried to cook dinner the next night and the problem was as bad as ever, or slightly worse.

Today I had the worst repair visit ever. After describing our completely reproducible problem in detail, the GE repairman told me that our problem was “not possible”, condescendingly implied that I was confusing the smell of a warm oven with the smell of gas and then left. Sure, I called GE customer service (800-386-1215) and constructively bitched them out, but it still cost me another half day and raised my blood pressure to Bruce Banner levels.

Our next repair is scheduled with an independent service company on April 1st. Fitting.


iTransmogrify server issues

Google Code is returning Server errors when trying to load any of the iTransmogrify! source files or project pages. This has effectively taken the whole thing offline.

I have a solution which I will try to implement in the next hour, but it will be somewhat difficult and clumsy without access to the SVN repository.

Sorry about this, we’ll be back shortly.

Update: All working and back to normal.

Home movies as iTunes TV Shows

Update: At some point, probably with iTunes 8 though I didn’t notice at the time, iTunes added support for batch changing video format, making the script featured in this post obsolete… as it should be.


Original post follows.

We usually keep our home movies in iPhoto, but recently I’ve started moving some select clips into iTunes. Unfortunately, the list of Movies quickly becomes unmanageable. These kinds of videos are much easier to work with when grouped as TV shows, but unfortunately iTunes won’t batch convert Video Kind.

So I wrote a script. In addition to defining selected movies as a show, it also tags their season with the current year and sets the Show Title. Here’s the script: (Open in Script Editor)

set showTitle to display dialog “Enter TV Show Title” default answer “Family Videos” buttons {“Cancel”, “Ok”} default button 2

set theYear to year of (current date) as integer

tell application “iTunes”

copy selection to tracklist

repeat with theTrack in tracklist

set show of theTrack to text returned of showTitle

set season number of theTrack to theYear

set video kind of theTrack to TV show

end repeat

end tell


To use that, just select some movies in iTunes and run the script. Whatever’s selected will be tagged and grouped under the title you entered.

Now our home movies are all grouped together and easily synced to iPhones or other iTunes fed products like iPods and Apple TVs. To view videos on any of those devices, the movies will need to be converted to iPod compatible format. QuickTime can do it, but iSquint/VisualHub can do it much faster.

This could have been done with AtomicParsley, but AppleScript is easier and pre-installed on every Mac.

What would be really great is if iTunes and iPhoto could talk to one another and pull video content out. iPhoto has supported movies for years now, why can’t they talk to each other? (because neither was designed for handling video formats?)

There’s plenty of room to improve this, if you do please post a link in the comments.

Fixing a Palm duplicate disaster

I recently came across an absolute disaster of a Palm Desktop data file while helping someone setup a new iPhone. It had 13,572 contacts, mostly duplicates. Judging from the number of obvious duplicate entries, my guess is the actual number will be somewhere around 2500 (it was).

Here is the process I used to automatically remove a lot of those duplicates and import the remainder into the Mac’s Address Book.

The first step is to get out of Palm Desktop as soon as possible. Select all contacts and export to a group VCard. This one was 3.4 MB.

Most of this will happen in Terminal, but a quick stop in BBEdit or TextWrangler will save a few steps later on. (TextMate tends to choke on big, non-UTF files.) The Palm export file is encoded in MacRoman. It’s 2008, pretty much any text that isn’t Unicode should be. I used TextWrangler to convert the encoding to UTF-8 no BOM (byte order marker).

VCards require Windows style CRLF line endings. While we could deal with those in Sed, we might as well just switch the file to Unix style LF endings in TextWrangler too. The TextWrangler bottom bar should switch from this:

MacRoman CRLF

To this:

utf8 LF

Now comes the magic.

While this could be done as an impossible-to-read one-line sed command, it’s easier to digest and debug as separate command files.

Here are the steps:

  1. Use Sed to join each individual VCard into a single line using a token to replace line feeds, output to intermediate file
  2. Sort and Uniq the result to remove obvious duplicates.
  3. Replace the tokens with line feeds

Below are the two sed command files I used. I ran these individually but they could easily be piped together into a one-line command.


# define the range we'll be working with

# define the loopback

# add the next line to the pattern buffer

# if pattern is not found, loopback and add more lines
/\nEND:VCARD$/! b loop

# replace newlines in multi-line pattern
s/\n/   %%%     /g

Run that like this:

sed -f vcard_oneline.sed palm_dump.vcf > vcards_oneline.txt

Then run that file through sort and uniq:

sort vcards_oneline.txt | uniq > vcards_clean.txt 


# replace tokens with DOS style CRLF line endings
s/      %%%     /^M\

# add the <CR> before the LF at the end of the line

Run that with something like this:

sed -f vcard_restore.sed vcards_clean.txt > vcards_clean.vcf

After that last step, you should be able to drag the vcards_clean.vcf file into Address Book to import your vcards.

Suggestions for improvement are always welcomed.


In VIM, type the tab character as control-v-i (hold control while pressing v then i), type the line break by typing control-v-enter.

iconv could be used to convert from MacRoman to UTF-8. TextWrangler just seemed easier at the time.

Palm Desktop appears to dump group VCards in input order, so duplicate entries were not grouped together. Running the output through sort visually reveals a ton of duplicates and makes it possible to use uniq to remove consecutive duplicates.

I had to quit and re-open Address Book once or twice before it would import the files.

Tabbed clipboard to HTML Table

I was looking for a quick way to get a structured table from some data I had in Numbers. Unfortunately Numbers isn’t scriptable and doesn’t seem to offer plain HTML export. After a little poking around, I just ended up writing a script to do what I wanted.

This little AppleScript will convert anything text in the clipboard into a simple, unstyled HTML table. View the script in Script Editor

Just save it into your Scripts folder and call it after copying some data to the clipboard. Any text on your clipboard will be converted to a basic, un-styled HTML table, ready to paste.

set oldDelims to AppleScript‘s text item delimiters

set AppleScript‘s text item delimiters to return

set TRs to every text item of (the clipboard as text)

set AppleScript‘s text item delimiters to tab

set theTable to “<table>” & return

repeat with TR in TRs

copy theTable & “<tr>” & return to theTable

repeat with TD in text items of TR

copy theTable & “<td>” & TD & “</td>” & return to theTable

end repeat

copy theTable & “</tr>” & return to theTable

end repeat

copy theTable & “</table>” to theTable

set AppleScript‘s text item delimiters to oldDelims

set the clipboard to theTable

« Previous PageNext Page »