360iDev 2015 Conference Highlights

Check out some of the best talks and highlights from this year’s 360iDev iOS conference! By Tim Mitra.

Leave a rating/review
Save for later
Share

A record-breaking 390 attendees — including a full slate of 55 speakers — recently descended upon Denver, Colorado to take part in the annual 360 iDev conference.

360iDev was broken into three tracks — design, code and business — and had something to offer to anyone involved in the business of developing apps. With 61 sessions to choose from, it was easy to find find a mix of talks tailored to your interests.

In this year’s conference, the talks tended to focus on three overarching themes:

  1. The state of independent iOS developers
  2. Swift and functional programming
  3. Auto Layout and Adaptive Layout

In this article, I’ll share my own thoughts of the conference along with those of the 11 raywenderlich.com team members who were at the conference, and share a selection of quality presentations from 360iDev 2015 below, grouped by theme. Let’s dive in!

The State of Independent iOS Developers

Keynote: Still Here – Josh Michaels

“Steve Jobs’ educational device is now a casino.” – Josh Michaels

360f-josh

The conference opened with a keynote by Josh Michaels, a rare successful independent developer. It seems that lately our iOS and Mac indie developer heroes have been faltering. Josh reminded the gathered developers that the current playing field has changed.

He asked audience members to stand up if they’d contributed to shipping an app; nearly the entire room stood. He then asked those who are making money from apps to remain standing. Only around five out of the 390 attendees remained standing.

Josh went on to explain that the venture-capital backed apps had deflated prices and inflated app building costs. As many indies have complained, the upgrade revenue never arrived. Apple created a store offering free upgrades, with no reward to developers. As he showed a screenshot of the big budget & top selling apps he stated, “Steve Jobs’ educational device is now a casino.”

360-casino

Josh went on to explains that this situation exists because the app market has reached maturity. Unsurprisingly, this is how capitalism works, and for indies it’s better to accept that easy early days are over. He then presented his 2015 guide to being an indie developer:

  1. Live cheaply.
  2. Make something that you would use.
  3. Spend no more than 4 weeks on version 1.
  4. Ride that wave.
  5. GOTO Step 1.

Being indie is a lifestyle choice, and Josh advised developers that remaining exclusive to Apple will be a losing battle in the long run. He urged developers to focus on their work, diversify their interests and their income sources. He notes that “Think Different” is about pushing against the dominant paradigm; Apple, being the dominant paradigm, is no longer the way to think different.

What’s In It For Us After the Indiepocalipse – Marin Todorov

360g-marin

[Video link]

Next raywenderlich.com team member Marin Todorov took us on a journey though his own trials and tribulations as an indie developer.

He started by tracing the history of the “Indiepocalypse” – from its origins in a collection of doom and gloom articles published by iOS-Goodies.com to the current state where app sales continue to decline, and large companies dominate the market.

Marin went on to describe his struggles developing a keyboard extension with his partner. Their app Doodle Doodle suffered from a seemingly ever-changing set of rules arbitrarily declared by Apple. Eventually the app shipped, but like many keyboard extensions, suffers from an obtuse and lengthy installation process.

Being limited by the lack of in-app purchases or advertising options, the app could only be purchased outright. Most iOS customers expect apps to be free, which limits an indie keyboard extension app’s success. The final slap in the face is an alert view that states giving the app the full access it needs logs keyboard use and exposes credit card data to the developer.

Marin tells of an enlightening Coursera course he viewed: Developing Innovative Ideas for New Companies. The course draws parallels between the telegraph industry and developing for the App Store. In the early years of communications, messages were sent by coach and it was possible for anyone with sufficient skills to develop a telegraph business. Eventually, the market grew until the telephone was invented — at which point the market died. The app market began in 2008; it’s reached its mid-point in 2015 and if you extrapoalate the data then it should die off by 2017.

Marin read from a transcript of Steve Jobs’ introduction of the App Store. Apple would create the App Store, collect the funds, distribute the apps and App Store Search — Marin pauses here — would also provide the market. Apple didn’t promise that you would get rich. Marin’s advice, similar to others, is be realistic about success, make a high quality app, team up, launch into a niche, contribute to the community, write books and share your code.

Succeeding Slowly: A Practical Guide To Going Indie – Charles Perry

360f-charles

“If you can take a nap without asking permission: you’re an indie!” – Charles Perry

[Video Link]

Charles Perry, founder of MetaKite Software and host of the Release Notes podcast, provided some advice for those contemplating going indie. There’s lots of money to be made on the App Store — but only for a few developers. Why would you want to go indie? The answer is: “freedom”!

At past conferences, Charles has given a few talks about making a living selling apps on the iOS App Store, Mac App Store and through self-managed sales of OS X software. His podcast also focuses on the business of being indie.

His guide in brief suggests that a developer should set a profit target, start saving, conceive of a product, execute the product, build momentum and then take the leap into the indie lifestyle. In response to Josh Michael’s keynote where he claims indies have lost, Charle counters that they didn’t lose, “…they failed to adjust.” As mentioned in other indie development talks, Charles reiterated we are no longer in an early app market. Indie developers need to adjust to the mature market and build a mature business.

Swift and Functional Programming

Switching Your Brain to Swift – Greg Heo

[Video link]

360f-greg

raywenderlich.com team member Greg Heo presented one of the most popular talks to a standing-room only crowd. Was it about striking it rich on the app store, or how to run a mobile iOS consulting firm from a beach in Bora Bora? Nope – it was about making the switch to developing in Swift and covered the differences between Swift and Objective-C.

Greg started the talk by polling the audience and found the vast majority had not written more than one hundred lines of Swift code. Drawing on analogies from Objective-C and C++, Greg attempted to lift the veil on Swift. He patiently explained the aspects of types and type safety by exploring how Optional types play an important role, and used the analogy of unwrapping or unboxing to reveal a puppy. The point, he says, is an Optional is more like the box than the puppy, which the box may or may not contain.

He went on to demonstrate how Swift and Objective-C can work together and demonstrated some of the ways that Swift works with Objective-C. He also covered some of the newer features of Objective-C that work with Swift. The talk helped clarify where the limits of Objective-C lie.

Greg’s Example Code on Github

Bringing Swift into your Objective-C Projects – René Cacheaux

360g-rene

raywenderlich.com team member Rene Cacheaux’s talk was based on the experiences of his development team as they transitioned a large project from Objective-C to Swift. He began by stating he doesn’t dislike Objective-C, but because Apple went all in he’s since adopted the language. Swift is more concise and makes for safer, less crash-prone projects.

Using the Lord of the Rings as a metaphor, he tells of his fellowship’s journey. The poor framework support was the Mines of Moria, the project scheme bugs the Black Gates of Mordor. Gollum was the enterprise coding troubles that chased them on their journey and shipping an all-Swift app was analogous to destroying the Ring at Mount Doom.

The benefits of Swift are found in working with one file, without the need for .h or .m files or extensions. The downsides are that Swift doesn’t support macros and there was initial incompatibility with third-party libraries. The massive changes between Swift 1.0 and 1.2 posed many challenges, as did the limited ability to port Swift elements back to Objective-C.

Réné said his team decided to approach the project in a vertical fashion:

360-rene

They began by converting one view controller, then moved downwards through child classes, then through persistence, networking and other utilities. Once the first vertical slice was converted, they moved on the the next vertical slice. Eventually, his team arrived at a complete rewrite — and Sauron was defeated! :]

360f-collaborating

Bridging the Gap: Functional Programming in Objective C & Swift – Chris Woodward

Functional programming gained a lot of attention with the introduction of Swift, and was mentioned in some of the more popular sessions at WWDC 2015. In his talk, Chris Woodward noted that wrapping your head around functional programming while making the switch to Swift can be incredibly challenging for object-oriented developers.

Many apps consist of complex and tangled logic, with thousands and thousands of lines of code. Managing this requires a complex mental model resulting in code that’s hard to read, reason about, extend, fix and test. Chris contended that humans have a limited capacity to store things. By grouping things together, our own mental storage capacity can go up and reduce the human bottleneck. So how do you avoid complex code? Add structure, avoid extra dependencies and adopt a functional style.

Chris stated this state of coding nirvana could be reached through the use of short functions. He laid out a few functional rules stating that functions should not share mutable state or cause side effects. Chris also discussed filtering using predicates, map and reduce functions. The main takeaways of the talk was that code should be readable and a functional style could be used in any language that supports anonymous functions.

Auto Layout and Adaptive Layout Talks

Universal Layout Workshop – Sam Davies

360f-sam2

Six hands-on workshops preceded the conference, covering debugging, prototyping, core motion, HealthKit and animations; the format is quite similar to that of the hands-on tutorials at RWDevCon.

One of the highlights was the Universal Layout workshop, covered by raywenderlich.com team member Sam Davies. Sam presented a three-and-a-half hour review of layout in iOS, size classes, Adaptive Layout and stack views.

He began with a quick refresher on Auto Layout, and offered some tips to clarify some idiosyncrasies of using Auto Layout in Interface Builder. For example, when Control-dragging to create constraints, the direction of the drag changes the contextual menu that pops up. Also, bullets that appear in the contextual menu indicate which constraints already exist. He also suggested updating the frames in Interface Builder so the design time frames satisfy the constraints.

The introduction of multitasking in iOS 9 lets multiple apps appear on the screen at the same time. Adaptive Layout and size classes, which once appeared arbitrary, are now extremely important in the multitasking paradigm. If you already use Auto Layout, you’re ahead of the multitasking game.

Sam suggested that you handle layout as follows:

  1. Build your base layout first (Any, Any).
  2. Choose the Size Class overrides for the other sizes.
  3. Uninstall the irrelevant constraints.
  4. Add new relevant constraints.
  5. Rinse & Repeat.

Rotation methods should be avoided in the future; a combination of Auto Layout and Adaptive Layout will handle device rotation, since it’s really the size of the view that’s changing. In the end you avoid the “angry” red errors and the “less angry” orange warnings.

New in iOS 9, stack views now simplify the process of creating layouts, and Sam gave a great overview and demo of how they work as well. After seeing Sam give this talk, I have to say Stack Views are my new favorite thing!

Sam’s Auto Layout Workshop on GitHub

Solving Auto Layout Problems – Jack Cox

In another standing-room only talk, Jack Cox covered many tips and tricks for working with the often-challenging world of Auto Layout. He covered table views and scroll views, which by their variable nature create challenges for Auto Layout. Like Sam’s workshop, Jack covered stack views and the issues that surround them. For each issue, he provided a value on the “Auto Layout pain scale” with scroll views and table views providing moderate pain, while stack views present the least amount of pain. Debugging Auto Layout, he said, provides the worst kind of pain. :]

Jack provided a walkthrough debugging session dealing with the root causes of Auto Layout debugging pain: conflicts and ambiguity. Jack demonstrated one interesting way to reveal the workings under the hood: while breaking down the Visual Formatting Language, he explained how to convert the console output of po [[UIWindow keyWindow] _autolayoutTrace] into a formula that makes sense.

Jack’s Auto Layout Problem’s on GitHub

Sam explaining angry contraints

Sam explaining angry contraints

Mastering Auto Layout – Justin Williams

[Video link]

Justin Williams’ talk on Auto Layout began by covering the new iOS 9 layout anchors and the default 8-pt values set by Apple. He switched to the code and demonstrated how to modify the layout anchors through increaseMargin() or decreaseMargin() actions. Expounding further on the new hotness of layout anchors, he once again used code to create a simple form with its view elements centered neatly in a minimum number of lines.

His third coding demonstration covered the new Layout Guides, which can simplify complex layout scenarios in a minimal amount of code. He closed out the session by showcasing some Auto Layout debugging tips. Similar to others who spoke on Auto Layout, he suggested using the identifier property on constraints, which you can print out to the console and use to identify the element’s constraints in the output. You can then output a view’s constraints by overriding viewDidLayoutSubviews() like this:

override func viewDidLayoutSubviews()
    {
        super.viewDidLayoutSubviews()
        print("self.view.constraints = \(self.view.constraints)")
    }

Justin’s Mastering Auto Layout on GitHub

raywenderlich.com team members Aaron Douglas, Marin Tordorov, Derek Selander, Ellen Shapiro and Ryan Poolos

raywenderlich.com team members Aaron Douglas, Marin Tordorov, Derek Selander, Ellen Shapiro and Ryan Poolos

Fun & Games

The conference was more than just talks – there was some fun & games too!

Stump Jr 360: Not Dead Yet – Hosted by Tom Harrington

Presenting the...Experts?

Presenting the…Experts?

The second annual “Stump the Experts Speakers 360” picks up where the WWDC favorite “Stump the Experts” leaves off. A rag-tag collection of “experts” takes on the gathered audience in a game-show style battle of inane Apple trivia. The hosts present questions to challenge the audience, who in turn write trivia questions on 3×5 index cards.

The event is rife with comedic moments, and most often useless trivia, with points awarded to each side. Prizes consist of extremely valuable 5 1/4″ inch floppies that may have been overwritten, old eWorld and Newton stickers and bits of a tree stump from Tom’s own backyard. This session is a true highlight, and I look forward to many more years of Stump the Speakers 360 or whatever they choose to call it.

Full disclosure: I did manage to correctly answer a question in both the first and second “Stump”! :]

Game Dev Jam – hosted by Tom Ortega

360f-gamejam

Each year I’ve attended 360|iDev there’s been an all-nighter dev jam, where bleary-eyed developers show off their work first thing in the morning to the collected masses. Three years ago, Sprite Kit had just been released, so there were lots of games produced based on the new framework as well as Unity and Cocos2D.

This year’s game jam featured WatchKit app and several games, one of them built by three developers — including raywenderlich.com team member Ryan Poolos — who recently took the indie plunge. The game dev jam and accompanying board game night provided a great way to socialize and collaborate with other developers from around the world.

Other Interesting Talks

There are a few more other interesting thoughts that I thought you might like to hear about.

Apple Pay What Happens When You Tap – Stephan Huda

[Video link]

Stephan Huda, a principal engineer at Shopkeep, covered the ins and outs of paying for services with credit cards, near field communication (NFC), ApplePay and loyalty programs. Delving into the mechanisms of each, he began by explaining what information is stored in a credit card’s magnetic strip. He then presented an overview of the transaction process, from the merchant terminal, through a payment processor, to the card issuer. The transaction travels from the issuer to the acquirer who sends the approval back to the merchant.

He then described how NFC payments are processed using cryptography and a “secure element” chip in your device. While your device’s chip is powered by a nearby NFC reader, the secure element combines your account, a secure key and a unique transaction key. The transaction follows a similar process to the credit card, but with the extra encoded information related to the active transaction.

The details behind the payment process was covered lightly “with lots of hard waving” in Session 701 at WWDC 2015, but the exact process remains undisclosed by Apple. Stephan speculated that a transaction contains a series of merchant identifiers along with encrypted information in a manner that may be similar to NFC.

Localization Explained – Ellen Shapiro

360g-ellen

I attended the talk of raywenderlich.com team member Ellen Shapiro mostly out of curiosity, having employed localization in several apps myself. To my surprise and delight, Ellen’s talk illuminated many aspects of localization that I either wasn’t aware or hadn’t considered. She began with the statistics that 66% of Apple’s revenue comes from outside of the United States — 41% from China alone.

Localization, or as Ellen prefers, “internationalization”, is more complicated than it appears. Ellen presented a complete set of considerations and tips when adapting your app for a broader audience. Using NSLocalizedString along with a key and comment is the first step most developers are aware of. Running a genstrings script on a Swift or Objective-C file will generate a “.strings” file which can then be sent out to create translation files and placed into relative lprog folders. Ellen pointed out that the Base.lprog is the fallback location for missing translations.

Storyboards can also support localization using a strings file that bears the storyboard’s name. Ellen noted that numeric values are often displayed and handled differently in other languages and developers need to be aware of the different date formats and timezones used internationally. Developers should be mindful that iOS 9 will automatically handle right-to-left language orientations. Also new in iOS 9 is NSPersonNameComponentsFormatter, which deals with the various ways first names, family names, initials and titles display across languages. All in all, Ellen’s talk was good overview if you’re planning to sell your apps in a worldwide market.

Super Computing for iOS and Macs With Metal – Jeff Biggus

360f-jeff

Jeff Biggus presented a well-attended talk on super computing which contained a fascinating overview of the chips that work alongside and separate from the CPU.

Jeff gave a brief history of the chips beginning with the CUDA chip in 2007. In 2008, Apple introduced OpenCL, which permitted the same code to be run on any hardware that supported the OpenCL framework. From there, the market started to fragment. AMD brought out the Mantle API in 2013 for standard CPUs with embedded GPUs. Apple followed this with Metal for Mac and iOS; the Vulkan project began to use AMD’s code and Google decided to go with Vulkan. Jeff’s hope is that Apple also adopts project Vulkan in future.

Jeff brought along a demo project that displayed a Mandelbrot image on the Mac. Using the CPU, zooming in on the Mandelbrot was a sluggish operation. Jeff then demonstrated various combinations of settings in the app and changes to the processing used. Finally, he landed on pure Metal, which uses the GPUs; the Mandelbrot scaled up smoothly at hundreds of processes per second.

In the middle of his very complex talk of maths, chips and technology, Jeff displayed a very welcome image of a puppy! It was a refreshing break in a technical but otherwise great talk on the subject.

Jeff’s Code Examples on GitHub

Where to Go From Here?

I can’t recommend 360iDev highly enough; it’s a great experience for any developer, designer or anyone involved in app production.

The hosts John Wilker, Nicole Wilker, and Tom Ortega make the conference feel like home, and the collective masses are super friendly. No matter what obstacles might come up, I feel I cannot afford to miss this conference. Every year I’ve attended I come away re-energized, enlightened and ready to take on the next year’s work.

Tom Ortega and John Wilker

Tom Ortega and John Wilker

Ray’s said a number of times that 360iDev is one of his favorite iOS conferences — and I’d have to agree. If you’re looking for more hands-on tutorials, check out RWDevCon which runs March 11th-12th, 2016 in Washington D.C.; it and 360iDev are both at the top of my own personal list of conferences.

Let us know what you think! Did you attend? Will you attend next year? Will you step up and submit a talk of your own? Please join the forum discussion below!