Quick response on Interarchy

True to form, Matthew Drayton of Nolobe got an Interarchy bug fix out a few hours ago. Most, if not all, of the bugs have been addressed. This might be a good argument for the widespread use of public betas these days.

The new app is pretty slick. Running processes on remote servers is a killer feature if ever there was one. Having a terminal session open next to your FTP program does the same thing, but having it integrated so you can select files and pass them to the process is something else entirely.

Written on August 6, 2010

Interarchy 10, Interarchy 9 all over again

Interarchy, my long-time FTP (and SFTP, and S3, etc…) client, just got a major upgrade. Now it’s at version 10. Among its many improvements is the ability to create plugins that run programs on the server you’re connected to! So you can, for example, edit your Apache virtual hosts files, and then bounce Apache without leaving Interarchy. Extremely cool stuff.

Unfortunately, it’s chock full of bugs!

These bugs range from irritations to full on crash the application bugs, and most are the kind that seem like they should have been detected in a very modest QA check. (One button in the preferences simply kills the app if it’s running under Snow Leopard!)

Interarchy 9 had an equally spotty release. I’m assuming that a 10.1 update will be here soon, but until then, there’s a painfully buggy program out there. On the up side, of course, I can keep using version 9, and wait until 10.1 to buy the upgrade. (if I choose to do so… Transmit’s looking great these days and has a lot to recommend itself)

Written on August 5, 2010

Steve Jobs is a Whiny Bitch

The iPhone 4 is flawed. It may not be alone in this, but it’s demonstrably easier to kill its signal than it is with other phones. The fact that an inch of plastic could dramatically reduce the effect (without decreasing it’s improved reception compared to earlier iPhones, no less) only underscores that it’s a flaw.

Apple’s response was late, childish and petulant. Jobs acted as though he was OWED respect… That people should be satisfied that they got ANYTHING. He came off as an entitled brat… the same brat that Sculley fired in ‘85.

Grow up, Steve. Put on your big girl pants, apologize to the people who are disappointed that you didn’t spring for an inch of plastic to ease the attenuation.

Accusing your customers of being whiny bitches works a lot better when you aren’t acting even worse.

Written on July 20, 2010

Quick Tip: How to Figure Out if You've Already Purchased an App from iTunes

The iTunes App Store will let you re-download an application that you’ve already purchased. What it does not do, is let you see in advance whether you’re going to be charged for it. If you make a mistake, you’ll end up purchasing an app that you thought you were downloading for free!

The work-around is simple, but not obvious: Click on “Write a Review” on the app’s listing. You can only write a review if you’ve already purchased the app!

Hope that saves you some money! Thanks to Jmalley on the Whirlpool.net.au forums for this great trick!
Written on July 19, 2010

Send Google Reader Items to OmniFocus

Google Reader has a nifty “Send To…” feature that lets you push reader items to other services – such as social networks, Instapaper, and so forth.

I have recently set up a Send To service that will send your Google Reader articles to OmniFocus, provided you’re using version 1.8 or later. (Currently in beta, download it here) (Props and full credit goes to Gokubi for setting this up for version 1.7 – I just polished it up a bit and used the native URI handler in OF 1.8)

Setup is pretty simple. In Google Reader, go to your Reader Settings (upper right corner), and click on the “Send To” tab. Then you just have to add a new service, and use the following settings:

Name: OmniFocus

Send to URL: http://omnifocus.nik.me?name=${title}&note=From+${source}%3A+${short-url}

Icon URL: http://omnifocus.nik.me/OmniFocus-16.png

Then just go back to Google Reader, and choose Send To on an article (or type Shift + T), and select OmniFocus.

Again, this only works with OmniFocus 1.8, which is in beta right now. If you want the same functionality without having to switch to a potentially untrustworthy version of OF, you can use Gokubi’s original setup, which leverages my URI handler for OF 1.7 and earlier.

Written on July 16, 2010

I got my iPhone 4G early... and it's labeled 3G!

Now that jailbreaks are available for iOS 4 (what, no iOS X 10.4?), I went ahead and updated my phone. A couple .plist edits later, and my plain-old 3G gets background pictures and multi-tasking. Installed MyWi, which gives me tethering (without canceling my unlimited plan, thank you very much!) Thanks to iVideoCamera, I can capture video, and Vlingo gives me voice dialing.

So basically, I’ve got the functions of a 3GS, without the extra speed. Not bad for the price.

Now I’m dithering over whether to sell this phone on eBay (I figure an unlocked and contractless 16GB 3G with all these bonus features could be worth at least a few hundred bucks) and get a shiny new iPhone 4; or whether I’m better off staying the course, enjoying life without a contract (even switch carriers – if only T-Mobile’s 3G network worked with the iPhone), and maintaining the freedom to jailbreak and hack to my heart’s content.

Heck, if YOU want it, sound off in the comments. I figure $300 – the cost of the higher-trim-level iPhone 4 – is my “buy it now” price.

Written on June 23, 2010

Procrastinate Better With an Untrustworthy Clock

Sometimes I run late. Late to meetings, late to go home, late to pick up kids… I know I’m not alone, too. So I fixed this problem with a handy little script I call “Procrastinators Friend”. This script is pretty simple, it just sets your clock ahead by a random amount, between 5 and 15 minutes. I then set this up to run every hour, so I’ll never quite know how fast my clock is running. In order to prevent this from going crazy, it also syncs up your time with a network time server before adjusting it, so you’ll never be too fast or slow.

Naturally, the buyer should beware, here. System tools that rely on modification dates to do stuff will be thrown off by this little script. But maybe that’s worth it to be on time, every time.

Use cron or launchd to run it regularly.

Written on June 1, 2010

AppleScript tricks: What to Do When the Frontmost Window Isn't Frontmost

The Problem: Scripts often target the current document window of an application. This is usually easily handled with something like…


Tell application “Finder” to get window 1

The problem with this approach is that it returns a useless window if the wrong kind of window is in front. In the Finder, this will often be a Get Info window, folder options window, or preferences. Some applications have special classes of windows to make this easier, but many do not. To find the frontmost window of these applications, you need to do this manually.

To make this work, you need to loop through your windows until you find one of the right type. You could do this by the name of the window (e.g. find Finder windows whose names don’t contain “Finder Preferences”), but that requires you to catalog the names of every non-standard window, and can cause problems if, for example, you have a folder named “Finder Preferences.”

A better approach is to identify a property that only the right kind of windows contain. So, for Finder windows, you can look for the folder of the window, as in…

Tell application “Finder”
set theFolder to (path to desktop folder as alias)
repeat with i from 0 to (count of windows)
try
get folder of window i
set theFolder to result as alias
exit repeat
end try
end repeat
end tell

In this code, the “try” handler gracefully handles windows without the “folder” property. Likewise, by setting theFolder to the Desktop to begin with, it also handles the situation where there are no open windows.

Using this technique, the following script will open the current Finder window in a new tab in the frontmost Terminal window. If there isn’t a terminal window available, it opens a new window. The code gets pretty involved for the Terminal (including having to go to UI scripting to make a new tab), but it avoids the pitfalls of multiple open windows in each application, not all of which are useful folder or terminal windows.

on run
get quoted form of POSIX path of my getCurrentFolder()
my termScriptInNewTab(“cd ” & result)
end run

on termScriptInNewTab(cmd)
tell application “Terminal”
activate
set termWins to count of windows
set frontWin to 0
repeat with i from 1 to (count of windows)
try
set tabCount to count of tabs of window i
set frontWin to i
exit repeat
end try
end repeat
if frontWin is 0 then
do script cmd
else
set frontmost of window frontWin to true
tell application “System Events” to tell (first application process whose name is “Terminal”) to keystroke “t” using {command down}
set xi to 0
repeat until (count of tabs of window 1) is (tabCount + 1)
if xi ≤ 4 then – don’t wait more than one second
delay 0.25
else
set xi to -1
exit repeat
end if
end repeat
if xi is not -1 then
do script cmd in (last tab of window 1)
else
do script cmd
end if
end if
end tell
end termScriptInNewTab

on getCurrentFolder()
tell application “Finder”
set theFolder to (path to desktop folder as alias)
repeat with i from 0 to (count of windows)
try
get folder of window i
set theFolder to result
exit repeat
end try
end repeat
return theFolder as alias
end tell
end getCurrentFolder

Extra credit: How can you adapt the termScriptInNewTab handler to run the command in the first tab that isn’t busy, rather than a new tab?

Written on May 26, 2010

Cleaning House, Fixing Bugs...

Did some cleaning up of this site.

First off, downloads should all work now. Sorry they’ve been variously broken for so long. I finally tracked down the problem. (Turns out it was obvious, but I was dumb. So it goes.)

I also deleted about 500 comments, all of which were spam-ish. Many, I’m sure, were not. So I’m sorry if your comment got deleted. There’s also still some comment spam. Dang.

Oh. New site look. Using the Wabi Drupal theme. I like it. I keep the orange, but it’s a lot less ugly.

Look for more updates to the site in the future. And, as always, thanks for reading. Both of you. You know who you are.

Written on April 21, 2010

How I'm using TextExpander

I’ve always had a problem remember my TextExpander shortcuts, to the point that I wouldn’t use it at all. (The only way I ever found it useful was if I used very obvious shortcuts, but that ran into its own problems when the shortcuts would expand accidentally) With Version 3, I’ve managed to come up with a workflow that meets my need for memorable shortcuts, and that also takes best advantage of its new features.

The first thing I did was changed the delimiter to only be tab. That’s it. No expansions at the end of words or sentences. This makes it work pretty much like auto-complete shortcuts in many text editors. It also lets me put in extremely obvious expansions, so I remember them. (e.g. “rep” creates an AppleScript repeat block, and now I don’t have to worry about expanding when I want to reference a customer service rep in my script’s comments)

The second thing I did was made similar expansions have the same prefix. So the various repeat block snippets for AppleScript, all begin with “rep”. This lets me take advantage of TextExpander’s new “Suggest Matching Abbreviations” feature to quickly pick from many similar options. So I can type “rep” and hit option-V (you can set the shortcut in TE’s preferences), and I’ll get a nice drop down menu letting me select from among Repeat n Times, Repeat Until x, and Repeat with x in y. (Each of which also have fill-ins to make it even cooler) Of course, I can also just type, say, “repw” to get “repeat with x in y”, but I don’t have to remember it.

The one downside of this approach is that I lose the benefit of auto-correction dictionaries that fix common typos and capitalization errors. But I consider this a small price to pay for my increased productivity.

Written on April 14, 2010