App idea: a self-rearranging room

Here's a very expensive idea for a small amount of entertainment.

There's something I like about waking up in unfamiliar surroundings. I enjoy the strange dreamlike feeling and the exercise of getting reoriented.

My idea is to have a bedroom that rearranges itself while I sleep. I would wake up with the bed in a new position, perhaps at a new height. Other furniture would have moved around as well. How hard would it be to wake up to a different color scheme? Or in a different room altogether? If I were a megabillionaire I would be an eccentric one; I would hire a different designer every day and arrange to wake up to a completely different room, just to see how it feels.

With HippoRemote, who needs WriteThere?

Snow Leopard lets you enter Chinese input by drawing on your laptop's trackpad, just as you can do now on the iPhone. Unfortunately, this feature is not supported on my first-generation black MacBook.

This gave me the idea for an app that would let me enter Chinese characters on any Mac — desktop or laptop — by drawing them on my iPhone. I would have loved to use Air Mouse for this, but it doesn't support Chinese. If I ever got around to it, I was thinking I might call my app "WriteThere".

Well, wouldn't you know, today I discovered HippoRemote and it blows my idea out of the water. Like Air Mouse, it lets you use the iPhone as a remote trackpad and keyboard, but unlike Air Mouse it does support Chinese input. It wasn't obvious how to make this work, but once Albert from customer support explained it to me, it was extremely simple:

  • Download HippoVNC and install it on the Mac. Normally you wouldn't need to install a server (another advantage over Air Mouse), but you need this if you want support for international keyboards.
  • In HippoRemote (on the iPhone), turn on the "Send Unicode" option and turn off the "Live Typing" option.
  • When using the HippoRemote keyboard, you'll be entering sequences of characters and hitting the Return key to send them to the computer. When you hit the Return key, it'll go back to trackpad mode, which will be annoying if you want to enter more than one fragment of text. To avoid this, tap the "Pin" button to tell HippoRemote to stay in keyboard mode.

"Write There" might be a good exercise someday. I bet it would make a great CocoaHeads demo.

By the way, lest anyone overestimate my language skills, I barely know any Chinese. I didn't have a practical use for Chinese input; I thought maybe I could sell it on the App Store for a little pocket money, plus it would be cool to show my Mom.


App idea: extract method name from selected text

This is an idea for a Service (as in the Services menu) to help Objective-C programmers.

Often I'm looking at a method declaration or method invocation and I'd like to be able to copy and paste just the method name and not any of the arguments.

For example, say I'm looking at a method declaration like this:

- (void)putBook:(NSString *)theBookName
      inSection:(NSString *)theSectionName
      ofLibrary:(NSString *)theLibraryName
         inCity:(NSString *)theCityName;

…or a method invocation like this:

[masterLibrarian putBook:@"The Dark Knight"
               inSection:@"Graphic Novels"
               ofLibrary:@"Mid-Manhattan Branch"
                  inCity:@"New York City"];

I'd like to be able to select either of these code snippets and invoke a Service that puts "putBook:inSection:ofLibrary:inCity:" into my pasteboard. Ideally, my selection could be sloppy at the beginning and end, so I could select:

             ian putBook:@"The Dark Knight"
               inSection:@"Graphic Novels"
               ofLibrary:@"Mid-Manhattan Branch"

…and the Service would know what I mean.

Lately I've been running into situations like the above pretty frequently. One case is when I'm writing a method comment:

 * @method      putBook:inSection:ofLibrary:inCity:
 * @discussion  Blah blah blah...

Another case is when I'm studying someone else's code and I'm taking notes about how a group of classes interact:

Upon receiving the XXBookDidGetClassified notification, we send a putBook:inSection:ofLibrary:inCity: message to the Librarian object and commit the change to the database.

I can imagine other uses as well — for example, selecting a fragment of code in a cocoa-dev email and pasting the method name into either Xcode's or AppKiDo's search field.

It would be nice if code completion could help here, but code completion in comments only completes the first word in a method name, without the colon — i.e., "putBook" in the example above. (I just filed rdar://7197881 about this.) Also, code completion only works in Xcode, and I use TextWrangler to edit notes that are not in the code.

Another way to do this would be to click anywhere in the method name and bring up the Refactoring window, which has the method name already selected and ready to copy to the pasteboard. But this adds two keystrokes — one to open the Refactoring window and one to close it — plus a moment's delay before the window appears. And this only works if I'm looking at the code in Xcode.

Come to think of it, if Xcode can populate that field in the Refactoring window, it can just as easily put the method name into my pasteboard. It could provide this functionality in a Service as well, so I'd be able to use it when I select code in a cocoa-dev message, for example, or on a web page. I just filed rdar://7198039 asking for this.

App idea: pronounce words

Reference materials like Wikipedia and often give pronunciations for words. For example, Wikipedia gives this for "titanium":


And Dictionary gives this:


I'd like an app or a Service or something that would pronounce these words for me. I'd get to choose the voice and the speed.

Another option would be to enhance the "say" command.

App idea: Apple bug reporter

This is Steve Gehrman's idea, not mine. From an interview with The Apple Blog:

TAB: How do you find Apple’s bug reporting system? Is it as effective and efficient as their end user products?

SG: It’s nothing special. It’s just a web form. It’s actually not that great as it’s not as easy as just sending an email. You can’t easily just paste in a screenshot for example. It’s also kind of slow and requires you to upload a system profiler report, and you have to fill in the OS X build number. I wish it was a client app that would just find that info on it’s own.

Me too. I bet it would make me more willing to submit bug reports — maybe even enjoy them the way I enjoy blog posting with MarsEdit.

Steve Gehrman is the author of the very highly regarded Path Finder.