Last weekend we (Andrew and I) went to CococaConf in San Jose. It was the first time for me attending CocoaConf and the event was interesting but not quite what I expected it would be.
I was hosted in a small hotel Holiday Inn in San Jose and had about 60-80 attendees, developers for the most part.
I had a chance to hear several great talks and personal highlights of mine are: Financing Your Technical Debt, Increasing Productivity in Xcode, Keynote: γνῶθι σεαυτόν, Taming MVC with Model View Presenter, The Many Shapes of Polymorphism, Using Torch7 and Neural Networks on iOS, Building buddybuild.
Financing Your Technical Debt
In his session James Dempsey spoke about technical debt, what does it actually mean, how do we and other stakeholders understand it, and how it compares to financial debt that most of the people are familiar with.
My takeaways from the session are: technical debt is inevitable and sometimes is actually good for your codebase and the business, encapsulation and can help a lot with isolating parts of the app that increase tech debt.
Another interesting point he made was where the analogy to financial debt fell apart. Financial debt can essentially never be forgiven. Technical debt can be “forgiven”. For example, an old piece of code may be abandoned when there’s a feature change. This is interesting because this means you have to be smart where you spend your time refactoring. You have to think about whether a piece of code is worth spending the time refactoring. There seems to be a calculus here. If there is some threshold value ‘x’, where ‘x’ represents whether one should refactor or not. One is in now in the business of calculating whether one should expend resources performing that refactor. Of course, problem is we never know for certain whether refactor should be performed or not because we’re not clairvoyant.
Increasing Productivity in Xcode
Mark Gerl spoke about Xcode tips and tricks. Xcode, for better or worse, is a huge tool with lots of things packed in it. It was great to hear about some nitty little clever things you could do with it and to hear other people’s experience with shortcuts and automations. At the end of the day, though, I’ll still continue to use AppCode alongside Xcode. As Andrew noticed the other day, he uses AppCode mostly to write new code and to refactor, and Xcode to work with existing code and to debug.
Keynote: γνῶθι σεαυτόν
Mark Dalrymple’s keynote was unusual and with an intriguing title. That gibberish thing γνῶθι σεαυτόν is Greek and translates in English as “Know Yourself”. Mark spoke about his life’s journey, how he explored things outside of his comfort zone, and how iterative approach to life helped him overcome many boundaries. Mark’s key takeaway was that life is about getting to know yourself and that knowing yourself requires you to get outside of your comfort zone.
Taming MVC with Model View Presenter
Ooh, never-dying “MVC is bad” notion. Jon Reid walked us through MVP (Model View Presenter) pattern as an example of a remedy for Massive View Controller trap that many of us get into. It’s different from MVVM approach and I need to explore and examine it further before I can draw my own conclusions. But the first impression I had was that it’s a bit too complicated to understand at first glance and that MVVM does similar things and more. Will need to research it.
The Many Shapes of Polymorphism
Another talk by Mark Dalrymple. This one was focused on vtables and under the hood mechanics of method messaging in Obj-C and Swift. It was a great overview of low-level stuff that is not that useful in day-to-day development but is good to know for a deeper understanding of what’s going on with your code.
Using Torch7 and Neural Networks on iOS
By far it was the most unusual and interesting talk for an iOS conference. Josh Smith gave us a good introduction to Neural Networks and Machine Learning. I’ve taken a few notes for myself on how it all could be applied to different projects and businesses. Overall the most practical thing I can think of to use neural networks for is predictive suggestions. Hypothetically to do predictive suggestions you should start feeding your network with data as soon as possible. Each little droplet of data will ultimately contribute to a larger learning process that eventually could be returning the right results on the new inputs given to it.
But unfortunately there isn’t much practical application and development was done with it so far, it’s all up to us to explore that new field of machine learning.
Omg, that was the most useful talk of the entire conference for us! Chris Stott of buddybuild told us all about
buddybuild , a tool for continuous deployment and delivery for iOS and Android, and how himself and his team took upon a journey to build it. The entire room was very excited to hear about it. We were struggling with our own CircleCi continuous delivery setup at Wanelo for weeks and
buildbuddy comes in as such a relief and breeze to use. Right there at the conference while he was giving his talk and answering questions I was able to setup an account, connect our github repo, and make a full on build of our alpha branch with all the right provisioning profiles, certificates, device udids, etc. Didn’t have to set up a thing or write a single line of code! Amazing! Buildbuddy is definitely going to be our main continuous delivery tool and we’re switching to it asap.
Overall the conference was a pleasant experience but I had higher expectations of the session topics. Probably something more advanced would’ve been closer to what I wanted to see. But nevertheless, it was good to mingle with fellow developers and to hear what are they up to these days and what challenges they are facing building iOS apps.