rooSwitch is now SwitchUp!

February 6th, 2013

I'm excited to announce that rooSwitch has a new home, name & most importantly a new caretaker. Irradiated Software has been handed the keys and has renamed it to SwitchUp.

1.6 is available now from Irradiated Software adding Mountain Lion support, some UI tweaks and some goodies. Full release notes here.

Your existing rooSwitch licenses will continue to work with SwitchUp.


rooSwitch and OS X 10.8, Mountain Lion, Don’t Jive

July 9th, 2012

Update Aug 31, 2012

I’m having to throw in the towel for now. rooSwitch is dead. It had a good run. 1.0 shipped over 6 years ago! If you purchased a license in the last 3 or so months and want a refund, just let me know.

I shipped a minor update to rooSwitch (1.5.4) Sadly, the only change here is to detect that it’s being run on Mountain Lion, inform the user about the incompatibility, and quit.

Here’s the deal. You ask rooSwitch to do it’s thing and switch to a new profile. It quits the app being switched (if it was running), and moves the files around. Great! However, Mountain Lion seems to, at some indeterminable amount of time after quit, re-write the preferences file for the app, overwriting what rooSwitch just put there losing that copy!

If you had your profile set to copy files (vs. move), you can “restore” in rooSwitch and it may or may not succeed that time. I’ve had to invoke restore numerous times and wait minutes before the file copy would stick.

I’ll update this post with more info if I’m able to get things working reliably.

Announcing My App Status

May 28th, 2012

My App Status is something I’ve wanted for some time now. The tag line is: Easily see the App Store state of your Mac and iOS apps.

I set out to solve two problems I have had working on teams building iOS apps:

  • I don’t have an iTunes Connect account for the team, so I don’t get an email when our app goes “In Review”, “Approved” or “Rejected”.
  • I suck at remembering how long ago an app was submitted to iTunes connect. And even if I do have an iTunes Connect user, logging in to figure that out is a pain.

So My App Status tries to ease this pain by receiving and parsing iTunes Connect app status change emails and notifying your team and making it easy for any team member to log in and see the state of your apps.

There’s a guide explaining how those emails get to My App Status. The short version is your team gets a email address and then you either create an iTunes Connect user with that address, or you have someone receiving the emails already forward them to your address (typically with a rule setup to auto-fwd).

How much?

My App Status is mostly free. I want as many apps in here as possible (more on that later). However, to help cover costs and hopefully make a little money, a Plus subscription is available. The Plus subscription is $9/month and provides teams more than just email notifications. Currently the Plus notification options are:

I’m also planning to do free iOS and Mac clients that can receive push notifications (the Mac client would require Mountain Lion for push notifs). Though there’s the obvious concern that Apple will take issue with what My App Status is doing and not allow those in the store. Time will tell.

Average wait time

As mentioned above, I want as many apps as I can get going through My App Status. My goal is to eventually have enough such that I can provide average wait times for Mac and iOS reviews. Until then, I’d definitely recommend Shiny Development’s great Average App Store Review Times.

Some Thanks

Many thanks to the folks that helped me test, or just listened to me pitch the idea. And thanks to former co-workers Dave and Derrick for helping form and improve the idea with me many months ago.

Please email me if you have other notification suggestions or any feedback or issues.


Simple, Temporary Bookmarking in Xcode 4

April 15th, 2012

Back in January I asked on Twitter:

Is there an Xcode trick to easily jump back to the line I was editing after I jump to the top to add a #import?

Some suggested that “Go Back” would work, but that never works for me. It always takes me further back.

My solution? A TextExpander snippet that inserts a placeholder, like:


I have that snippet mapped to ‘cbh’. So when I need to add an import I type cbh, jump to the top, add my #import and hit ctrl-/ (Jump to next placeholder). Success!

I’ve been using this for at least three weeks and have found it works quite well.

Unrelated: I found my old tweet thanks to Tweet Marker Plus. Great addition to an already great service and a great way to support the said great service. It’s great!</Tony the Tiger>


November 18th, 2011

On the twitters, friend Justin Driscoll mentioned:

iOS needs a block-based UIAlertView. So many currently-delegate based interfaces would be better served by block callbacks.

I’ve wanted the same. I’ve also wanted to contribute more open source code. With some time on my hands, I threw together RooAlertView.

As I mention in the README, I’m not terribly happy with it. I like the public interface, a single class method. But am sad to report that the static analyzer doesn’t like the implementation. The static method alloc, init’s a RooAlertView and then relies on the UIAlertViewDelegate’s callback to be called and then releases itself. I’m fairly confident it works and all, but am hopeful someone will provide a better solution that the analyzer likes and that’s probably cleaner.


August 5th, 2010

While looking for how to setup user scripts in Xcode 4 I stumbled into Tony Arnold’s Xcode-4-Uncrustify-Automator-Services on github. Creating a service with Automator answered my original, but the real find was uncrustify.

From the uncrustify website:

The goals of this project are simple: Create a highly configurable, easily modifiable source code beautifier.

Since Tony had provided nice Automator actions, I figured I’d take it for a spin. After a quick

brew install uncrustify

and a few minutes messing with Tony’s sample .uncrustify.cfg making my own, I was impressed.

While in Xcode 4 I used Tony’s Automator service to uncrustify the selected text (I select whole files at a time). However, I had to give up on Xcode 4 due to stability issues so found myself back in Xcode 3.2.x. While in Xcode 3 I decided to create a User Script for uncrustify, thinking it would be much faster to execute. So now I have a shell script execute uncrustify on the selection and replace the selection with the uncrustified result (stealing the uncrustify line from Tony’s Automator service). I also have this bound to cmd+option+ctrl+u.

/usr/local/bin/uncrustify -l OC -q

Here’s the User Script setup:

user script setup in Xcode 3.2.3

Liar! Note that it says I’m using ‘g’ as the shortcut instead of ‘u’ like I said. I’m pushing the ‘u’ key but it’s bound to ‘g’ in the Dvorak keyboard layout.

I’m not sure if I’m early or late to the uncrustify party, but I’m happy to be here.

Oh, and if someone does know how to setup User Scripts in Xcode 4, do tell!

Wait, one more thing! I’m working on a project where my 6 lines of whitespace after each function body wasn’t appreciated (understandable, it’s not for everyone :P ). rooSwitch to the rescue! I already have profiles for slight differences in Xcode prefs, so I dropped my .uncrustify.cfg on each profile and am now switching that file with the slight difference for this project. Success.

roobasoft v2.0: roobasoft is now rocket

October 1st, 2009

Short story

I’ve co-founded a new company, rocket, with the designer I worked with on Concentrate. Over the next month or so all roobasoft products will be transitioned over to rocket and will be sold through rocket’s online store. This is mostly a name change. I’ll still be the man doing the development and support, but now I’ll also have Dave helping to make things prettier and more user friendly.

More details

Shortly after hiring Dave to work on Concentrate I asked him if he was interested in partnering up in some way. At the time he was working full-time-ish for a startup with potential to be a big deal, so although he was interested, the timing wasn’t right.

4.5 or so months later and the timing was better, so we decided to talk through it. We ended up meeting at least once a week for lunch for a good month or so talking through details. Then in early September we met with an accountant and worked through business details. At this point it really started to take shape. Finally, on September 22nd, 2009, the secretary of the state of Idaho stamped our articles of incorporation and made it official, we were business partners. We’ve now got a fancy website, all sorts of official documents, a bank account and two names (our official company name is Made By Rocket, Inc., but we have a legally assumed business name of rocket).


  • Our skills are complementary. I now have access to a designer without having to worry about hours spent, and Dave has access to a programmer without having to worry about hours spent.
  • We worked well together. Regardless of how we did it, it was clear we’d be working together in the future. So partnering up seemed like a solid choice.
  • Two is better than one. We’re both excited to have each other to bounce ideas off of, help keep each other on track and to help make better business decisions (or at least make sure we talk through things first).


I’m guessing some of you are interested in how things are structured, so here’s a short explanation:

roobasoft, LLC will still exist and will remain 100% owned by my wife and I. All existing roobasoft apps will remain owned by roobasoft. roobasoft will license the rights to sell the apps to Made By Rocket, Inc. (an S-corp). rocket is co-owned 50/50 by Dave and I. That’s it. It’s really all a bit simpler than we thought and probably simpler than it sounds. Feel free to shoot me an email if you have any questions or want to know more, I’m happy to provide more details.

That’s it. So roobasoft still exists, but it won’t be publicly active in a month or so. Our plan is to put a page up on explaining it’s now rocket and pointing to However, I do plan to keep this blog and will probably even continue to post things here. We’ll see.

Snow Leopard Readiness

August 25th, 2009

Just a quick note to mention that both rooSwitch and Concentrate work great on Snow Leopard. I’ve been testing and developing with Snow Leopard for the past couple months now and have, I believe, ironed out all the known Snow Leopard specific issues.

Avoiding procrastination with next actions

August 18th, 2009

I’m guessing the content of this post won’t be news to most folks, but it helped me so much I wanted to write it down.

Sometime in April I was chatting with Andy Kim, of Potion Factory and The Hit List fame, over IM and I asked him how he, a one-man shop producing some awesome stuff (both code and design work), got things done. His advice was pretty simple: Always make sure you know what to do next. I’m convinced that advice, along with a lot of other things, helped make the next three months extremely productive for me.

This really wasn’t anything new. I’m sure I had heard this before, but hearing it from Andy was apparently just enough to make me actually try it for reals and experience it for myself.

It wasn’t long before I noticed how serious the change was. If I either didn’t have my “to do today” (more on that later) list available, or I had let myself finish everything without adding to it, I would almost immediately procrastinate when a task was done. However, when I crossed something out, if there was another task to pickup and do right there without me having to think about ‘what now?’, I almost always immediately got to it. So simple.

How I manage my lists

I use two list systems. One for my to do today list, and one for planning at a larger level. The to do today list is paper based. I carry a small Moleskine squared notebook for this list. My other lists are stored in The Hit List organized into folders and releases and stuff like that. Every morning I scan my lists in The Hit List and write stuff down in my to do today list. I put a large square to start each item and then write the task next to it. When I complete a task I put a check in the box and strike out the words. If I decide to not do something, I use an X and strike out the words. This has worked great for me.

If I notice my to do today list getting small, and I know I have a lot of available time left in the day, I try to make sure I re-scan The Hit List for things to add. This is because I know if the list is empty before I’m done working for the day I’ll find myself watching YouTube videos of babies laughing or on Wikipedia reading about a Country I’ll never visit.

More on To Do Today

Concentrate was heavily inspired by a productivity method called The Pomodoro Technique. Part of that technique involves a To Do Today list. You pick from your larger list and put down what you think you can do today. The technique also has you estimate tasks and some other stuff that I don’t do, but are probably worth checking out. The Pomodoro Technique gave me the idea for the to do today list vs. working off one master list. I highly recommend it. Being able to look at a, relatively, much smaller list makes a huge difference compared to staring at your endless list for a project.

Feel free to drop a comment here with your own take on this. I’d be curious if others are using a to do today list or if you try it and how it worked for you. Good luck!

roobasoft v2.0: Month 3+ review

August 15th, 2009

I’m now a bit over half way done with my 6 month roobasoft v2.0 experiment. The goal was to be able to support my family 100% off my own apps by the end of the 6 months. Although I don’t think my apps will meet that goal, I do think it’s going to be a lot closer than I originally expected[1]. And that’s real exciting. That cautious optimism[2] is all due to Concentrate’s launch.

So as you could guess, the biggest news here at roobasoft HQ is that Concentrate has officially shipped. So far, it’s been very successful (compared to other apps I’ve launched). I wrote a bit more about it on the Concentrate blog here.

The most enjoyable part of the release has been watching people talk about it on Twitter. This has meant a lot. Folks seem to get the idea and see how it can help them pretty quickly, and that’s very important. It means a lot when people recommend it so willingly.

To watch twitter real time I’ve been using a new Mac app, Incoming!, to search for the terms: getconcentrating, #Concentrate, Concentrate app and Concentrate OS X. Incoming! has a lot of potential, but its quite buggy in its current beta form. Hopefully it will all be cleaned up soon. Should be a great tool. Update Aug. 16th: 0.89 of Incoming! just came out and fixes both of my reported issues. If you need to keep an eye on twitter I’d definitely check Incoming! out, it’s looking great.

It’s also been enjoyable to get fantastic feedback from users. From that feedback I’ve been able to prioritize features and have scheduled what will be in Concentrate’s 1.1 and 1.2 releases.

I have a few blog posts I want to write. I’m hoping mentioning them here will help make me feel accountable and actually write them. Here are the ideas:

  1. Avoiding procrastination with next actions
  2. roobasoft v2.0′s secret weapon: A project coach
  3. Taking the time to pay attention to details

OK, that should keep me busy until the next v2.0 post, which surely will be late. In fact, how ’bout I just say there won’t be another until October 1st. Done. It’s in my calendar. So, you know, it has a fighting chance of happening now.

[1] Yes, I set a goal I had no realistic expectation to meet)

[2] That may sound pessimistic, but trust me, it’s optimism for me.

roobasoft v2.0: Month 2+ review

July 17th, 2009

I’m a couple weeks late to writing about how the 2nd month of my 6 month experiment went, but here it is:

So what happened in June plus 2 weeks of July? Development. I started focusing on my new OS X app, Concentrate. Late May and early June were fairly slow. I spent a lot of time experimentating, brainstorming and sketching UIs. Then, about 4 weeks or so ago, the idea was whittled down to what it would be, proof of concept work was done and I had a list of high level things to do. After that everything turned over resulting in 4 extremely productive weeks. Of course I still had some slow days, but they were very few and I was able to get kicked out of them with ease. I also employed a secret weapon that I’ll blog about soon after Concentrate’s release.

So where am I today? The app finally has an official name, Concentrate, and its website is taking shape: It also has an icon:

Concentrate is currently in a private beta and I’m hoping to ship 1.0 in the middle of August.

A lot of time was spent settling on both the scope of the application, it started much bigger, and the name and icon. The scope fell into place more or less on its own. The naming, however, was a lengthy process going through about 3 “oh, that’s the one!” names and a handful of icons. I have no regrets about that time spent, I’m very happy with where it all ended. I plan to blog more about Concentrate’s history on its blog (still to be themed).

OK, if you’re interested in helping out with the beta, I’m trying out running the beta through You’re free to sign up there as a tester for free and get involved that way. Or you can just send me a note asking for a beta build (ask nice :) ). I’ll blog more about my experience after 1.0 ships.

I’d say 90% of Concentrate is done. Now it’s time to dig into the last, but most difficult, 10%.

© 2006-2009 roobasoft, LLC