Archive for the ‘App ideas’ Category

With HippoRemote, who needs WriteThere?

Tuesday, October 6th, 2009

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.

HippoRemote.jpg

App idea: extract method name from selected text

Friday, September 4th, 2009

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"
                  inCity:@"Ne

…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

Friday, July 10th, 2009

Reference materials like Wikipedia and Dictionary.app often give pronunciations for words. For example, Wikipedia gives this for “titanium”:

/taɪˈteɪniəm/

And Dictionary gives this:

|tīˈtānēəm|

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

Friday, June 26th, 2009

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.

App idea: search CocoaBuilder for current Mail message

Monday, June 15th, 2009

There are times when I’d like to find out the CocoaBuilder URL corresponding to a message I’m reading in Mail. For example, say I’m composing a message to cocoa-dev and I want to refer to an earlier thread that was relevant for some reason — maybe to say “this was already discussed to death <here>”, or “I’m trying the code so-and-so posted <here> and I can’t get it to work”.

Another example: I might be doing something in my code based on what someone wrote on cocoa-dev, and I want to paste a URL into my comments for attribution and/or explanatory purposes.

Or maybe I want to include the link in a blog post, or in a tweet.

For whatever reason, I’m looking at something in Mail and I want to get the URL for it. If it’s very recent I might just go to CocoaBuilder.com and page backward in time until I find it. But if not, I’ll have to enter search terms and poke around until I find the thread I want.

It would be much more convenient if there were a little app sitting in my Dock that I could drag the Mail message to. The app would construct a search that is likely to find the message I want and it would take me to my web browser to show me the search results. (Instead of using CocoaBuilder’s search feature, I would prefer to use Google with a site:cocoabuilder.com option, but I think this violates Google’s terms of usage.)

Why would I be looking at the message in Mail? Why wouldn’t I have searched for it in CocoaBuilder in the first place? The reason is that Mail does very fast substring searches against a local index, whereas CocoaBuilder only does keyword searches, has more latency, and can’t search based on email addresses since those are stripped out of the archives. Searching in Mail can be much faster if you’re pretty sure you have the messages you want in your mail archives.

I’ve had this idea for a while, but the reason I felt like posting it now was a recent thread on cocoa-dev. If this app had existed already, I could have used it to help me link to that thread — well, except for the fact that I wouldn’t have written this in the first place.