Archive for the ‘Uncategorized’ Category

360iDev Recap 2: iPhone and Android

Friday, March 6th, 2009

The “iPhone and Android” session was presented by Julios Barros, who quickly became more of a moderator as the session changed into a lively and informative audience discussion. This post focuses on the session conversations rather than the slides. I’m going to refer to one particularly knowledgable/world-weary attendee as “Mr. Dude” because I forgot to ask his name when I thanked him afterwards for his comments. This was the only technical session where I didn’t have enough background (on Android) to follow in detail, and it was an iPhone-centric conference anyways, so take the notes with a grain of salt and let me know if anything needs correcting.

Kenji Hollis' G1 running his iPhone's 3G sim card

Kenji Hollis' neat trick.

(more…)

360iDev Recap 1: Keynote

Thursday, March 5th, 2009

Here’s my first session recap from the 360iDev conference, starting with the keynote. The organizers said they would post the slides that came with our conference USB keys, so if a session already has slides, I’ll wait to post their links and focus instead on my notes about speaker’s comments and highlights from audience Q&As.

My 360iDev conference badge with USB key

This post recaps Mike Lee’s keynote on the mac developer community as a resource. The opening keynote featured two other speakers not covered here: senior Ebay researcher on games with a purpose to enhance Ebay, and students from Worcester Polytechnic Institute on their sponsored game for Ebay. I’ll have a separate post about the WPI students’ awesome job filling in for the Unity3D presenter who didn’t show up, and Unity3D tips I learned from chatting with those students.

Edit: Thanks to Ben Clinkinbeard for the links to versionsapp.com and changesapp.com!
(more…)

360iDev Recap Intro

Wednesday, March 4th, 2009

Note: you can follow my tweets during the conference here.

Attended 360|iDev on a gut feeling…

I found out about 360|iDev only four days ago, and booked the flight+hotel without really knowing what to expect. This is the first conference I’ve paid money out of my own pocket to attend, since I used to speak regularly at Flash conferences. The organizers, speakers, attendees, and facilities (EBay) are making this event an invaluable opportunity for exchanging information. 360|iDev is worth much more than the $350 registration fee, but the organizers said they wanted to make the conference accessible given the current economic climate.

The vibe…

The conference has a pragmatic, down-to-earth, we’re-in-this-together kind of vibe. The last thirty minutes of each 80-minute presentation tends to slide into barcamp-like free-wheeling exchanges among attendees, with the speaker as a mediator. Audience members haven’t felt timid about raising questions and volunteering their own hard-won lessons. A lot of times, we’d end up listening to a vigorous (but civil) debate/brainstorm among a few audience members experiences in some specific aspect of this new mobile software era. I even met a very cool Cocoa veteran from Montreal who shared lots of great tips and resource links from the pre-iPhone era (I just haven’t had time to blog about any of this stuff yet!).

Technical and business insights…

Since we’re in the early days of iPhone development, the technical presentations unsurprisingly lean towards introductory levels. However, I’ve enjoyed much deeper technical discussions with speakers like Kenji Hollis, who showed me some Objective-fu beyond his official slides, and the small crowd of people who attended Collin Donnel’s Address Book session, which evolved into interesting discussions on table view optimization and Core Foundation practices.

More challenging and rewarding were the business sessions, which I gravitated towards after the first day. Apple’s enigmatic silence about App Store policies means that these participatory sessions are rare real-time opportunities for comparing notes and sharing ideas. Before the business sessions, I hadn’t realized how much Apple has changed the game for mobile software business. Criticisms about Apple’s dictatorial management of the App Store process were frequently countered by mobile ISV veterans with telecom/handset bureaucracy horror stories that span multiple continents. Their perspective makes the App Store business model seem like an ISV heaven in comparison, though far from perfect.

Converting raw notes into blog posts…

I want to do something productive with the copious raw notes I’ve been taking. Organizing the notes into a legible form will take many days and many blog posts though. The first set of notes I’ll post will come from the two opening keynotes by Ebay and Mike Lee. Hopefully, I’ll have those notes cleaned up in time for another blog post when I return to Seattle tomorrow.

Man, there’s still one more day of 360|iDev and already so much to blog about. Analytics, Unity3D, Quartz vs OpenGL, user feedback mechanics, business models, marketing insights, demographics, design patterns, architectures, debugging tools, etc. Crap, not enough time in the day to recap everything. Stay tuned…

Getting into flow, and some Flash history

Wednesday, February 25th, 2009

Sarah’s posted some succinct observations on getting into the flow, accompanied by a very cool glimpse into mind of Jonathan Gay when they were first creating the Flash and Director plugins.

http://www.ultrasaurus.com/sarahblog/2009/02/preparing-to-get-in-the-flow/

Testing multiple sites and OS’s on one computer

Saturday, February 21st, 2009

Judah’s posted a detailed walk through of how to test multiple sites and operating systems on one computer:

http://www.judahfrangipane.com/blog/?p=241

Interesting way to point multiple VMs to one web server on the host computer.

iPhone Day 5 and 6 - Hey Mikey, I think he likes it

Friday, February 20th, 2009

This post is not about the raw quantities of documentation I’ve been reading or how cool the technology is… it’s about a long-held interest of mine in how learning happens.

The iPhone Application Programming Guide does not explain the language, the framework, the device, or tools. However, it assumes knowledge of the aforementioned topics and stitches them together into high level concepts. I spent the past week cramming on all the other tedious details leading up to this point, and now I’m flying through the rest of the iPhone documentation.

Cocoa belongs to a family of object-oriented GUI frameworks that trace their lineage back to Smalltalk. This family includes older frameworks like Swing, Morphic, WinForms, and more recent frameworks such as Flex and Silverlight/WPF. Henry Sowizral taught me this; and, for several years, I’ve paid attention to the common inflection point in these frameworks where “play time”, or “getting into the flow” begins. Preconditions for a playful experience seem to require…

  • Memorizing a few basic rules and internalizing them into a mental model
  • Practiced ability to iterate quickly without conscious thought: feedback loop + muscle memory + internalized mental model
  • Immediate contextual information that fills in gaps in the mental model during active learning: code sense, tooltips, contextual documentation, quick jump to reference documentation

My brain wants to barf up all the information crammed into it over the past few days, but the memorization bottleneck has receded. We’re entering “play time” now.

There’s a particular movie scene from The Matrix that I associate with the feeling of getting over the tedious hump of *memorizing* and finally reaching that inflection point of *doing*. It’s quite a rush when you can slot a new model into your reality and start using it.

More to come…

More reliable than the personal computer

Tuesday, February 17th, 2009

Check out this prescient 2003 presentation by Jeff Bezos on the internet as a utility, and then forward to this 2007 presentation on cloud computing by Kevin Kelly.

In the past month, I’ve had to reinstall Windows on my laptop twice, I discovered my parents’ Windows laptops were riddled with viruses, and I had to rebuild Hoi Yin’s desktop due to similar operating system problems. We almost lost her email, and I spent countless hours restoring our backup data. However, I’d migrated almost all my work to GAFYD, and none of my business files or email required any recovery effort when I bought a macbook. Hoi Yin saw the benefits of my setup but wanted to stick with Windows, so she asked me to migrate her Outlook accounts to GAFYD too. She’s really happy with it.

I’ve come around to the perspective that we’re switching to using DNS as a sort of root directory for personal data and computing in an inverted model of reliance, using the internet for persistent regular computing and our own machines as merely transient machines that we expect to break eventually.

One way for tactile learners to dive into iPhone development

Monday, February 16th, 2009

The top-down approach is how I’ve chosen to start learning iPhone development because I’m mapping it to concepts I know, but such an approach takes more time to see results and doesn’t work for everyone.

Here’s a more suitable iPhone guide for those who prefer to learn by doing but need a guide to starting from scratch. It won’t teach you Objective-C or help you understand the Cocoa framework, but it’ll walk you through the steps of building and publishing an app. You’ll feel more comfortable after going through the motions once. It’s enough to get into a write-test-rewrite cycle and start learning as you go, like the way some folks started with Javascript or Flash.

iPhone has almost replaced my laptop

Monday, February 16th, 2009

My regular phone number still belongs to a Nokia 6610 purchased back in 2003, so this is obviously not the blog of a mobile trend chaser. However, I’m surprised at how quickly the iPhone replaced my laptop. It was just supposed to replace the iTouch, but after 3 days, I began using the iPhone for most computing activities except coding, extended writing, and deep web immersion. I also discovered an annoyance towards businesses that don’t optimize for mobile, and discovered gratitude to brands that do, like ZipCar and GAFYD.

I canceled my laptop wireless data plan. When a carrier offers an iPhone-quality device with tethering and faster speeds, I will cancel the cable modem too (we stopped using cable “television” years ago).

This doesn’t feel like a hype bubble. It feels like a sea change. Ad Mobs recently released statistics about iPhone’s growing market share of mobile web browsing.

Learning on the fly inside XCode

Sunday, February 15th, 2009

XCode has a feature called Research Assistant, a little window that gives you helpful details about the code under your text cursor. As your text cursor moves, Research Assistant provides a sort of running commentary about whatever the text cursor is pointing at. It tells you where a keyword or message was defined, and a short blurb about what it does. Not all pieces of code have associated documentation, so sometimes the window is blank. Blue underlined keywords act as clickable hyperlinks to full documentation. It’s a great tool for exploring code with the text cursor, or as you type with code sense enabled.

Research Assistant for text cursor pointing at "initWithFrame:"

Research Assistant for text cursor pointing at "initWithFrame:"

You can turn on Research Assistant by choosing Help > Show Research Assistant from the menu, or by pressing the Control+Shift+/ key combination. Research Assistant works even better in combination with Code Sense and other XCode features that help you learn on the fly.

Use the built-in Doc Sets and quick reference shortcuts in XCode to help you explore code samples. Once you start XCode, download the iPhone OS Doc Set. Open the documentation window through the Help > Documentation menu, and then press “Get” on the doc sets you want to download. Now you can hold down the Option key and double-click on words in the source code to jump directly to the full documentation! You can also hold down the Command key and double-click on classes and methods to jump directly to their definitions in the original header file.

Make sure the Documentation Window has filters optimized for source code referencing. I have my filters set to API / iPhone OS 2.2 Library / All Languages / Exact. You need to include “all languages” in the filter because some essential frameworks like Core Graphics are written in pure C, not Objective-C.

Check out this page of XCode tips for more useful tricks. XCode also supports many emacs key combos. Here are a few useful XCode shortcuts I use when exploring sample code:

Option+Command-LeftArrow = go to previous source file.
Option+Command-UpArrow = toggle between header and implementation file.
Shift+Command+/ = search available commands and display the associated menu item