Philly CocoaHeads: History

Being the lead organizer of the Philly chapter of CocoaHeads, I always welcome the opportunity to chat with members of other meetups. It’s great to compare notes on how we run our groups, what’s worked and what’s failed. In particular I’ve recently chatted with the leadership of the Nashville CocoaHeads and was also able to attend an Atlanta CocoaHeads meeting while visiting Big Nerd Ranch. It was a great experience and has me inspired to capture some of my thoughts here on the blog. This first article is a walk down memory lane to document the history of Philly CocoaHeads.

Getting Started

The Philly chapter of CocoaHeads started out of IndyHall in 2008. IndyHall is a coworking space, a place for people who can work from home but choose not to; perhaps because they want a work/home separation or just to participate in the greater creative community. Back then IndyHall was still fairly young but had attracted together a strong tech following including:

  • Andy Mroczkowski and Far McKon who were working for the local company Neat, and their Mac software / scanner combo.
  • Jason Allum who was working on RipIt (which would later be sold to The Little App Factory).
  • Dave Martorana who had a few apps, including MultiFirefox and Multiplex (a media server app ahead of its time).
  • Joah Aas, who worked for the Mozilla organization and is now most known for his help with the Let’s Encrypt project.
  • Randy Zauhar, a local professor teaching Bioinformatics and Chemistry at University of Sciences. Randy had previous help run and host a group called: PHAD, Philadelphia Apple Developers.
  • And myself. I was a basic IndyHall member and was working on ProfitTrain updates at the time.

Philadelphia Apple Developers (PHAD) never grew to be anything very large but I remember it fondly. It would usually be about 4-6 of us sharing a pizza and showing each other our Cocoa projects. I vividly remember Randy showing off his spreadsheet app which listed chemical equations on one side and then had an OpenGL cell rendering the compositions on the other. I also remember doing talks on Subversion and then Core Data. Again, they were small meetings but having even a few people who were interested in or working in Cocoa back then to bounce ideas off was a huge win.

The early meetings of our group were ran by Andy Mroczkowski and actually marketed under the name PhillyCocoa and not CocoaHeads. The meetings were very demo heavy with lots of roundtable questions and discussions filling in the cracks. Some members took to working on a side project, a calculator, outside of the meeting. The project didn’t get too far but the remanence of it have been preserved on GitHub.

Early IndyHall

This is a photo of IndyHall, Strawberry Street Edition. The first “CocoaHeads” meeting was held in that back meeting hut.

As the iOS SDK (or iPhone SDK as it was called back then) was announced there was a serge in new members and interest in the group. The biggest hurdle seemed to be Objective-C itself so we planned and ran a workshop.

Over two Saturdays, mixing lecture time and coding exercises from Learn Objective-C on the Mac, by Mark Dalrymple, Scott Knaster we got 12 or so people a head start on iPhone programming.

New Leadership

Meetings continued, now at IndyHall’s new home on 3rd Street (or N3RD Street as it would come to be known as). Eventually a December meeting was announced and Andy let it be know that if you were interested in the future of PhillyCocoa to attend. At the meeting Andy announced his upcoming departure to head to San Fransisco to be apart of a startup. Two volunteers came forward to help organize the group in his stead, myself and Mike Deaven.

Meeting Format Changes

Over the next year me and Mike enacted a handful of changes we’d hope improve the group.

An Early IndyHall Meeting

One immediate change we did was move the website to WordPress. Previously Andy had a custom Ruby CMS / publish thing going and it wasn’t easily portable. I was able to get all of the old post converted into WordPress. The main goal here being enable multiple people to post and not have the code be machine dependent.

Another change was subtle, but I started to embrace the CocoaHeads brand in our naming and introductions. I always was aware of them and to me it seemed helpful to take the name and have our chapter listed on the main global site.

We also started to fiddle with the meeting format itself. Moving the pizza / social time to the front end of the meeting. This helped since we usually had a lot of stragglers arrive between 6:30 and 7:00, so by having the pizza upfront we could make sure to start the meeting with everyone present.

I also started to be a little more rigid in the introductions, making sure to repeat the basics of the group, who we were, what we did, when we met. I wanted new people to quickly get a sense of expectations.

Another IndyHall Meeting

The hardest thing back then was getting people to do talks. There were many meetings in the early days where we did not have a formal speaker and so it was on my shoulders to build a presentation to keep the group entertained. It was a lot of work but I think a major reason why we were later became more successful. I think it’s incredibly important to be consistent, to have that meeting every 2nd Thursday no matter what. Setting up that pattern and not giving into canceling meetings really helped solidify the group.

To help spur talks we started to request smaller commitments, show and tell time. A short talk or demo usually 5-15m in length. Much less to prepare and much less anxiety. It started slow but eventually kicked off a pattern of people coming forward to do talks, even “main” talks.

Adding Members through Meetup.com

Up to this point Philly CocoaHeads did not promote itself too much. You heard about it through word of mouth or via IndyHall announcements. Looking to grow the community we decided to join Meetup.com for more exposure. It took a few months to get going but eventually started to bring in tons of new faces. Meetings quickly grew from about 10-12 people, closer to 20-25.

As of today we have about 870 registered members on Meetup.com. Now most of them are not active members. I’d guess if you defined “active” as participated in a group event sometime in the last 12 months, you’d probably end up with ~200 members.

Alfie joins us from NY via a Double

Alfie joins us from NY via a Double.

New Events and Expanding the Leadership

When iOS 7 was announced we decided to do a special hack day to celebrate. We sold tickets to help buy a nice catered lunch and gathered at IndyHall on Saturday to hack on new iOS 7 APIs. The event was a huge success.

One newer member wanted to help do this more often and so Tom Piarulli joined the leadership to help run what has now become known as Side Project Saturday. SPS is typically the last Saturday of the month, starting at 10am and running until about 5pm. People come and go, work on their side projects, ask questions and otherwise socialize with their fellow geeks.

Tom at a SPS right after the WWDC announcements.

At around the same time the leadership also welcomed Kotaro Fujita to help run our website and Twitter account.

Kotaro talks about his favorite tool.

Moving to the Apple Store

We are fortunate enough to have a very nice Apple Store here in Philadelphia. Sometime in 2013 I was approached by the business relations manager from the store. He came to a few meetings and introduced himself. He was really impressed with our group and offered to help us out and possibly host the meeting.

I was kind of torn. We had our start at IndyHall and while we were definitely starting to outgrow the space I didn’t want to leave. Me and Kotaro took a trip to the Apple Store to checkout the Briefing Room. The room is incredibly nice. It’s on the second floor of the store, not open to the public. It’s kind of a VIP area for larger demos and meetings. It had 5 mounted TVs, all wired up for AirPlay and sound. A huge wood table with 16 swivel chairs but plenty of space around the edges for fold up chairs. Fully laid out we could host 40-45 people and have a great AV setup to help support the speakers.

We made the move in November 2013 and it’s worked out great. The space is extremely accommodating and many of the members certainly enjoy the prestige of getting to meet in such a private venue.

Apple Store Meeting

Workshops, Suburb Side Project Saturdays, and CocoaLove

In 2014, Curtis Herbert who had already been very active in the community as well as doing some talks for us joined the leadership team and started multiple new projects.

Curtis teaching his ObjC Workshop

Firstly was CocoaLove, which started out best as I can recall as friendly outburst during my “Industry News” section while reviewing upcoming conferences. “Why don’t we have any conferences here in Philly?” — and so it began. CocoaLove is not an official child of CocoaHeads but we obviously share a lot of the same goals.

Curtis also helped spur new educational events we came to call Workshops. Typically one day, 5 hour events with paid for tickets (most money going to the speaker to help compensate them for prep time). We ran about six or so over the last year and a half, covering introductions to Objective-C and then later Swift, App Marketing, UX design, and more. Workshops are incredibly loved by our members and sell out quickly. The hardest part about running them is the custom content creation. We have some ideas on how to improve that moving forward and hope to offer more Workshops in the year ahead so stay tuned.

Marketing Workshop

And finally we have our “Suburb” edition of Side Project Saturday. The city of Philadelphia is very flat and wide, with an extended suburban layout. We have many members who live outside the city and can not always participate with our center city events. To help, we started running a “Suburb” edition of our Side Project Saturday event. These are held at the Apple Store in King of Prussia. We’ve been able to host a few and hope to do more. Again, Curtis has been very helpful in organizing this.

Videos

In 2015 we continued to evolve and expand what we offer, this time with recordings. We’ve been talking about recordings for awhile but in 2015 things started to fall into place. I’ll go into detail as to how we record in a future blog post, but put simply it’s capturing what video we pipe to the monitors and then using a lapel microphone for the speaker to capture their voice. After the meeting we match the two together and then publish to Vimeo. During the fall we also added a custom AppleTV app which streams the content as well (search for “CocoaHeads” and you’ll find it).

Video Capture Setup

Apple TV App

Book Club

Another new endeavor for 2015 was the Book Club. We started it over the summer reading through Cocoa Programming for Mac OS X and then restarted it this winter with HackingWithSwift.com. Book Club basically has members work through chapters and then meet online to discuss how it went. Over the summer we met every other week, while the winter edition has been more aggressive doing it every Monday. A big thanks to Michael Mayer for helping to run the latest Book Club season.

The Future

So it’s 2016 and things continue to look good. I’d say the biggest problem we have is that we occasionally max out of room occupancy at the Apple Store but not enough to really justify a new venue. We also recognize our website could use a lot of work to meet our high standards but it remains a fairly low priority overall.

As the main organizer I’m extremely lucky to have such great support from the members and the rest of the leadership. There is no way we could do this much work if it wasn’t for the many volunteers we have. I’m extremely proud of the community we’ve made and continue to run.

Recommendations

To those running similar meet ups a few closing recommendations:

  • Be consistent with meeting dates and locations.
  • Be willing to do a lot of personal presentations and/or MC of roundtables when other speakers are not available in the early days.
  • Don’t be afraid to shake people down for talks. Also remember it’s much easier to get them to sign up for a talk a few months from now than in a few weeks. Take advantage of that.
  • If meeting after work try to have some food and drink available. We do pizza cause it’s relatively cheap and easy. You want to feed them but remember they aren’t coming for the food. In the early days a donation jar can usually cover most of the costs, later you might need sponsorship. I’ll have more to say on that in the future.
  • Help spread the responsibilities. Even smaller things like handing the food, taking meeting notes or running the group Twitter helps turn “the group” into “our group”.
  • Have fun.

31 Days, 31 Products: Fin

Day 02: Fin

This post is part of a larger series where for 31 days I’m posting a story about a particular product or service I’ve come to enjoy.

Fin is an app for iOS that turns your device into a large countdown timer; particularly helpful for presentations and performances. Fin is a universal app that works well for iPad as well as iPhone. It even has Watch support.

I’ve been using Fin via an iPad mini at CocoaHeads and it really helps us stay on time with our busy agenda. I really like the color warnings when time is running out and generally how easy it is to reset / change times with gestures.

Fin is available from the App Store for $4.99 and you can find out more about it on its website.

iOS Mobile Design with Sketch at Big Nerd Ranch

I’ve wanted to get better at using Sketch for a while now and it looks like I might get my wish!

iOS Mobile Design with Sketch

At work we’ve revamped our mobile design class and it now includes learning Sketch alongside mobile design fundamentals. The class summary:

If you have basic design experience in UI, UX, web or responsive web design, this class will teach you to bring your designs to iOS in just five days.

In this intense week of learning about design for iOS devices, you will design an iOS app, from concept to delivery. With a focus on Sketch, you will learn a process that you can use in any future app design projects.

If this sounds interesting to you I highly encourage you to register and join us in January. I’m registered and really looking forward to the class.

24 Hours with My iPad Pro

I’ve always been a big fan of the iPad. I’ve owned an: iPad 1, iPad 2 (which I sold to upgrade to an iPad 3), an iPad mini (retina), and now an iPad Pro.

I’ve been pretty antsy for an iPad Pro since I saw the original announcement. I can’t say I have any unquie plans for it (outside reading Big Nerd Ranch book drafts in PDF format on a much bigger screen). Mostly I just want to experiment with the all the new features like the pencil and multitasking.

As of right now I have the iPad Pro itself (I went with the high end, 128 GB with cellular) and the keyboard cover. The pencil has been a little harder to come by so until then I’m making due with the 53 Pencil I bought a while ago but never really got into due to the smallness of the iPad mini. So far, it plus the larger screen is working out well. I look forward to comparing this to Apple’s version.

There are lots of great iPad Pro reviews out there so I won’t go into major detail. The things I’m liking a lot: the huge screen, the sound system and the battery life. The things that got me down a bit: the removal of the split keyboard (it’s hard to type holding the iPad Pro in portrait mode), lack of 3D Touch and the lack of the newer thumbprint scanner.

All that said, when it comes down to it, it’s about the software. I think I’ve spent $100 in new software playing around with things. If you know of some must have iPad software let me know cause I want to see how hard I can push this thing. Tomorrow should be a great test as I fly down to Atlanta to visit the home office of Big Nerd Ranch.

Sweating the Little Details of UI Copy

While user interface design is not a core responsibility at my current job I do believe it is an important skill in my field and I try to improve all the time. A large aspect of user interface design is choosing the right words. For example, a good UI designer when crafting an iOS alert will honor and consider Apple recommendations. Some notes from the HIG:

Place buttons appropriately. Ideally, the button that’s most natural to tap should meet two criteria: It should perform the action that users are most likely to want and it should be the least likely to cause problems if a user taps it inadvertently. Specifically:

  • When the most likely button performs a nondestructive action, it should be on the right in a two-button alert. The button that cancels this action should be on the left.
  • When the most likely button performs a destructive action, it should be on the left in a two-button alert. The button that cancels this action should be on the right.

Give alert buttons short, logical titles. The best button titles consist of one or two words that describe the result of tapping the button. Follow these guidelines as you create titles for alert buttons:

  • As with all button titles, use title-style capitalization and no ending punctuation.
  • As much as possible, use verbs and verb phrases that relate directly to the alert text—for example, “Cancel,” “View All,” “Reply,” or “Ignore.”
  • Use “OK” for a simple acceptance option if there is no better alternative. Avoid using “Yes” or “No.”
  • Avoid “you,” “your,” “me,” and “my” as much as possible. Button titles that use these words are often ambiguous and can appear patronizing.

My personal pet peeve isn’t mentioned in the HIG but is present in almost all systems that require a user account:

Forget your password?

I hate that phrase. I find it to be patronizing and judgmental. As if I’m suppose to remember every password I ever created for every little web site and service. Who could?

Additionally, it’s misleading. If I click a link labeled “New Comment” I expect to be provided a form to make a new comment. If click a link to “Forget your password?” do I expect some flashy animated GIF that will erase some data from my brain? What I want is a link to “Reset Password”. The link title “Reset Password” is clear, focused on the target action to be performed and does not have a hint of judgement.

Sweat the little things. Read and then reread the interface guidelines. Be able to explain why for all your interface choices. Have fun.

How To Play WWDC Sessions at 2x Speed

Now that all the new bits of iOS 9 and OS X 10.11 are in the wild you might find yourself wanting to get up to speed on some of the changes. One great resource to help you get started is Apple’s WWDC videos.

The WWDC video library has a lot going for it: HD and SD video sizes, slide downloads and now even full text search! The only real negative thing is the sheer amount of content out there. It can get overwhelming and time consuming to watch all the stuff you are interested in. Here’s the hint. Like podcasts, WWDC videos are mostly single voices speaking one at a time and if you have the tools to double the playback speed you’ll find them still very comprehensible.

Now for the tools. For downloading you can of course use the Apple website. I like this WWDC Mac app as well. Once you have the video file on your hard drive you’ll unfortunately need to look for something beside the built-in QuickTime player to help. Even with all its enhancements it sadly doesn’t have this tool of QuickTime’s past. The good news is you can still download QuickTime 7 and it works great!

After you open your movie in QuickTime 7 (you’ll find it installed in the Utilities folder), use the Window menu and choose Show A/V Controls. In this panel you’ll see a slider that let’s you adjust the playback speed.

QuickTime 7

Now you can watch your chosen WWDC videos in half of the time! Enjoy!

UPDATE: My thanks to Paul Brown who let me know that the native QuickTime player can playback faster, even if it is a little hidden. To increase playback speed, bring up the controls with your mouse, then option-click on the fast-forward control. This will increment playback speed by 10% each time you click. You can keep clicking this up to 2.0x playback speed but sadly the audio does not work at 2.0x, you’ll have to limit yourself to 1.9x to retain the faster audio. Thanks again for the help Paul!

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.

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.

Girl Develop It: Introduction to iOS Development

The Introduction to iOS Development class I’m teaching for Girl Develop It is open and tickets are for sale.

This class will provide attendees an introduction into iOS development through a mix of lecture-style presentations and lots of hands on coding exercises that in total will demonstrate what it is like to be an iOS developer.

The 2-day class costs $100 and will be held on Saturday Feb 7th and Sunday Feb 8th.

If you know of a woman in the Philadelphia area who is interested in iOS please let them know. Thanks.

An “App Architecture” Kata

At the last Side Project Saturday CocoaHeads event I ran a special little exercise. Here was how I described it.

I’d like to run a little event, (maybe after lunch?) for anyone who wants to participate. Should take like 45-60m.

You will be presented with a mobile app idea. It’ll be fairly basic and we’ll list all of the behaviors we need and some we’d like in the future. You will then pair up with someone and pencil out how this could be architected. Each group will then present their app architecture and answer questions, accept feedback from the rest of the group.

From Wikipedia: A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. The term was probably first coined by Dave Thomas, co-author of the book The Pragmatic Programmer, in a bow to the Japanese concept of kata in the martial arts.

App architecture is one of those things I’m always trying to improve so I thought it would be cool to see how other people would solve similar problems.

We had six people participate. We started with a brief explanation of the app we were going to sketch out an architecture for. Then, we broke up into pairs of two. After about 40 minutes we came back and showed the group what we came up with.

Kata App Wireframe

The one group ended up documenting behaviors per screen. They did a great job of documenting the little things that developers might look over as assumed behavior (which add up fast). It was pointed out that it’s also a great idea to document the things you will not be doing since there tends to be lots of great ideas during brainstorms but when you are planning a sprint of a version target you need to be clear about what’s in and what’s out.

The other two groups (including my own) were more visual, using tools like OmniGraffle to draw representation of models, controllers and services. There was some common separation of responsibilities with slight differences: the one group making an “APIStore” that combined the state and networking and another (mine) that favored separate “Network” and “Session” managers.

Some of the more high-end abstractions I introduced included a FormController that could take a Form model (that had say a collection of FormFields) which described the form at a model level and then through a FormController might be able to render the form on screen through a TableView for a generic representation or maybe through specific outlets to a custom layout. It could also handle things like input validation. True, this is overkill for our one simple login form but assuming this app might grow to contain edit person forms at some point it might not be too bad of an idea (and plus the whole purpose of this event is to discuss interesting ideas).

I also took the time to introduce a pattern thats been out for a while but is a recent addition to my personal toolkit, that being ViewModel. You can read more about MVVM on objc.io. In short it’s a great way to centralize the code you use to transform model objects for user interface purposes and keep that logic out of the model.

In conclusion, everyone who participated seemed to enjoy the exercise and I would encourage you to replicate it amongst your own peers. It’s still up for debate if “Side Project Saturday” is the best venue for such things as many who come have their own stuff to work.