Thanks, Mom

When you create a project in Xcode, the default About box thanks Mom:

Default About box

I don't remember if this was the case ten years ago — I'm not sure there even was a default Credits file — but I'm quite sure it was my own idea to thank my Mom in AppKiDo's About box:

AppKiDo About box

It bears repeating: Thanks, Mom! I love you!

John Geleynse

Last year I wondered about Ron Okamoto's responsibilities at Apple. (Who is Ron Okamoto, you ask? Exactly.)

I guessed, or maybe saw somewhere, that Okamoto manages John Geleynse. Today I was thinking about Developer Relations again and came across Geleynse's LinkedIn page, where he describes his dual role as both Director of Technology Evangelism and User Experience Evangelist at Apple.

Geleynse's mission, as I understand it, is to help developers be Apple developers in the strongest possible sense of the term. He and his team help us learn and use Apple technology, and he helps us design user experiences that are up to Apple's standards.

I see he's not responsible for the sort of plumbing issues that are most often complained about, like Radar, like app reviews and rejections, or like the recent fiasco with WWDC tickets being revoked. But he might be someone to bug (assuming he's approachable) about the uncertainty around sandboxing.

I saw Geleynse helping someone at a Tech Talk years ago, and he seemed interesting. I wonder if he'll give a talk or have some sort of presence at WWDC other than hosting the Apple Design Awards.

Director, Technology Evangelism
Apple Inc.
Public Company; 10,001+ employees; AAPL; Consumer Electronics industry
December 2002 – Present (9 years 6 months)
Responsible for directing a team of technology Evangelists who:

  • Provide the technical guidance and insight needed by 3rd parties to build elegant, attractive, innovative, connected, integrated, and great software solutions for iPad, iPhone, and Mac
  • Promote advanced iOS and OS X technologies and software development techniques to the 3rd party ISV and software development community
  • Work with Apple’s engineering and interface design teams to efficiently address technology adoption issues faced by 3rd party software developers
  • Track 3rd party developer technology needs and communicate them cross-functionally within Apple
  • Define and manage the technical content for the annual Apple Worldwide Developer's Conference (WWDC) and annual Tech Talks
  • Manage and host the annual Apple Design Awards

User Experience Evangelist
Apple Inc.
Public Company; 10,001+ employees; AAPL; Consumer Electronics industry
November 1999 – Present (12 years 7 months)
The user experience for Mac OS X applications encompasses the visual appearance, interactive behavior, and assistive capabilities of software.

Primary responsibilites include:

  • Working one on one with 3rd party software development team to ensure that products they're building deliver a truly Mac OS X user experience
  • Improving the user interfaces of 3rd party software products via design audit/review meetings in which every application window, dialog, palette, toolbar, and icon is reviewied for Aqua compliance and the overall usability and interaction design is analyzed and re-designed
  • Defining the lions-share contents of each revision of the Apple Human Interface Guidelines
  • Working closely with Apple OS Engineering to ensure Aqua adoption issues faced by 3rd party developers are addressed.

A quick look at Dash for doc browsing

Dash, by Bogdan Popescu, is a brilliant developer utility that removes friction from two key areas of programming: looking up documentation and reusing code snippets. I haven't played with the snippets manager, and I've only played with the doc browser for a few minutes, but already I notice some excellent things:

  • It's fast to open and dismiss with a hotkey.
  • It performs fast live-searching as you type into the search field.
  • It includes a ton of docsets for a variety of languages and platforms, not just Cocoa and iOS. See the screenshot above for a complete list.
  • You can add your own docsets. The Kapeli web site helpfully points you to instructions for creating them.
  • It shows an Ingredients-like table of contents listing methods, properties, etc. for the class you're looking at.
  • It has options to search Google and StackOverflow, all while staying within the app.
  • It handles URLs of the form "dash://foo". If you click on such a URL, the Dash window will open and perform a search for "foo". This can be useful for things like emailing URLs as pointers to documentation, and putting links in one's own notes. Who knows, maybe someday there will be a web site called "Let Me Dash That For You" (although lmdtfy.com is already taken).

In Xcode, URLs are clickable when they appear in comments. Unfortunately, this doesn't work with dash:// URLs. I've filed a Radar requesting the ability to specify more URL schemes for Xcode to recognize. In the meantime, if one wanted clickable links badly enough, I suppose one could run a local HTTP server that converts localhost URLs to Dash URLs. Maybe Dash could have such a server built in? Would it be worth it?

More suggestions:

  • Add a Service that performs a search, much like a dash:// URL, but using the currently selected text in my frontmost application (which might be Dash itself).

    [UPDATE: @kapelimac informs me that Dash has had a "Lookup in Dash" Service for quite a while. My fault for not spotting it.]

  • Auto-detect method names. When I come across a method call like [obj doThis:xxx withThis:yyy] I'd like to be able to double-click one of the brackets to select the whole expression, and invoke the above-mentioned Service to perform a search. I'd like Dash to recognize that what I mean to search for is "doThis:withThis:". For extra credit, be able to detect a method name in any string that contains a colon. Or if that's too hard, any string that begins with a square bracket.

  • Add a social element such as Scott Anguish suggested a while back. This might not be a direction Bogdan wants to invest in, but it would be an interesting experiment. Of course, that's easy to say when I'm not the one doing the investing.

    [UPDATE: More from @kapelimac: "And another note: Dash has had Wiki pages for each method/class, but no one used them, so I removed them. And: "I plan on adding Disqus threads to all documentation pages, but I'm still waiting on a reply from @disqushelp if they allow it."]

I see from Dash's Twitter feed that Bogdan is quite actively working on the app, and in fact plans to start charging for it with the next release. I encourage you to check it out now while it is free, and to consider buying when Bogdan sets a price on it.

Liking SpeakerDeck

I'm glad I learned about SpeakerDeck from Samuel Goodwin, who used it to share the slides from his presentation at last month's CocoaHeadsNYC. I used it to embed Bob Clair's slides (also from last month) and again this month to embed Isaac Schmidt's slides.

SpeakerDeck seems great not only for sharing but for discovering interesting presentations. Henceforth, unless I find something about SpeakerDeck that changes my mind, the CocoaHeadsNYC slides will be at <http://speakerdeck.com/u/cocoaheadsnyc>. The only drawback I can think of is that too many embedded slideshows might bog down the load time of the CocoaHeadsNYC home page. If that turns out to be the case I'm sure I can tweak WordPress to show fewer articles per page.

Why no PC guilt?

I get the argument that Apple, which profits handsomely on the backs of cheap factory labor, has a special responsibility to improve labor conditions where it can. What I don't get is why PC users — not the companies but the hundreds of millions of customers — have been silent for so long, and why they were silent in all the years before Apple climbed to its current position at the top.

Well, maybe "silent" is not the word. PC users and hobbyists have long bragged about how much less they pay than Mac users for equivalent or greater horsepower. Yet, by this very argument, PC customers benefit far more from harsh labor conditions than Apple customers. And over the years many more Windows computers have been sold than Apple computers (another point of pride for the PC crowd). Which community has the greater guilt?

In the decades that Windows has dominated the desktop, why haven't PC customers used their power to force manufacturers to improve conditions? We never hear a PC hobbyist say, "I'm conflicted. I love the killer system I built for under $200, but I'm ashamed of exploiting people who have no right to unionize." We never hear noble offers to pay more for PC components, even as we are told the exact amount iPad owners should volunteer to pay so that Chinese workers can live a little better.

What's more important: humane working conditions, or saving twenty bucks on a graphics card that will let you play the latest game at 50 frames a second instead of 40? How many Xbox workers have to threaten suicide before somebody delivers a petition to Microsoft?

I'm being deliberately inflammatory here. I don't think there's a simple "me good, you bad" answer for either side. My point is that it's easy to point a finger if you never examine your own actions.

By the way, a really interesting book on migrant factory workers in China is "Factory Girls", by Leslie T. Chang.