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 Parse.com.
  • 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)

January 2012 (yes, 2012) – Ben

I just finished posting very belated recaps of the last four meetings of 2012. I was all pleased with myself for getting that done by the new year, until I noticed that I did not post a recap of the January meeting. I wasn't able to attend that meeting, but I should still have posted here about the speaker and topic.

Let me rectify that and close out 2012 by recognizing how the year started. Benjamin Ragheb was our speaker on January 12, and he talked about how to create custom input controls on iOS. Thanks, Ben, as always! And thanks to everyone in the merry little band that is CocoaHeadsNYC. Thanks to the newcomers and the old-timers. Thanks to the speakers and the lurkers. Thanks to Google for hosting us and to Ed Marczak for being our sponsor.

I feel very, very fortunate to be part of this group, and I look forward to another twelve months of nifty presentations and lively dinners.

December 2012 – Peter Hosey

We closed out 2012 with a presentation from Peter Hosey, who joined us from California by way of Google Hangout. Peter gave a demo of AppCode, the Objective-C IDE from JetBrains, a topic which has been asked about several times at meetings.

I think the Google Hangout format is a promising option for future meetings, if there are speakers who would like to present but can't easily make it to New York. We'll need practice to smooth out the rough edges, but as you can see it's a perfectly viable solution:

(Note to Peter: I owe you dinner!)

During open discussion time Demitri had a question about how to structure his code so that the inspector window in his app would always inspect the right object. Suggestions were offered, and later there was a follow-up thread on the mailing list.

[Update: Peter's posted a 47-second demo of the AppCode features he uses most.]

[Update: Peter followed that 47-second demo with another short video.]

November 2012 – DTP (Direct to Pizza)

The November meeting came on the heels of Hurricane Sandy. As a group, we decided to skip the usual presentation part of the meeting and go directly to Patsy's for pizza. We had a good turnout (10 people) and Patsy's treated us very well as usual.

Demitri did come prepared with a programming question for the group, about populating a table view with a huge number of rows when the acquisition of the data to display could take a noticeably long time. His question was a follow-up to this thread on the group mailing list.

October 2012 – Bob and Jason

We had two speakers for the October meeting.

Bob Clair's talk was about "Hiding your instances variables… or not":

I've discovered some odd things while investigating the issue. Let's say you declare an instance variable in a class extension or the @implementation section so it is (theoretically) @private. If I find out the name (hello class-dump) I can read or set that variable from anyplace that has a pointer to the instance without subclassing it, without writing a category accessor, without using KVC and without using the runtime functions.

Jason Brennan (visiting from Ottawa!) gave a demo of

a debugging tool that works over the network to do real-time inspection and manipulation of iOS apps (that is, without need to set break points). It does this with a REPL console with some handy tools for quickly making changes and testing them.

Jason's slides are on GitHub. You can also view them below:

On a side note, I (Andy) was unable to make this meeting, which is a bummer because by all accounts it was great. I notice Jason's slides use what I believe is called the Lawrence Lessig style of presentation. They are sparse, but they look so great I can't stop skimming them!

Thanks very much to Jason for making time on his trip to visit CocoaHeads.

[UPDATE: SuperDB is now open source on GitHub. Thanks very much, Jason!]

September 2012 – Demitri and Moshe

We had two speakers at the September meeting.

Demitri Muna gave an introduction to SceneKit — what it is, how to use it, and some tips and pitfalls. His demo apps demonstrated, among other things, how to create objects in the scene programmatically.

You can download Demitri's code here. The zip file contains a PDF of his Keynote presentation, which you can also view below:

Moshe Berman demonstrated a UIKit game engine he wrote called MBTileParser (source on GitHub). He talked about the motivation and design decisions behind his framework.

Here are the slides from Moshe's talk:

August 2012 — Natalie and David

This month's featured speakers were David Jacobs and Natalie Podrazik of 29th Street Publishing. David and Natalie gave us an inside look at the tools and infrastructure they're building for developing Newsstand apps. They're doing this because they found that Apple's process for publishing on Newsstand is less straightforward than one might expect. Among the components they're using is the Starwatch framework they presented in February. You can ask for more info at hello@29.io or on the CocoaHeadsNYC mailing list (which you can sign up for here if you're not on it already).

Natalie has also posted some open-source mini-projects (not related to the Newsstand stuff) on GitHub.

One thing David mentioned in passing was a collaboration and task management tool called Asana. I checked it out and I think it's pretty nicely done.

I had two show-and-tell items. One was the "method-aware" feature I recently added to AppKiDo. It's implemented by a single AKMethodNameExtractor class (.h file, .m file) that is just a simple hand-rolled parser. I mentioned that I use hand-rolled parsers in a couple of places, and I used to feel vaguely wrong about it until I read a blog post entitled "Why I don't use a Parser Generator".

My other show-and-tell was the Scene Kit example project from WWDC, which I'd modified slightly. Since the meeting I've learned that Apple actually has three publicly available Scene Kit examples.

Speaking of conferences, we're two months away from MacTech Conference, which Ed Marczak co-chairs. This year at least three of the speakers are CocoaHeadsNYC members: Natalie, Mark Mentovai, and me. I hope to see you there; it was really fun last year.

I hope to see you all next month, and I hope you'll bring your own show-and-tells.