Every year ahead of the Apple Worldwide Developer Conference (WWDC), Apple announces a Swift Student Challenge as an opportunity for student finalists to attend the conference and meet with Apple experts. An incredible experience for building connections and gaining more knowledge in the iOS community.
However this year, due to the COVID-19 pandemic, there was a slight twist — the conference would be held online, and the winning students awarded an exclusive WWDC 2020 jacket and pin set. The moment this year’s challenge was announced, I started brainstorming ideas and sketching things out.
Appetite For Competition
In 2019, I entered the Challenge for the first time, intrigued by the stories a member of our iOS team at TextNow (a previous Challenge winner himself) told me about his experiences at WWDC. For my entry, I created an abnormal variation of Pong, using some of the iOS frameworks I hadn’t used before.
Unfortunately, my submission was not accepted, but that didn’t discourage me from trying again the following year. I knew at the time I was a fairly new iOS developer and the contest was very competitive. I had a lot to learn before I could take another shot.
I’ve been working in the iOS space for roughly two years now, after being introduced to it in a high school computer science class. That was the first time Swift had been offered as the language of choice, and it was a huge learning experience for everyone. I enjoyed it immensely, it’s easy to get into and has such a wide area to explore. The popularity of iPhones makes being able to develop your own apps for it highly enticing.
I first learned C++ but quickly caught onto Swift, discovering the power and elegance it provides. I found the programming basics are very similar across different languages: loops, arrays, if-else. If you know the fundamentals of programming and have some knowledge of object oriented programming, any language is relatively easy to pick up. With literally thousands of tutorials online to get you started, anyone can become an iOS developer if they put their mind to it.
That being said, I didn’t pursue iOS in any real depth past high school until I joined TextNow in my second year of university, where I worked with their iOS team as a co-op developer. This gave me the opportunity (and pleasure) to work alongside a very talented team of experienced developers. I’ve been constantly pushed to challenge myself and ask the right questions to become a better developer overall.
My time here has inspired me to get more into the iOS space and take on my own initiatives. I now spend almost every day working on some kind of iOS project, whether it’s for a team or tinkering with something of my own creation.
I am now coming up on my one-year anniversary with the iOS team, completing three co-op terms at TextNow. I have come a long way since I started at the company, and I know there is still much to learn.
So, I was excited to get started on this year’s WWDC student challenge submission because I knew how far I had come since last year.
Playing around with Swift Playground
My idea was to create something that allowed the users to be creative and make something of their own. I wanted to provide a canvas and a toolset to make an art piece, an analogy of how Apple gives us the tools to show off their creativity in the code they write and projects they make. In the Swift Playground I developed, users are able to add a variety of shapes to a canvas, and then resize, rotate, move, and colour them to their liking. Once they were ready, a filter was applied to the canvas, giving it a unique effect.
I found the most difficult part of this project was starting. I was so caught up on coming up with the perfect idea and writing perfect code. I had to remind myself, the first version won’t be perfect, I could always come back later and improve what I had done. I started by researching past accepted submissions to the challenge and sketching whatever came to mind in my notebook.
From there, I started listing the functionality I wanted and tried to find other projects on Github with what I needed to see how they did it. Then I started writing my own code, piecing everything together and leaving myself comments of what to go back to work on.
There were a few challenges that I had to overcome when working on my submission. A major challenge was everything had to be written in a Swift Playground. Playgrounds are a prototyping tool by Apple that allows you to quickly run and test small bits of code. This tool is very powerful but has its limitations for larger projects. I found myself stumbling over the project not working for no reason, or API that I am used to working with in full scale projects not working as expected.
Another challenge was the lack of an interface builder which, in Xcode, allows you to quickly build your UI by dragging and dropping components where you want them. I had to deal with setting up every UI component programatically and adjusting my coding style slightly to account for this.
Abstract made concrete
I spent about a week and a half after work and on weekends building, improving, and iterating on my idea until I was happy with what I had made. I called my submission “Abstract”. Here is a link to my project.
This year, my submission was accepted, and I was announced as one of 350 worldwide winners of the WWDC 2020 Swift Student Challenge — and one of only 11 in Canada. I am honoured to be part of this year’s finalists and thrilled it happened during my time at TextNow. I was excited to share the news with my team, friends, and family. This was a big accomplishment for me. It’s unfortunate that I wasn’t able to attend the conference in person, of course, but the recognition will open up many doors in the start of my iOS career.