At the beginning of March I had the pleasure of attending try!Swift Tokyo 2018 in Japan ⛩. If you have never attended a try!Swift conferences, they are an immersive community gathering with curated talks by the organizer and top of the line workshops the days before and after the conferences. They hold 3 conferences every year: one in New York city, one in Bangalore and one in Tokyo.
I had the pleasure of attending try!Swift New York in previous years, so I knew the format and what I could expect from the conference - or I thought I did! In fact, try!Swift Tokyo managed to exceed all of those expectations. While I knew the talks were going to be good, since the speaker line-up looked really impressive, I highly underestimated the effect that being in Tokyo would have on the conference. I wrote a little bit about the effect that Japan had on the conference in part 1 of this post!
Here’s a few of my favorite talks from the conference...
SIL for first time learners by Yusuke Kita
A Lightning talk about how the swift compiler optimizes code, it looks like an intermediate swift code and works before the compiler. It was very interesting to take a look at how swift works under the hood, and to take a look at intermediate swift. I plan on following up with some reading material on SIL to learn more about how Swift compiler works. You can find the slides from his talk here
Optimizing Swift code for separation of concerns and simplicity by Javier Soto
Javier's talk was on one of my favorite topics: how do you write code that does more than just work? He started the talk with a very good point: we read more code than we write, and because of that, we need to write code that can be readable by others.
I liked his talk a lot, because it had some practical examples on how to solve common problems in building complex apps in Swift. I did not 100% agree on some of his uses of enums, but it is true that they are very powerful and people need to use them more. One example I loved was how he created his own Layout Guides structures, and those returned safe area or normal layout guide, without having to add
if IOS 11 is available code on all of your views.
Another tip I really liked was the idea of overriding the method
UIButtons to extend the surface of the button that the user can interact with, instead of making the button artificially bigger. And a tip I did not know about is that when using
UIStackViews, if you set one of the views inside the stack view to hidden, the stackView will rearrange the space on itself for the visible objects. Neat!
You can find the slides for his talk here
Should Coders Design by Sash Zats
Sash, a former designer and now developer at Facebook, started his talk by expressing that design is NOT how things look but rather how things work. That was a very good point to kick things off with, because it immediately gave context to his talk, which was about why coders should care about design. Here are some of his reasons for why coders should be a bit more knowledgeable about design:
To be more independent: if you know design, you can unblock yourself from undefined behaviour situations when coding, and help other coders in your team when they get blocked.
To find solutions to the actual user problem, instead of just improving interfaces and code
Look more closely at small details
Think younger (young generations question every detail, you should too)
To avoid habituation: when a designer has seen an app or a design too much, they can stop noticing the little details. A coder with design eyes might be able to help break that.
To use the latest API properly: as a coder you are up-to-date with the latest API, and if you know some design, you’ll be able to convey how to properly implement that to your team
At the end, he left us with this quote
Think of the user intention. Code for that and learn from failures. That is where design can help coders
Coffee breaks are much better when you have your own barista right at the conference
Event driven networking for Swift by Norman Mauer
Norman is a senior developer at Apple and has been working on network implementation using Swift language. At TrySwift Tokyo, he unveiled the project he and his team have been working on for the past few years: SwiftNIO a low level networking framework that sits under frameworks like Vapor and Kitura and helps writing network protocols directly in Swift.
Before he unveiled the framework, he talked about the problem he and his team were trying to solve, and explained a bit about what mulithreading in IOS app and swift looks like.
Swift Pi by Kate Castellano
She had a couple of tips that could save a bunch of time to anyone intending to use Swift on a Raspberry Pi:
- You can only use Swift 3.1 as of right now, not Swift 4
- You need to have Ubuntu 16.04 to be able to install Swift binaries
- You need SwiftyGPIO to access the pins of the board
The code and the demo looked really interesting - not only because we could use the language and the frameworks we are used to to also create iot code, but because it aligns with the tendency of porting Swift everywhere. That’s a decision that I believe will make Swift a more stable language, and open Swift developers to a whole new host of opportunities regarding how many things we can create with Swift.
Multiple realities by David Hoang
Designing Experiences With Augmented Reality by David Hoang
David talk about designing AR experiences was especially interesting to me, since I have recently been investigating how to work get started with Arkit and even implemented machine learning into an ar experience.
I was really looking forward to finding out how to get the best user design and experience out of the technology, and histalk did not disappointed. David explained t how he created an app to measure kids. He talked about how he pairs them with a 3m model of an animal of the same height as them, making the whole experience of going to the doctor much more enjoyable for children.
He started by discussing 3 possible altering reality technologies around today:
- VR: virtual environment that shuts down reality
- AR: digital environment in the real world
- Mixed reality: augmentation that reacts to the real world
He highlighted that before you start prototyping an AR app, you need to make sure your problem would not be better solved by mixed realities or VR. And to always keep in mind that a great AR experience seamlessly integrates the digital world with the physical, improving our understanding of reality.
This are some of his tips for designing an AR experience:
- Use real life situations as inspiration for AR
- Think in 3D and prototype in 3D
- Get constant feedback from users from the very first stage of your prototype
- Take it out of your lab, use it in the world.
Reality is the biggest View Controller you will ever work with
This is just a few of the talks I went to, but there were many more! Here’s some slides and resources for some of the other ones:
- Exploring Clang Modules by Samuel Giddins
- Diamond of Variances by Vu Nhat Minh
- UI Testing for fun and Profit by Sarah Olson
- Writing Blockchain Clients in Swift by Tamar Nachmany
- Solving the expression Problem by Brandon Kase
- Using Swift to Visualize Algorithms by Ben Scheirman
- Charles for IOS by Karl von Randow
- Super Resolution with CoreML by Kentaro Matsumae, library on GitHub
try!Swift was an incredible conference and experience, it allowed me to meet loads of new people - and in particular, those from a culture and language completely different than mine. And not to mention the fact that I also heard some amazing talks, that will help any future project that I am assigned.
So, if you have the chance of going next year I would highly recommend you take the trip, keep and open mind and bring some business cards with you 😉