Comment

WWDC! 🎉

It's a really early announcement of the dates this year, undoubtedly prompted by the news that WWDC 2017 will not be hosted in San Francisco! Instead, it's heading inland and back to the original conference venue of the McEnery Convention Center in San Jose where it started in the late 80s.

The San Jose venue is very close to Cupertino and even closer to the new Apple campus, which is nearing completion. Maybe by June, that'll all be finished and the Thursday night bash might be hosted in the middle of the spaceship? 🚀 That's wishful thinking, but the timescales would seem to fit nicely.

The new convention venue is a little larger than Moscone West but not so much bigger that it's going to change the feel of the conference, in fact it may even end up being the exact same number of attendees as no announcements have been made on that front. What will make a difference though is the change of surroundings for all of the other WWDC related events. AltConf have already started making plans to move and of course all the parties will also move but the feel of San Jose is very different to SOMA!

Tickets will be a lottery distribution again, which has worked well the last few years and will go on sale at the end of March so make sure you have your credit cards ready!

Dave Verwer

News

Ted Kremenek talking more about plans for Swift 4. It's been mentioned several times that ABI stability might not make it into this release as originally planned, but I think this is the first time we've heard it definitively stated. While the majority of the work to make the ABI stable will be done, it's not going to be completed in this release. I still don't think this is a major deal for the vast majority of Swift developers and I'd rather them get it right and do it when they're happy with it.

Jeff Johnson with a interesting piece on whether both Swift and Objective-C can both survive within the Apple development environment. I won't try and summarise the article here but he certainly brings up some really tough questions. I don't think this is a decision that needs to be made very quickly, but can you really see Apple still maintaining both in 5 years? 10 years? 15?

Sponsored Link

More than 10 extract refactorings for Objective-C and C++. Rename and Extract Variable refactorings for Swift. Generating method and function signatures, variables, constants and properties right from their usages in the code. All this is possible in AppCode, a smart iOS/macOS IDE by JetBrains.

Code

Keith Harrison on implementing the Hashable protocol in your classes. The implementation of the protocol itself is of course very simple, but the additional information on choosing between hashing functions and avoiding collisions is fascinating.

Refactoring? Radical refactoring? or maybe ... Rewriting?! I really liked this article by Rob Napier who argues that even if you stick by Joel's rule of what you should never do you can still actually refactor an entire project, over time. It'll take you a long time but throughout the process you'll have working, maintainable software. It's obviously only for extreme cases, but I think the approach is solid if you find yourself there.

Talking of refactoring, Jesse Squires gives us some fairly straightforward but still useful advice on how best to get rid of those singletons that are dotted around your app. I really liked his point about using Swift's optional parameters to do "partial" DI as well. Good read.

Custom collection view transitions have been around for an age now, but if you just want a selection of pre-canned transitions between paged cells then you could definitely do worse than this very pretty set from Jin Wang.

Design

Angie Li with an interesting article on the UI problems caused by "Swipe to delete" or "Swipe to [something]" in apps. There's a huge number of points to be made against this design but at the same time, if managed well it can still be very effective. I think a good way to look at this is to make sure anything in this kind of UI is also able to be accessed elsewhere in the app. Think of them like keyboard shortcuts for your more advanced users.