XcodeSFF works

Thanks to Cédric Luthi, I have returned to a sane world where Command-F brings up a Find panel in Xcode.

Cédric pointed me to his fork of XcodeSFF, in response to my complaints about the user interface in Xcode for doing a "Find". I downloaded the source and followed the instructions:

  1. Open XcodeSFF.xcodeproj
  2. Build the project, XcodeSFF.xcplugin will be automatically installed into ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
  3. Quit Xcode
  4. Relaunch Xcode

There is a known issue that affected me, but again I just followed instructions:

After installing the plugin, you may have to manually set the ⌘F shortcut once in Xcode preferences > Key Bindings > Menu Key Bindings > Edit > Find > Find…

The whole thing only took a few moments. As a side benefit, I have now seen a simple example of an Xcode plugin, which will make it easier to write my own someday if I'm ever so inclined.

P.S. I thought I'd add a few words about what the plug-in does. It finds the "Find…" menu item, which currently exposes the "find banner", and changes its target and action to what they used to be, namely a class called "PBXSimpleFinder" and a method called "showSimpleFind:". If Apple removes PBXSimpleFinder in a future version of Xcode, or modifies it so it no longer implements showSimpleFind:, the plug-in detects this and gracefully becomes a no-op.

Notes from CocoaHeads-NYC, Jan '11

Stuff I either remember or jotted down from last night's meeting, in no particular order.

Links Jon mentioned:

TOMORROW (Saturday): Electronics recycling at Tekserve. See also other dates and locations. I just noticed Tekserve is offering goodies if you come recycle:

Want another reason to come to our recycling events? How ’bout a chance to win a new MacBook Air ($999 value)? As a recycler, you’ll be able to enter the raffle. And that’s not all. You’ll also get:

  • A $25 discount on any Mac, iPad or iPod (except iPod shuffle)
  • Special savings on an eco-friendly 23" LCD monitor from Samsung
  • A coupon for our iconic, organic cotton “I Recycle NY” t-shirt, free with any purchase

The iPhone app Bob mentioned working on is at http://m.thestreet.com.

Screencasts/audiocasts for developers, indie and otherwise:

  • iDeveloper.tv — Cocoa-oriented stuff. Check out the free section and the sample chapters of the non-free offerings. Very professionally done.
  • 5by5 — Lots of series to choose from. I recently discovered The Dev Show. Even if you don't have time to listen/watch, the show notes have lots of interesting links.
  • PeepCode — A good diversity of stuff, including Cocoa and iPhone sections. I bought one of their videos once, but I don't remember the topic.
  • I didn't mention this last night, but Daniel co-hosts a semi-regular (?) podcast called Core Intuition.

Accessorizer, Kevin Callahan's utility for reducing repetitive typing in Xcode.

MarkdownLive — Shows a live HTML preview while you edit a Markdown file. A couple of people have forked this project (including me), but I don't know of anyone making significant enhancements.

WebKit Plug-in Programming Topics — What I showed was a WebKit-based plug-in as opposed to a Netscape-style plugin.

Quick Look Programming Guide — Note to self: Quick Look thumbnails are very different from Quick Look previews.

XcodeSFF — Xcode plug-in that brings back the traditional Find panel. Someone sent me this GitHub link, which is a fork of the main project. I haven't tried either version yet, but will soon. [Update: It works.]

Someone mentioned a trackpad gesture for switching between your .h and .m in Xcode? I couldn't find it.

[Update: I've been informed that the trackpad gesture is to swipe up with three fingers. Works great, but it requires selecting "Swipe to Navigate" in System Preferences, and I prefer using three fingers to drag. So for now I'll stick with the keyboard shortcut, which is Command-Option-Up.]

Paul mentioned that Control-Tab lets you switch between panes if you split your source code view. I'm finding that it actually cycles through a bunch of views in the Xcode window, not just the split panes. Shift-Control-Tab tabs backwards.

Ed strongly encouraged us to report bugs and complaints about Xcode: bugreport.apple.com.

Pizza etiquette: if you are still working on a slice of pizza, do not, as I did, try to get dibs on a second slice.

Who is in charge of Developer Relations?

UPDATE 2021-03-22: Ron Okamoto has retired:

Apple Inc.’s executive in charge of App Store developer relations retired and the role has been taken over by a key marketing executive, according to people familiar with the matter.

[…]

Okamoto’s status as a former employee was disclosed Friday in a witness list provided by Apple to the court for its upcoming trial versus Fortnite developer Epic Games Inc.

[…]

His role has been filled by Susan Prescott, a respected Apple marketing executive who also oversees marketing for Apple’s own apps, services and enterprise initiatives.

(h/t Jeff Johnson)


After reading Manton Reece's blog post about his experiences with the Mac App Store, I realized I did not know who Apple's VP of Developer Relations is. Manton says that to him it seems like nobody's in charge, which made me wonder who is in charge. After some Googling I found out it's Ron Okamoto, formerly of Adobe, hired in 2001 to replace Clent Richardson.

I find it odd that Okamoto is so little known and never discussed. The only recent mentions of him that turned up in Google were about his letter to developers regarding the Mac OS X Download site. He said it would start directing users to the Mac App Store starting January 6. (Note: as of this writing the site still offers direct downloads.)

I would guess the VP of Developer Relations has at least the following responsibilities (in no particular order, and I'm probably wrong about some of them):

  • developer.apple.com in general, including code samples and site design
  • developer registration
  • app submissions, approvals, and rejections
  • the provisioning process for apps to get on the App Store (and now Mac App Store)
  • the documentation group
  • bugreport.apple.com (aka Radar)
  • Technical Support Incidents
  • relationships with high-profile developers
  • WWDC
  • worldwide Tech Talk days
  • John Geleynse's team (Technology Evangelism) and Geleynse himself (User Experience Evangelist) [UPDATE, 2012-05-11: I've learned a bit more about Geleynse.]
  • devforums.apple.com
  • lists.apple.com (almost all the lists are developer-oriented)

That's a lot of territory, and Okamoto's had the job for ten years. Why haven't all the developers who have been angry about one thing or another been angry at him? Conversely, why hasn't he gotten credit for the things that have gone well? Why has Phil Schiller said more in public about iPhone app rejections than Okamoto? Why doesn't Okamoto do interviews or appear at public events?

Maybe Apple only puts people who are SVP's or higher in the spotlight. The spotlight is a harsh place and maybe Okamoto's time is better spent actually managing the people who report to him. Maybe developers, if they even know who he is, aren't angry at him because they feel he's only implementing policies set from above.

Anyway, I'd like to know more about him.

Here's the press release Apple issued when he was hired:

CUPERTINO, California—April 30, 2001—Apple® today announced that Ron Okamoto has joined Apple as vice president of Developer Relations, reporting to Apple CEO Steve Jobs.

“We are thrilled to have Ron leading our developer relations team,” said Steve Jobs, Apple’s CEO. “Ron’s firsthand experience at two successful Mac developers will help Apple to become an even better partner for our third party developers.”

Okamoto was previously vice president of Product Management and Marketing for graphics products at Adobe Systems, where he was responsible for the worldwide marketing and management of many award-winning products including Photoshop, Illustrator and After Effects. Prior to joining Adobe, Okamoto was director of Product Marketing at Macromedia, Inc. Okamoto holds a bachelors of science degree in Business Administration from the University of Southern California.

Thoughts on the Find UI

Recently, Xcode departed from the traditional Mac UI for finding a string in the document you are looking at. When you do a Find, Xcode now adds a "find banner" within the document window instead of opening a separate Find panel. The find banner contains a search field and a few controls for specifying the kind of search you want to do. Search is performed incrementally, and matching results are highlighted as you type in the search field.

I'm not crazy about this change and I'm not sure I get the reasoning. I assume one reason for the in-window approach is that a separate Find panel might sometimes appear over your document window, which would get in the way of your seeing the results of the incremental search. But the new approach always removes some of the text you were looking at, and to minimize this loss it's forced to cramp too many controls into a narrow strip.

Mark Alldritt suggests a variation that uses a popover to mitigate the screen real estate problem:

I think this improves on the Xcode implementation, especially if the tab key behaves as I think it should. Currently in Xcode, when you tab out of the search field, focus returns to the main text area and you can resume editing your document. With Mark's popover approach, I would want all the controls in the popover and the find banner to be combined into one big tab loop. You'd hit Escape to resume editing.

The other thing I would want is a single mode for both Find and Find & Replace. It really irks me that the Xcode implementation has different modes for the two operations, because I'm so used to hitting Command-F and being able to do either one.

Besides messing with my muscle memory, Xcode's implementation is keyboard-unfriendly. With the old-school Find panel, I could enter my search text and either hit Return for a simple find, or tab to the Replace All button, which is the kind of replace I usually want to do. In Xcode, I have to use a popup menu to choose Find & Replace mode and I have to use the mouse to click "Replace All", because I can't tab to those buttons.

As a partial workaround, I've assigned Command-Control-F to Find & Replace, which relieves me of having to click the popup, but that's a pain because I have to remember to hit it instead of Command-F like I've done in every other Mac application for decades. For a while I had Command-F as the shortcut for Find & Replace, but since the Xcode documentation window uses the same shortcuts, and it doesn't have Find & Replace, I had to remember to hit the right shortcut for Find when I was in that window. Either way leads to annoyances.

Frankly, what I really want is the traditional Find panel back. It does the right thing in terms of respecting your screen real estate: if it finds a match, it goes away and you are back in your document, ready to edit; if it does not find a match, it selects the whole search field so you can edit it and try again.

I think the Find panel could be modified to support incremental search. It could be translucent so you can see your document underneath it. I usually place it in an out-of-the-way corner of the screen anyway, though granted this is easier on a big screen than on my 11" MBA.

Or maybe the Find panel could do its old non-incremental search, totally the way it used to, and for incremental search (invoked with a different keyboard shortcut) you could get a hovering translucent text field that does case-insensitive plain-text search and nothing else, no options. I wouldn't mind if Xcode came with a preference to apply the incremental search to the symbols in the function popup, perhaps with the kind of fuzzy searching used in PeepOpen, except applied to function names within a file instead of file names.

(Disclaimer: I have not used PeepOpen, only seen its web site.)

(P.S.: I just submitted Radar 8839524 asking for the old Find panel back.)