Last week, the day before our meeting, I announced to the group that I would be stepping down as organizer. As of now, that change is official: Natalie Podrazik is the new organizer of CocoaHeadsNYC.

Many of us know Natalie as a longtime attendee and contributor, and as a friend. She and I have discussed many times what we value about CocoaHeads. I feel Natalie is perfect for the role, and everyone at the meeting on Thursday was supportive as well.

We will continue to meet every month at the Google offices. For that I want to say thanks to Ed Marczak, our sponsor at Google and another longtime CocoaHead. Thanks also to the other Googlers who help us out.

I don't want to sound too farewell-ish, since I'm not actually going anywhere, but for the record: I've appreciated everyone's support over the years.  What a great bunch we are!

Natalie, you have the reins.

I'll see you all at next month's meeting!

14 months of CocoaHeadsNYC

You might not guess it if you've been checking this blog since November 2013, but we have been having lively meetings every month:

  • December 12, 2013. Paul Kim talked about the design and implementation of his open source OpenPanel built on ConnectionKit.
  • January 9, 2014. Two speakers:
    • Andy Lee showed a little one-off utility he wrote to get a column of images into a Numbers file.
    • Avi Drissman showed a cool thing about AppKit internals.
  • February 20, 2014. There wasn't one main presenter, but a couple of people volunteered to do show-and-tells, and Ed Marczak facilitated a general discussion. (Postponed from the usual second Thursday to the third Thursday.)
  • March 13, 2014. Howard Olah-Reiken shared his recent experience using iOS view animation to develop a drag-and-drop game with points and lives.
  • April 10, 2014. Andy Lee presented "Table Views on the Mac, for iOS Developers".
  • May 8, 2014. David Cilia of GrubHub gave a presentation on CocoaPods. Many thanks to David and to GrubHub for hosting and feeding us this month.
  • June 12, 2014. The Kinsa Smart Thermometer uses the headphone jack on mobile devices as a signal input for precise medical temperature measurements. Mike Akers discussed how Kinsa deals with the technical and usability challenges they faced. The post-meeting dinner this month was Thai food at Spice.
  • July 10, 2014. This month's meeting was kindly hosted, again, by GrubHub. Two speakers:
    • Pavan Podila demoed his screen utility QuickLens ("Explore the UI, down to the Pixels").
    • Ariel Michaeli, CEO of appFigures, talked about the reporting service his company provides.
  • August 14, 2014. Dave Wiskus discussed his work as the designer of Vesper.
  • September 11, 2014. Kevin Wolkober talked about KuaiBoard, his iOS 8 keyboard app, and about iOS keyboard apps in general.
  • October 9, 2014. Pavan Padila agreed to give a follow-up talk on QuickLens, to discuss the many problems he solved in making a usable, responsive, and testable screen utility. Pavan also waxed enthusiastic about RubyMotion.
  • November 13, 2014. Mike Gozzo, visiting from Montreal, gave a talk titled "Getting to know your users as well you know your code".
  • December 11, 2014. Daniel Steinberg was in town. He gave his "What the Func?" talk about Swift functions.
  • January 8, 2015. Andy Lee showed how he added in-app purchases of auto-renewing subscriptions to a Mac app.

UPDATE: Whoops! I just noticed three other months had gone unmentioned.

  • August 8, 2013. Brian Papa talked about his bicycling app, and what he's learned about MapKit and working with NYC OpenData.
  • September 12, 2013. Samantha John, co-founder at Hopscotch Technologies, talked about Hopscotch.
  • October 10, 2013. Natalie Podrazik, then at 29th Street Publishing, talked about how they implemented Emily Books Reader, their first Book Club app in the newsstand.

July 2013 meeting recap

[Update: Michele will be speaking at MacTech Conference, which is Nov 6-8, 2013 in Los Angeles, with pre-conference workshops and accreditation available on Nov 5.]

Our guest speaker was Michele Titolo, who gave a talk about "Mastering the Project File":

Do you frequently hear yourself say "Don't touch the project file!", "Who overrode my changes?" or "Where did my file go?" If so, this talk is for you. We constantly put the project file on a pedestal of things-you-do-not-mess-with, but is this much caution really warranted? We'll cover tips, tricks, and solutions to promote harmony between you and your project file.

Luckily for us, Michele happened to be in town, happened to learn about the CocoaHeads meeting, and happened to be willing to be our speaker on short notice.

Daniel Jalkut happened to be in town as well, and also made it to the meeting.

Thanks as always to Dulio Denis for shooting and editing the video.

CocoaHeads NYC July 2013 from Dulio Denis on Vimeo.

June 2013 meeting recap

At our June meeting, Anup gave an intro to CocoaPods, I demoed an early draft of an app I've been working on for watching and searching WWDC videos, and Ed led a discussion on the new stuff announced at WWDC.

We'll be back on the normal schedule for next month's meeting, which will be on the usual second Thursday (July 11). I'm going to look for a different place to have July's post-meeting dinner — suggestions would be welcome. I love Patsy's and wouldn't mind eating there twice in two weeks, but others might feel differently, plus I've been told that a little variety in general would be appreciated.

We don't have a speaker yet for July, so if anyone would like to volunteer, either email me at or post to the list if you'd like to gauge the group's interest.

Here are Anup's slides and resource links:

May 2013

Ben Ragheb was our speaker this month. Ben talked about two techniques he combined to implement a photo upload feature in his iOS app: (1) WebView/UIWebView JavaScript tricks, and (2) using Amazon Web Services. His approach allowed him to provide web-based functionality without investing prematurely in writing a full-blown web service.

Dulio Denis shot, edited, and uploaded a video of the talk, complete with intro and outro music, rolling credits, and screen-within-screen. Terrific job! The video and Ben's slides are embedded below.

Here are "show notes" on things that came up during the meeting or afterward:

  • Amazon Web Services
  • Dropbox API
  • Parse (recently bought by Facebook) — "A powerful web presence without all the hassle."
  • Isaac Schmidt's presentation last April about
  • StackMob — "Accelerate your app development and eliminate the headache of maintaining your infrastructure."
  • Firebase — "Build apps fast without managing servers."
  • NSHipster, Mattt Thompson's great Cocoa developer blog. It's highly technical in the same way as Mike Ash's NSBlog. Ben mentioned an NSHipster article about remote views in iOS, but I wonder if he meant this article which references an article by Ole Begemann.
  • In response to a question from Mike Akers, Marc Van Olmen emailed a bunch of links to crash reporting libraries that might be worth looking into.
  • Demitri gave a talk about crash reporting back in March 2011. Here's a zip file with his Keynote slides and demo code.

April 2013 meeting recap

Kevin Wolkober demoed his free app NYC Wi-Fi, which shows nearby Wi-Fi hotspots in NYC. The app draws on a set of data called NYC Open Data.

This was Kevin's first iOS project and his first experience with Objective-C. He drew on a number of open-source libraries which are mentioned on his slides.

  • Kevin's slides.
  • Tutorials by Ray Wenderlich. Either Kevin mentioned these as a resource he used, or someone recommended them; I forget which.
  • CocoaPods. I think it was Anup who recommended CocoaPods as a way to manage the open-source libraries in Kevin's project. Anup definitely did vouch for CocoaPods during dinner afterwards.
  • During open discussion, Brian Papa mentioned the Academy for Software Engineering, which teaches computer science to high school kids. They partner with the iMentor NYC program, which matches high school kids with adult mentors. You can apply to be a mentor on their web site.
  • Someone mentioned this blog post by Daniel Pasco. Pasco lists a bunch of interview questions that he asks his coworkers at Black Pixel to use to gauge a candidate's iOS or Cocoa expertise. I think it's a good list, and a sobering reminder of my own shortcomings.
  • I asked a question about Sparkle, assuming everybody knew what I meant. I had forgotten how many developers are iOS only.

Meeting recaps, Q1 2013

Here are quick recaps of our first three meetings of 2013.

January: Anton Marini talked about OpenGL in the context of Quartz Composer plug-ins. It was a fast-paced meeting, with one of the longer presentations and Q&A sessions that we've had. If I ever find my notes from the meeting I'll add them here.

  • Anton also works on Syphon, which was his alternate option for his presentation topic.

February: Demitri gave an introduction to Core Image. I'm really glad Demitri presented, because this was his last CocoaHeadsNYC before moving to Columbus, OH.

March: I talked about how I resolved four problems I ran into while working on UI details in AppKiDo. Kevin Doughty did a show-and-tell of what he's doing with additive animation.

  • My slides. Note: I've sinced changed my approach to the key-view-loop problem, so it's no longer as described in the slides. I added a class called AKTabChain (.h, .m), which takes a delegate, and I overrode sendEvent: in my application class. At some point I'll write a class comment that explains it all. I'd also like to try Avi Drissman's suggestion to use an event tap.
  • Kevin's sample code on GitHub.

Peter Hosey's favorite AppCode features

If you missed Peter Hosey's talk about AppCode last month, here's a 47-second demo of the features he uses most.

Here's Peter's description for the video:

Quickie demo of some of AppCode's features. In order:

  • Live template (⌘J) "alloc" (inserts alloc/init)
  • Automatic import insertion (as soon as I use PRHTestView, AppCode adds the #import for me)
  • Smart completions for placeholders
  • Use, then create (in this case, a local variable)
  • Extract to Instance Variable (creates ivar for me, inferring the correct type from the result type of the expression and guessing what name I'll want from the available clues)

UPDATE: Peter followed that with another short video:

More of AppCode's features, including:

  • Generate (⌃⏎) → Override Methods (inserts blank implementations of specific superclass methods)
  • Intention: Create method (inferring selector, argument types, and return type from message expression)
  • Extract to (local) variable (⌘⌥V)
  • Unuse detection (note how the prefab return statement turns gray when I insert my own above it)