UIKonf 2020

UIKonf is one of the leading international conferences for Apple development, bringing together people to share their ideas and experiences of building apps for the Apple platforms - iOS, macOS, tvOS and watchOS. UIKonf is hosted in Berlin, and when I attended the event back in 2018 it was an amazing experience. The organisers put together a two day conference, plus one day for social activities, that balanced a variety of presentations with opportunities to meet and chat with like minded people from all around the world. I came away with new ideas and inspiration for building apps, and also with desire to return in future years to see the people I had met and made friends with once more.

Roll forward to February 2020 and 3Squared kindly offered to pay for my attendance to UIKonf once again. The conference was set to be hosted in Berlin once again, however with most things this year the Covid19 pandemic was going to make it very difficult. International travel was being restricted, and larger gatherings were no longer safer. The organisers of UIKonf therefore made the sensible decision in April to not hold the conference in person and instead opted for a totally remote conference come May. I was disappointed I wouldn’t make it to Berlin but I was positive the conference would still be great even though everyone would be remote.

Attending in person was changed to tuning into a live stream and video chatroom using Hopin. Spontaneous discussions with other attendees between talks were swapped for a “randomised” video chat with other remote attendees, and the social activities were exchanged for remote online socials. These activities included Zoom calls for Yoga, BBQs and cooking lessons, and also an online tabletop simulator game night. I opted for the remote bike ride, where all the attendees joined a Strava group and tweeted photos of their rides using the #UIkonf2020 #biketour hashtags. It was great fun and I have a lovely afternoon cycling the outskirts of Sunny Sheffield while my fellow conference goers cycled in their respective countries. I kept checking in on twitter to see where other people were.

Then from May 18th and May 19th the conference formally started. I tuned into the live streams on Hopin, where speakers presented their talks from their own homes rather than on a stage. The online chatroom was always available alongside the talks so you could chat with other attendees and post questions to the speakers to be answered in a following Q&A. I was impressed with how well this worked as over the last few months I have experienced numerous technical issues while working remotely. On the whole the video feeds held up well and speaking to other attendees on webcam was of good quality as well (even if my CPU did reach 187% at one point!).

I enjoyed all the talks and took lots and lots of notes. One benefit of attending a conference from your own desk is that you can write many more notes than when sitting in an auditorium. I have a tradition of typing up my conference notes and posting them on my GitHub account for future reference. This year I’ve migrated all my conference notes to my new website. My notes from UIKonf 2020 are here. For more visual readers there were also some fantastic sketch note takers at the conference - see @brunoscheele’s and @felibe444’s threads on Twitter for their amazing drawings.

I’ll summarise some of my favourite talks and explain why they are of relevance to me.

The opening talk was from Paul Hudson, who was joined later on by his daughter Sophie. This was a really heartwarming talk and a perfect opener to a remote conference. Their talk captured the feeling of working remotely in your home with the rest of your family. Paul embraced this concept and asked Sophie to join him part way through the talk, and his lovely dogs also made a guest appearance later on. Lots of people will recently have had an experience of pets, children and spouses being in the background while they were on a video call for work, and Paul and Sophie did a great job of working this into their talk and poking a bit of fun at it. Their talk “Who can say they have learned Swift?” spoke about what it means to say you actually “know” Swift (the standard programming language from Apple), and how we should all be easier on ourselves when it comes to learning new things. The Apple development stack is quite vast at this point so knowing “everything” is not a sign of failure. We should all try to be more welcoming to newbies into the Apple development ecosystem and encourage them to get stuck into learn what they can, rather than being discouraged at the amount they don’t know. After all no-one knows everything.

Another great talk from day 1 was from Rob Napier. His talk “Rich Text, Core Text” covered the unicode standard and in particular how it use to create emojis. Emojis have become an incredibly important part of our textual communication these days, and it wasn’t until I attended Rob’s talk that I appreciated how complicated they are. Rob gave a great whistle-stop-tour of how the unicode standard is used to create and combine emojis, and how surprisingly complicated they have become as more glyphs have been introduced. As UIKonf is primarily about Apple development Rob concentrated on how unicode and emoji are implemented using Swift, and showed how Swift has incredibly powerful string manipulation functionality built into the core of the language. As an iOS developer it is always really cool to get a deep dive into a particular Apple technology by someone who really knows it. Rob took us through all the weird edge cases and considerations unicode and Apple have made for implementing emoji, and also gave some really fun facts. My favourite was that the emoji keyboard on iOS actually has the most underlying glyph files of any keyboard - around 47,000! This is because Apple decided to use different images for each resolution of the glyph on different screen resolutions, so the high resolution 🏡 glyph has more detail than on lower resolutions. This is typical of Apple and shows their attention to detail in every part of their software.

Starting off day 2 was Chris Eidhof who showed us how you can make a programming language using Swift itself. I’ve seen Chris speak at previous conferences and he always amazes me how he does live coding while presenting a great talk. This time was even more impressive as he deiced to do it from a forest! His talk “Building a Programming Language in Swift” discussed building a syntactical tree with branches for different nodes in a programming language, so he thought it only seemed right to talk about trees while being surrounded by them! On a similar note to Rob Napier’s talk, it was great to see the Swift programming language being used to build something you don’t normally consider doing, and learning how simple language features in Swift such as recursive enums can be used to build expressive structures like hierarchical syntax trees. Even though Chris does not recommend building a programming language yourself (they are very hard to get right!) he says the experience can be really rewarding. Figuring out a problem domain and implementing a solution from scratch makes you think more broadly and through more edge cases than you might be used to, and this is a vital skill for any software engineer.

The next talk I really enjoyed was from Federico Zanetello. In his talk “Swift Scripts: Zero to Hero” he showed how you can use Swift as powerful scripting language. I have previously tried to write command line helper tools in Swift as it is the language I am most comfortable working with. However it never felt as easy or as quick to do as in other languages. Python and Ruby are great for quickly putting something together and running in the command line; it always felt a shame I couldn’t do the same with Swift. Federico’s talk was super helpful in this regard as he showed you how you can create Swift command line scripts that have all the features you would expect from other languages, such as taking arguments and flags, pausing for user input, showing progress bars, and even generating help documentation. Finding out all the resources myself would have been very time consuming, and I’ll be retuning to Federico’s slides in the future as I will definitely try writing scripts with Swift again.

The final talk that resonated with me was from Anouk Ruhaak. In her talk “Data Trusts: What, Why, How?” she outlined what Data Trusts are and how they could be implemented to improve collective privacy. Collective responsibility is of particular importance right now during the Covid19 pandemic, as following health and social rules is important not just for your own safety but that of others as well. There is a similar analogue in terms of data privacy, where individuals acting independently for their own privacy can often have unintended negative side-effects for other people collectively. Anouk introduced the concept of a “Data Trust” whose function is to legally protect the data and privacy of specific group of people known as the Data Subjects. The Data Trustees have a duty or loyalty to the Data Subjects and a duty of care to make sure their privacy rights are not neglected. For example a Data Trust could be used to safeguard the privacy of health data from people who suffer a particular health condition or disease. The Data Trust would be responsible for keeping this data safe and ensuring that it is only used in the best interest of the Data Subject to search for a cure for the disease (for example). The Trustees would stop this data being used for other purposes, for example being sold to health insurance companies. There are a number of questions still outstanding for how a Data Trust would work in practise, such as how are Data Trustees chosen (are they appointed by the subjects?) and how are decisions made (are they voted on?). I found this talk interesting and thought provoking as it is not something as a developer you often think about. Anouk finished by reminding us that developers are often the first line of defence when it comes to making decisions that positively or negatively impact user’s privacy, and we should be empowered to ask the right questions of stakeholders to get the right privacy requirements.

Overall I really enjoyed attending UIKonf in it’s remote form this year. The organiser did a fantastic job at short notice putting together a great conference. UIKonf 2020 kept the same feel as previous years and still balanced the great presentations and social aspects that made it so fun when I attended in 2018. I’ve come away with lots of thoughts and ideas on how I can build better and more thoughtful software at 3Squared and in my own personal projects.

Thanks to 3Squared for sponsoring my attendance and allowing me the time to attend the conference.