Breakpoints Recap WWDC 2014

There was no WWDC ticket for me this year, but it was still a very enjoyable and busy week for James Dempsey and the Breakpoints. Here are some of the highlights from last week in San Francisco.

(Interested in the soon-to-be-released James Dempsey and the Breakpoints album?
Sign up for email updates so you don’t miss out on the fun!)

NeXTEVNT Cartoon Art Museum Fundraiser

In its third year, this fundraiser celebrates the heritage and history of NeXT, featuring black hardware as well as OPENSTEP and NeXTSTEP running in virtual machines. Even more fascinating is meeting up with folks who lived and breathed this platform from its early days—building apps with the frameworks that would evolve into Cocoa and Cocoa Touch.

As part of the evening’s entertainment, we played a short set of songs in support of the Cartoon Art Museum. If you are a fan of any sort of comics, cartoons, animations and the like, check it out next time you are in San Francisco. If you couldn’t attend the event during WWDC, you can still donate or join as a member.

 

LIVE near WWDC 2014

We had a great time on Wednesday night at 50 Mason Social House. The house was packed as Breakpoints from six different cities in five different time zones across two continents took to the stage to perform a show chock-full of Cocoa-inspired songs.

The evening served up an acoustic guitar sampler with a flight of Breakpoint guitarists—Nathan Eror (@neror) of Martian Craft, Jonathan Penn (@jonathanpenn) of Cocoa Manifest, and Ben Scheirman (@subdigital) of NSScreencast.

The show marked the debut of The Breakpoint Horns with Sam Davies (@iwantmyrealname) of Shinobi Controls on trombone and Daniel Pasco (@dlpasco) of Black Pixel on trumpet playing on Modelin’ Man.

(Any tenor sax players out there for next year? Please let me know.)

The talented Mr. Pasco also played electric guitar on that modern tale of momentary loss and redemption, Almost Dropped My iPhone. Conditional Breakpoint Uli ‘Object Alloc’ Kusterer (@uliwitness) of Elgato joined in with The Liki Song chorus. And of course, slide-advance keyboard legend Victor Alexander (@victoralexander) was on hand to keep that space bar hoppin’.

Thank you to all of the Breakpoints and also a big thanks to: Luke Scholefield (@lukescholefield), Adam Tow (@atow) and Rae and for taking photos and video; Daniel Steinberg () for recording sound off the board; and James White (@thecolourfool) for running the merch table.

(For more fantastic photos of the show—check out Adam Tow’s photo journal.)

Finally, an enormous thanks to everyone who came out to the show — your support is what keeps this going.  We had a great time this year and hope you all did too!

 

A Look Back at Alt Conf

On Friday, I presented A Look Back—the closing session for Alt Conf 2014.  With the surprise announcement of Swift earlier in the week, the talk took a look back to the beginning of the Objective-C era at Apple, tracing how technologies of that time have evolved into the environment we use today.  To accompany this look back, the talk also featured the first public preview of tracks from the soon-to-be-released James Dempsey and the Breakpoints album.

James Dempsey at podium with blurred hands applauding

James wraps up AltConf 2014 with ‘A Look Back’
Photo by Daniel Doubrovkine (@dblockdotorg)

Thank You

The technology announcements of WWDC 2014 will have repercussions for us as iOS and Mac developers for many years to come.

Beyond learning about new technologies, the week gives us a chance to gather together and talk, to share ideas, some laughs and perhaps one too many drinks.

Thank you so very much to everyone who came out to see the talk and performances. Your support and feedback is greatly appreciated and means a lot to me—it was fantastic to meet so many folks this year.

With WWDC 2014 now in the past, it is time to turn my attention to finishing up the album and getting it out into the world.  Someone we are all familiar with said “Real artists ship” and that is my next order of business. •

(Interested in the soon-to-be-released James Dempsey and the Breakpoints album?
Sign up for email updates so you don’t miss out on the fun!)

Get Email Updates Button

WWDC After Dark

When James Dempsey and the Breakpoints play live near WWDC, sometimes things progress beyond the sweet sounds of nerdy, nerdy music.

Last year, a new event appeared on the conference schedule—WWDC After Dark. A little investigation turned up some interesting results, which, judging from the audience response, the crowd thoroughly enjoyed.

As we get ready for this year’s big show on Wednesday night, June 4th (Full Show Details Here), here’s a little bit of fun from last year’s concert.

With announcer Victor Alexander (@victoralexander) and Daniel Pasco (@dlpasco) on guitar, please enjoy WWDC After Dark. •

Come out to Live near WWDC 2014 on Wed, June 4th at 7 PM!
Bring your friends, we’d love to see you!

View Full Show Details and Map Here

ics file Download event to your calendar.

 
For James Dempsey and the Breakpoints news:
Sign up for email updates.
Follow @jamesdempsey on Twitter.

James Dempsey and the Breakpoints, LIVE near WWDC 2014, Wed 6/4!

James Dempsey and the Breakpoints will be performing Live Near WWDC 2014 on Wednesday, June 4th at 7:00 PM.

The show is just a few blocks from Moscone West at 50 Mason Social House. Admission is free—no cover charge and no ticket required. We provide the music, you buy the drinks.

Join fellow iOS and Mac developers for an evening of humorous and informative songs including favorites such as Hold Me, Use Me, Release MeI Love View and Model View Controller.  And don’t miss the live performance of our latest song, ripped from the headlines, Goto Fail.
(View Full Show Details and Map Here)

Night Of A Thousand Breakpoints
(Well… at least four or five)

This year, the show features a lineup of Mac and iOS indie developer luminaries and maybe even a special guest or two. The Breakpoints include:

They will be joined by the incomparable Victor Alexander (@victoralexander) on slide-advance keyboard.

Stage and lounge at 50 Mason

The joint will be jumpin’ at 50 Mason

No WWDC Ticket Required

The show is open to all—no WWDC ticket required—making it a great event for all developers in town for the week.  There’s not even an NDA, so tell your friends and come on out to James Dempsey and the Breakpoints, Live Near WWDC 2014. •

View Full Show Details and Map Here

ics file Download event to your calendar.

 
For James Dempsey and the Breakpoints news:
Sign up for email updates.
Follow @jamesdempsey on Twitter.
Logo for 50 Mason Social House
50 Mason Social House
50 Mason Street
San Francisco, CA 94102
(415) 433-5050

March of the Breakpoints — ‘Goto Fail’, Chicago, DC

March was a busy month for James Dempsey and the Breakpoints, with a brand new song and video (ripped from the headlines!) and Breakpoint Jams at CocoaConf Chicago and Washington DC.

Goto Fail

Goto Fail is inspired by actual code, the code that caused a big security issue in iOS and OS X earlier this year.  Not that Apple has a monopoly on SSL issues in 2014 — The recent Heartbleed Bug only drives home the last verse in the song:

Don’t think your own code is some bug-free oasis,
It’s probably screwed up in a couple of places.

With Jonathan Penn (@jonathanpenn) of Rubber City Wizards on guitar, here’s the video of a live version of Goto Fail:


Chicago Breakpoint Jam

Chicago has been the home of a few firsts for James Dempsey and the Breakpoints — the inaugural Breakpoint Jam in 2013 and the debut of a new song “Goto Fail” in 2014.

Not since Murph and the Magictones has a Chicagoland Holiday Inn rocked so hard.

Joining in on the jam in Chicago were a number of familiar faces:


Washington DC Breakpoint Jam

The spring tour rolled on to Washington DC, where we played our set, managing to avoid the world-famous DC gridlock and partisan bickering.

Most of the Chicago crew was also in DC, with Jonathan Penn on guitar and Daniel Steinberg on slide-advance keyboard.

Keynote speaker Mark Dalrymple (@borkware) of Big Nerd Ranch sat in on Modelin’ Man, bringing a trombone solo to the blues tune for the very first time in its long history.


More to Come…

The next Breakpoint Jam will be at CocoaConf San Jose on April 25th.

Also save the date for ‘Live near WWDC 2104’ on Wednesday, June 4th, details to follow!

If you’re a fan, sign up to get email updates.  The next month or two will have some announcements you will not want to miss!

Get Email Updates

Updated iOS Device Summary with iPad Air and new iPad mini

I’ve updated my iOS Device Summary to include the newly-announced iPad Air and iPad mini with Retina Display.

Check out the iOS Device Summary page for the rationale behind the summary plus PDF downloads—including files optimized for printing.

Chart depicting iOS devices by screen size, processor and supported OS version, including newly introduced iPad Air and iPad mini with Retina DisplayCheck out the iOS Device Summary page to learn more and download PDFs of the summary.

Updated iOS Device Summary with iPhone 5S and iPhone 5C

I’ve updated my iOS Device Summary to include the newly-announced iPhone 5S and iPhone 5C.

Check out the iOS Device Summary page for the rationale behind the summary plus PDF downloads—including files optimized for printing.

Chart depicting iOS devices by screen size, processor and supported OS version, including newly introduced iPhone 5S and iPhone 5C

Check out the iOS Device Summary page to learn more and download PDFs of the summary.

iOS Device Summary: iOS 7 Update

I’ve updated my iOS Device Summary for iOS 7 with the info Apple has publicly posted.

Check out the iOS Device Summary page for the rationale behind the summary plus PDF downloads—including optimized files for printing.

A few things to note:
  • The 4th generation iPod touch will not support iOS 7.  This is the first iOS device not to support at least one major OS version beyond the version installed when the device was sold
  • At $229, the newly introduced 16 GB, 5th generation iPod touch is now the most affordable device that supports iOS 7
  • All iPad models that supported iOS 6 will support iOS 7

Chart depicting iOS devices by screen size, processor and supported OS version

Check out the iOS Device Summary page to learn more and download PDFs of the summary.

Breakpoints Live Near WWDC 2013, Wed 6/12! Save the date!

Update Jun 9, 2013: Daniel Pasco will be joining the Breakpoints on trumpet and guitar!

I’m excited to announce that James Dempsey and the Breakpoints will be performing Live Near WWDC 2013 on Wednesday, June 12th at 7:00 PM.

The show is just a few blocks from Moscone West at 50 Mason Social House. Admission is free—no cover charge and no ticket required. We provide the music, you buy the drinks.

Join fellow iOS and Mac developers for an evening of humorous and informative songs including favorites such as Hold Me, Use Me, Release MeI Love View and Model View Controller.  And don’t miss the live performance of our latest single, that modern tale of momentary loss and redemption, Almost Dropped My iPhone.

Stage and lounge at 50 Mason

The joint will be jumpin’ at 50 Mason

Night Of A Thousand Breakpoints
(Well… at least five or six)

This year, the show features a lineup of Mac and iOS indie developer luminaries and maybe even a special guest or two. The Breakpoints include:

They will be joined by the incomparable Victor Alexander (@victoralexander) on slide-advance keyboard.

No WWDC Ticket Required

The show is open to all—no WWDC ticket required—making it a great event for all developers in town for the week.  There’s not even an NDA, so tell your friends and come on out to James Dempsey and the Breakpoints, Live Near WWDC 2013. •

ics file Download event to your calendar.

 
For show updates and James Dempsey and the Breakpoints news:
Sign up for the band newsletter.
Follow @jamesdempsey on Twitter.
Logo for 50 Mason Social House
50 Mason Social House
50 Mason Street
San Francisco, CA 94102
(415) 433-5050

Getting an app ready for iPhone 5

I was traveling the week between the iPhone 5 announcement and release. I returned from my trip champing at the bit to update my app WALT to use the entire 4-inch display, instead of being stuck in the letterbox ghetto. Updating turned out to be simple and straightforward.  Here’s how it went.

Out of the letterbox

The first step was getting out of the letterbox.  To do this, I upgraded the project to use the iOS 6 SDK and added a new 640 × 1136 launch image for the new screen size. Like all launch images, it needed to have a particular name: Default-568h@2x.png. There’s a lot of information encoded in that file name—the default launch image name, the screen height, the high-resolution size and the image format.

Enabling a feature by adding a specially-named image is a clever and compact approach, but it is not very obvious or discoverable on its own.  Xcode 4.5 helps by displaying a project warning and offering to create the new launch image for you.  (Although I see the warning now in a test project, I don’t remember seeing it when I updated WALT.)

Xcode 4.5 adds a few other features to support development for Retina 4 displays. The iOS Simulator has a new hardware device setting so you can test your app with the new size, even if you haven’t been able to get your hands on an iPhone 5.

When viewing storyboards, Interface Builder makes it very easy to toggle between Retina 3.5 and Retina 4 sizes using a newly-added resize button.

Resize button in Interface Builder

New resize button toggles storyboards between 3.5 and 4-inch views

If you are not using storyboards, Interface Builder still has you covered.  You can change the screen size for a top-level view in the Simulated Metrics section of the attributes inspector. This setting is also available with storyboards, but I have found the single toggle to be much more convenient to use.

Screenshot of simulated metrics options in Interface Builder

Choose which size to work with in a xib

Mostly done already

Since WALT uses standard tab, navigation and table views, there was nothing additional required to effectively use the additional screen space. Each table view became taller and now displays more content. I could have released the app as-is, but wanted to do a few tweaks.

On a Retina 3.5 screen, the film detail view in my app adjusts row heights in certain cases to improve the layout.  I needed to make different adjustments for Retina 4 screens, so I needed to tell the two screen sizes apart.  The new screen size is not a different user interface idiom—just a taller iPhone. For screen size, the highest level API available is to use UIScreen to get the height of the main screen:

 CGFloat mainScreenHeight = [UIScreen mainScreen].bounds.size.height;

I‘ve already seen a number of online examples that use the screen size to add convenience category methods to UIScreen or UIDevice.  In my case, I checked the screen size inline in the one place where it was needed.

Screenshot of the film detail of 'Partysaurus Rex' in the app WALT.

What Up, Fishes?!
The newly added ‘Partysaurus Rex’ looks nice and comfy, all stretched out on a beautiful iPhone 5 in the new version of WALT.

Although my experience was quick and painless, the amount of work needed to adapt an app for 4-inch screens varies greatly depending on its contents.  The iOS Human Interface Guidelines document suggests different approaches for various situations. It also makes a very important point that applies to all apps.  An app should remain the same app, with the same features and interaction, regardless of which screen size it is being displayed on.  But, when displayed on a 4-inch screen, it should reveal more of its content.

In summary, getting your app to stretch out to the full iPhone 5 screen is as easy as updating to the latest SDK and adding a new launch image.  Getting your app to look great, however, will depend on how customized your views are.

For me, I found that getting the app ready for iPhone 5 took less time than preparing the new set of taller screenshots required for the App Store. •

WALT 1.0.1 is available now in the App Store with iPhone 5 and iOS 6 support.

Shipping a first iOS app

My first iOS app, WALT, went live recently, and I wanted to share some of my thoughts on the development experience.  Overall, there were two big differences from past projects I have worked on.

First, since most of my past Cocoa development has been focused on the Mac, building and shipping an iOS app meant learning a new app framework and some new ways of going about things.  It has been an enjoyable, but odd, combination of exploring things which are a good deal different, yet simultaneously very familiar—like walking into someone else’s kitchen for the first time, but already knowing where they keep most everything.

Second, shipping an app as an independent developer is a very different experience than shipping a product as part of a large team at Apple. Intellectually, I knew this from the start.  Even so, knowing about it doesn’t necessarily prepare you for all of the implications until you’ve lived through them.

One implication, of course, is that I was able to build the app I wanted to create.  I had a few specific goals for a first app:

  1. Create an app that I wanted to use
  2. Focus on frameworks and fundamentals
  3. Build a solid, speedy, polished app
  4. Ship it

Create an app that I wanted to use

Since childhood I’ve been a fan of Disney (and later Pixar) animation as an audience member—suspending disbelief and just enjoying the experience.  Over time, I’ve increasingly come to appreciate the incredible amount of artistry, collaboration and process that goes into each film.

One source of this growing appreciation is The Walt Disney Family Museum in San Francisco, which describes the evolution of animation as part of its narrative.  I’m inspired by things such as the incredible advancements and innovations in animation from the late 1920s to the late 1930s.  Over a ten year period, animated films progressed from being black and white series of sight gags using ‘rubber hose’ animations to lush multi-plane technicolor films with animated characters conveying personality and eliciting emotion.

I’m also inspired by the work of Pixar—and am amazed at the analogous progress of 3D animation from the mid-80s to the mid-90s.

Together, Disney and Pixar have produced over 640 animated shorts and features.  With almost all films released on disc, I wanted to keep track of what I had seen.  I also wanted a quick, mobile reference with some basic information on each film.  And so, I built WALT so I could use it, and hopefully other Disney and Pixar animation fans would enjoy using it as well.

Focus on framework and fundamentals

The features of my desired app lined up nicely with the core functionality common in most iOS apps: present a set of data, navigate, search, sort, filter, summarize.

Since this first app is relatively straightforward, I wanted to take the stock iOS frameworks out for a spin and see just how far they would take me, and how quickly.

My past experience in working with Cocoa frameworks is that it is good practice to use the highest level of abstraction that meets your needs.  On the flip side, it can be treacherous to try to force a framework to be something that it isn’t.  If you must twist the higher abstraction into a pretzel knot of ugly bad practices to meet your needs, it’s usually best to drop to a lower layer and implement what you need (and, of course, file enhancement requests so that a future release might meet your needs).

In the spirit of using the highest level of abstraction available, WALT uses standard UIKit controllers and views, with a handful of custom views.  The app hits just about all of the UIKit highlights: tabs, navigation, tables, custom table cells, search results, modal view controllers.

For data management, WALT uses Core Data.  A key consideration in this choice was the ability to do incremental fetches and updates. It had also been a while since I had done Core Data development on the Mac, so it was a good opportunity to reacquaint myself.

I tend to exercise caution when adopting version 1.0 technologies and frameworks – especially if an app will be immediately pushing the limits of the new technology.  In WALT, I adopted two relatively new technologies: Storyboards and Automatic Reference Counting (ARC).

Since I planned to support iOS 5.0 and later, the straightforward layout of the app made Storyboards seem to be a very good fit.  The Storyboard abstraction seemed useful and held promise to simplify development and eliminate code.  In the end, I encountered a severe accessibility bug which required much of the eliminated code to be added back in one form or another.  Overall using Storyboards was a slight net win for the project, but the experience definitely reinforced my attitude of caution.

I had no intention of moving to ARC, but a few conversations with former Apple colleagues led me to give it a try on a development branch.  It went without a hitch.  My project was in an early stage, so there was not much code to convert, and I did not anticipate writing much code that would hit known ARC ‘sore spots’, such as frequent conversions between Core Foundation and Cocoa.  So, I merged the ARC changes into my main development branch and have not regretted doing so at all.

Finally, I was able to add a bit of social media support in WALT very quickly.  The Twitter framework in iOS 5 made it trivial to add support for tweeting about films you have watched.

Build a solid, speedy, polished app

These three, of course, should be goals of any app since they map to quality, performance, and user experience.  They can also be somewhat subjective areas – how responsive is responsive enough?  How polished is polished enough?  In these areas, I set some specific goals and worked towards them.

First, for me, solid means not crashing, not losing data and not leaking memory.  I don’t have enough programmer hubris to claim there are no bugs in the app, but hours of use without an issue made the app feel pretty solid to me and my testers.  Instruments came in handy to check for leaks—ARC seemed to live up to its promise.  I also periodically ran the Xcode static analyzer, which is excellent at catching potential problems.

Being speedy meant focusing on app launch, scrolling, navigating and searching.  I focused on how responsive the app felt to the user rather than using timed code benchmarks.  The criteria were that the app should launch within a count of ‘One-Mississippi Two-Mississippi’; scrolling should not lag—even in longer lists; navigation should be smooth and search results should feel immediate.

I did hit some scrolling performance issues and found Instruments to be a valuable tool in tracking down the problems.  Most turned out to be cases where I was unnecessarily fetching data repeatedly, which the Core Data instruments made very obvious.  In the end, the app feels snappy.

Making an app ‘polished’ is perhaps the most subjective and all-encompassing—it includes everything from user interaction, to the look of the app; from providing retina graphics, to how the app behaves for VoiceOver users.  Since I was already on the road of seeing just how far the stock frameworks would take me, much of the app polish is provided by the frameworks themselves.

But even leveraging what the frameworks have to offer, there are lots of subtle things that make an app feel better.  WALT contains touches like adjusting the display of a table index and sections depending on the contents of a list, restoring the user’s previous navigation and scrolling state if the app is terminated, and minor but important things like making the tap target size on a checkbox larger than its graphic.

Polishing the app was a process of using the app as I developed it, refining the behavior as the app evolved.  With polish, often the code you end up writing is not particularly difficult or time-consuming, the bulk of the work is in determining exactly how an app should behave.

Ship It

When working on a large project like OS X, someone else sets the schedule and decides that the product is ready to ship.  As an independent, those decisions are yours, but so is the responsibility for those decisions.

I found one of the keys to shipping was to guard against feature creep by choosing a core set of features for version 1.0 and focusing on them.  The process was fairly lightweight.  First, record every issue, enhancement and feature idea.  Then, decide which items absolutely need to be in the 1.0 milestone and move the rest to a Later milestone.

The lists were not immutable.  As work progressed, it became clear some things were more important than originally thought, and some things less so.  I periodically revisited the lists of issues and as time went by became more and more hard-nosed about which features remained in 1.0.

Another hurdle was deciding when the app is ready to ship.  In addition to the feature set, there is so much that can be tweaked—the exact wording of labels, the default layout of tabs, which icons represent which tabs, tweaks to graphics.  At a certain point, I needed to stop tweaking and send the app out into the world.

Wrap Up

I am very excited to have released this first app, WALT, both as a user and as a developer.

As a user of WALT, I’m currently tracking my progress through the Silly Symphony film series where the Disney studio tested many of the animation technologies and techniques that were used in the first animated feature film Snow White.

As a developer, each project brings new learning and insights and this one was no exception.  But, there is also no denying it is a very good feeling when something you have created is released into the world.

And for beginner iOS developers taking those first steps towards building an app, I invite you to join me as I lead a Full Day iOS Tutorial at CocoaConf in Portland, OR on October 25th.

I welcome your comments on this or any other blog post, or the app WALT itself at comments@jamesdempsey.net.