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: https://2015.wwdcparties.com/.

Big Nerd Ranch is also reaching out to meet our fans. We are hosting breakfast and dinner meetups. More info: https://twitter.com/bignerdranch/status/604034663150059522

And finally, if you’ll be in Philly instead of San Fransisco, consider attending the CocoaHeads keynote steam event at the Apple Store: http://www.meetup.com/PhillyCocoaHeads/events/222711398/

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.

Xcode

  • 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.

Others

  • 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: https://vimeo.com/phillycocoa.

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.

Swift and Cocoa: The Odd Couple

Swift and Cocoa are like The Odd Couple. Two people, with drastically different personalities who are joined by fate to live with each other.

Swift and Cocoa / Odd Couple

The Odd Couple Theme Song

One prefers things very explicit and will check and double check things are in order before starting a task. The other is happy letting things happen haphazardly, as things flow; the details can be worked out later.

One would only ever allow a single item type like socks in his drawer. The other is happy to store a mix of things in his.

One is very cautious with things handed to it, slowly unwrapping them. The other is extremely trusting and uses stuff passed to it without question, result be dammed.

Philly CocoaHeads Website Relaunch Project

I haven’t had an active side project in the last few months. When asked I would tell people looking for a new job was my side project. Now that I have that new job search (and my Girl Develop It class behind me it’s time to kick something off; we’re going to rebuild the Philly CocoaHeads website!

When I took over the local chapter of CocoaHeads here in Philly (back in 2010 or so) the previous organizer had a Ruby/Markdown publish system setup. It was kind of neat but involved a lot of setup on the client box to get up and running. I had a few people posting to the site so rather than set up that system on each individual’s box I opted for WordPress. The WordPress site has done ok for us but we’ve been growing a ton and doing a lot more over the last year (workshops, video capture of meeting presentations). I’d love to start to centralize things like keeping track of our members and our money, overall there is a ton that could be automated and it’s time to make it happen.

I don’t want to do this alone and I also would love to start documenting the project as it unfolds. To get started we have a brainstorm session scheduled during Side Project Saturday. If you want to participate please consider stopping by. If you can’t stop by, but want to participate, let me know and maybe we can setup a Google Hangout call-in option. To capture notes I’m going to use Trello. The board is live and open to the public. (You will need to login with a Trello account to edit.) Feel free to start to document your ideas today.