CocoaLove 2015 Notes

This weekend was the second annual CocoaLove event here in Philadelphia.

A conference about people, not tech. CocoaLove highlights the iOS/Mac community’s passions, challenges, and triumphs.

From all accounts, people had a great time. My very heartfelt “thank you” to the speakers, attendees and organizers for making it such a blast.

Some of my own takeaways and notes:

  • Just Do It! and more specifically, don’t let your high taste of quality hold you hostage from creating and shipping. Get it out in the world and improve it over time.
  • Don’t let the negativity of the web infect you. Be positive; be constructive.
  • Make time to help people out. Mentor them, teach them, guide them. It’s probably the most import work you’ll ever do.
  • Embrace today; do what you love; don’t settle.
  • Don’t let other people define your life’s scope. Poke life.
  • The world is in desperate need of good managers. Managers need not be robots; the best managers can have a huge impact on their team and the product.
  • Don’t let imposter syndrome or other people hold you back.
  • Humanizing the customer support experience is extremely important. These people are calling out for help, treat them right.
  • The developer ecosystem is forever changing. Even today the wheels are in motion and a few years from now it’ll be different. Be prepared for change.
  • Embrace side projects. Start tons of things. Experiment. Do things outside your comfort zone.

While we wait for this years talks to be edited and published, consider stopping by the 2014 video collection. In particular I recommend Joe Cieplinski – The Back of the Fence.

Summer Hiatus Update

Hello internets. So sorry for the summer hiatus here on the blog. So what have you been up to? (Email me and say hi!)

I’ve been doing good. WWDC was a fun time in June and shortly after that I had 6 days down the shore with my family. At work, I’ve been on a Swift iOS project. It’s my first time using Swift in production and working along side John and Zac has been incredibly educational. I also was able to get on the road and do my first solo teaching gig for Big Nerd Ranch. I really do enjoy teaching and hope to get the opportunity to do more of it in the coming year.

In my off time I’ve been zoning out with video games, movies and the like. I bought a PS4 and have been mixing it in amongst my WoW and FF14 time. I do feel guilty as I keep meaning to start some productive side projects but I struggle to focus on programming after working a full day doing programming. We’ll see how the fall works out. Hoping to get some project inspiration from CocoaLove and Release Notes in October.

I also just (like a week ago) got a new car. Ended up buying a new 2015 Hyundai Sonata Sport. It replaces my old 98 Ford Taurus workhorse. The Sonata is nice; very spacious and a nice mix of value and features. I’m really enjoying the iOS integration (used to use an external bluetooth speaker for podcasts and the like). With a little more confidence in my car now I’m actually hoping to hit to road a bit and do some visits to regional CocoaHead events and the like. If there is an event coming up you’d like to recommend let me know.

Well that’s it for now. Bring on the fall!

WWDC Events and Links

It’s June 1st and WWDC is right around the corner!

My wish list is set and I’m sure we’ll have lots to talk about in the weeks and months ahead. It’s going to be a great conference.

I won’t be at WWDC proper this year but will be in town, next door at AltConf. AltConf has a great speaker lineup unto itself and I believe it will also be live streamed.

If you see me in town, please introduce yourself. I love connecting a face to a twitter avatar of a cat.

Other notes and resources…

As for the parties, one good index of events is right here:

Big Nerd Ranch is also reaching out to meet our fans. We are hosting breakfast and dinner meetups. More info:

And finally, if you’ll be in Philly instead of San Fransisco, consider attending the CocoaHeads keynote steam event at the Apple Store:

WWDC 2015 Wish List

While I won’t be at WWDC proper I will be in San Francisco the week of WWDC. I have a ticket to AltConf and otherwise expect to be mingling about.

What do I want to see announced? Here is some of my wish list.

Swift Improvements

  • Let me use Xcode’s refactor tool to refactor Swift.
  • Let me use Instruments to measure performance of Swift.
  • Introduce a tool similar to gofmt
  • Add standard library tools for processing JSON.
  • Continue to improve Obj-C Interoperability.
  • Swift versions of NSDate and NSDecimalNumber
  • Fix the “I have to make it public or double add the modules” to let tests see code issue.


  • Introduce a cloud service version of Xcode Server.
  • Improve Xcode Templates (eg: should recommend new test file with new class).
  • Add code coverage tools.
  • Improve testing tools. (Maybe add a formal UI testing layer?)
  • Add a spell checker that is smart about function names and other symbols.
  • Stability improvements.


  • Let me slide loads apps outside the App Store.
  • Improve App Store searching, browsing and discovery.
  • Formal API to iTunes Connect.
  • Third Party Siri access.

Code Patterns Talk, Video Now Available

We’ve been trying to a better job of capturing our main talks at Philly CocoaHeads. You can find and subscribe to our small but growing collection of videos on Vimeo:

I did a talk last month reviewing a some iOS code patterns. The runtime is about 27 minutes. Feedback very welcome.

Some Code Patterns, Mike Zornek from Philly CocoaHeads on Vimeo.

This talk covers a handful of code patterns that were successful on my recent projects. Some of these patterns include Block Safety, "Tell, Don't Ask", Using DataSources for your network-based *Service objects.

Apologies the audience participation isn't well captured.

Farewell Edge Cases

Cue the Journey song, Edge Cases is ending.

Edge Cases was a podcast hosted by long time Apple developers Andrew Pontious and Wolf Rentzsch. Surprising unlike many other podcasts hosted by Apple developers, Edge Cases actually embraced the code, doing weekly non-topical coverage of coding concepts, practices and history. The show ends after 128 episodes and will be missed.

I’ve been following Wolf since the MacHack days and Andrew since the blogging boom of the early 2000s. Both are incredibly insightful and genuine. I want to thank them for putting on such a great show. The dedication it takes to run a regularly published podcast is no small feat and it was appreciated. I wish them well with their future projects.

If you haven’t listened to the Edge Cases show before I encourage you to browse the archives and give it a try. The content is timeless.

Know Your Role: Contractor or Consultant

I guess I could have use a more sophisticated reference in the title like Know Thyself but I can’t help quoting the most electrifying man in sports entertainment, The Rock.

The Rock

Know Your Role!

When trying to breakdown the relationship with your clients and to help define expectations you need to define your role. One high level way to do this is to decide if you are a contractor or a consultant.

A contractor is someone who comes on to a job site to execute. They are given all the specifications they need. They act in a professional manner. They produce.

A consultant may produce as well but their primary responsibility is help design the solution. They work with the client to understand, identify and document the problems and the pains. Then through their lens of their experience in the industry propose a solution. Usually they stick around to help build that solution.

If the client looks to you for help to build the product right, you are probably a contractor. If the client looks to you for help to build the right product, you are probably a consultant.

Personally, I consider myself a consultant. I love designing the solutions and while I can code, and continually strive to improve my craft, coding by itself is not truly fulfilling.

It’s been challenging over the last few years since leaving independent life and working for larger companies. These days I don’t have a lot of involvement in the sales process so by the time I’m working a project expectations are already set and a fair amount of time it feels like we are hired as contractors, which I have nothing against, but if I’m going to be a code mercenary you need to be really good about those specifications and more times than not, they fall short. They explain only the happy paths or they misuse platform norms at the cost of more engineering and two steps back in user experience.

I suspect this phenomena is not an isolated problem but discussion about that will have to wait for a future post.

Think of the Smallest Possible Code Change, and Then Make It Smaller

I’m working on a client project right now. We do peer review of the code via pull requests. It works great, but the quality of the reviews you get are very dependent on the size of the pull request you make.

Take for example, one of my recent pull requests, which had the following git characteristics:

1,780 additions 
1,618 subtractions
24 files changed

Not my largest pull request ever but still way larger than what I’d prefer. I got zero feedback. It was merged on first pass. Now take one I did the next day:

80 additions
1 subtraction
7 files changed

We had 10 conversation posts on this pull request, discussing three distinct recommendations and/or questions. Questions on things I was already doing for a few pull requests already but I guess slipped by.

I don’t blame the reviewer, I blame myself. It’s really hard to be detail focused when there is so much to review.

So keep those pull requests small and focused. You’ll get better feedback and you’ll probably get integrated faster too!

Mike Monteiro on Selling Design, Getting Paid and Working with Clients

I’m not sure if “Selling Design” is the real title for the Keynote at Interaction15 (1h5m) but that’s the topic your are going to see. Mike Monteiro a does a great job reviewing some of the pitfalls creative people run into when working with and presenting their work to clients and all the delicacies of those relationships. For those doing contract work, a must see.

You might also like Mike’s talk: Fuck You, Pay Me or his books, Design is a Job and You’re My Favorite Client.

Contracting and project management are topics that regularly come up at my job, Philly CocoaHeads and IndyHall so I’m going to try to do better about writing about those issues here. In the mean time, I highly recommend Mike’s work to get your own brain turning.

Encouraging Impactful User Content

I’m not one to do a ton of online product reviews but after CocoaLove I was asked to do one for the walking tour we took on Sunday. The site was TripAdvisor and from what I hear having good reviews there is really important for companies so I figured I’d share the love.

Since posting the review I’d say I get an email from TripAdvisor every 3 months or so. The email helps explain how much of an impact my review has made.

Review Impact

I really like the email.

I suspect emails like this help encourage further user contributions. If your website or service captures user generated content I’d encourage you to experiment with similar behaviors.