Swift Student Challenge and Beyond

Competition, intentions, and presentation.

May 13 2021

Look! Up in the sky! It's a bird! It's a plane!

It's another-blog-post-that-no-one-asked-for-but-was-made-anyway!


Apple's Worldwide Developers Conference. Better known as that Apple event where they announce new features for your phone and whatnot. Well, they always pair it with a challenge for students to participate for a chance at experiencing WWDC live in the US (prior to 2020), and exclusive merch! In here, I'd like to talk about what I did for my first 2 submissions. Oh, and yeah, it's called the Swift Student Challenge.

My WWDC20's Submission

Ah yes, my first year being eligible for the scholarship / challenge. At least I think it's my first year. I remember seeing the news of the newly named challenge, and the excitement and frustration that quickly proceeded. Let's dive into it, shall we?

- Ideation and Preparation

When it was announced, my mind ran wild. I was thinking of all sorts of things I "can" make. A game? An insane storytelling experience? Or even an all-knowing chatbot? Knowing I only started Swift a couple of months prior, I stopped myself from going too far. You see, a mentor in the academy that I was in had won the previous year's scholarship, and the game he made was a pretty interesting one. That's kinda the reason why I thought of a game. Here's the video if anyone's interested.

Unsurprising to anyone, none of those wild ideas happened. It was simply not in my best interest to code something relatively difficult at that time. In the end I decided I wanted to make a fun experience. You know, just something dumb to run around in and probably get a couple of laughs because of how bad it might look. I decided on a fun iOS simulator that looks different, but feels familiar.

- The Actual Thing

By the time you read this, you probably already have had the chance to look at the dedicated portfolio page for this particular submission, and have an idea of what's going on. If that's not the case however, you can read it here. I'm not going to go over a lot of the things I've already stated in that page and in the video itself, but I am going to go over my experience "competing".

- Experience and Journey

Starting Out

During that time, I had a lot of doubts. It mostly came from the fact that, you guessed it (I did state why a few sentences ago), I kind of just started Swift. I wasn't sure if I was going to finish on time, or even the completeness of it all. You see, I spent the first 1-2 days thinking of what to make, and another 2 full days to create the assets required. Spoiler alert: I needed more assets afterwards.

Anyways, when I started creating the assets from scratch, I wasn't thinking of much. I kind of knew what I wanted to show, and I just kept doodling on my trackpad with the help of Pixelmator. I'd say it went pretty well, but you be the judge.


After I barely started out the coding part, we (the learners in the academy) were briefed on the challenge itself, including the written response part, and were let go with a couple of tips. Cool, no problem, right? Wrong. Well, I'll explain.

I was dead set on making this cool iOS spin-off, without thought. I wanted it to feel nostalgic in a way, but like, new. I wanted to win, obviously, but I was determined to make such a cool experience by itself, nothing else should matter. You see, the importance of the written repsonse shouldn't be overlooked. So naturally, I had to think of the kind of story I wanted to tell. It didn't take that long for me, because it was already pretty clear from the start. I did the design and assets, without ever thinking of what led me to the design itself. So when I thought about it, the information was already there. Does all this make sense?

In a previous blog post, I talked about how I think I'm better communicating with text than spoken words. That really came in handy because if you noticed how much text and information is on the written part of the playground, you'll know it's pretty much the whole package.

Ending and Surprises

Not everything was planned in advance. I believe, when it comes to time-limited production of mini and fun challenges, thinking of features to implement from A to Z shouldn't be something that people do. If anything, it makes starting out super hard. You'll think about how much work needs to be done, and ultimately, you'll tire yourself out and get anxious over nothing.

My initial plan was to make an iOS spin-off, with 3 major parts. The home screen, the calculator app, and this "about" app. If you know what I did for this challenge, you'll know the "about" app never happened. I wanted to talk about me (potentially), and the things in the playground itself. It's quite apparent, because the sQUIZe app actually took the icons for this planned "about" app, hence why the logo of sQUIZe is a collection of a bunch of question marks.

So why did "about" not happen? To put it simply, I thought it wasn't enough. I think I had over 2 days left to go, and only a simple "about" app to implement. It didn't make sense, and I was sure as hell that this "about" app wouldn't make this playground anymore fun than I would like it to be. So, sQUIZe app.

You like the lock screen? I had about a day to implement this. Prior to this decision, I again, felt like it wasn't comeplete. "Something is missing!", I said. As I played around my phone thinking, there it was. The padlock on the lock screen. That moment was kinda golden ngl. So yeah, the lockscreen was made in less than a day, including the assets and animations on it. I'd say that's easily the proudest thing I've done in this project.

I submitted my project that night. I was anxious, yet happy. I actually couldn't wait for the results to be announced. But I did. And it was well worth it.

- Lessons Learned

Discipline wise? I was so commited to doing this playground, I ended up doing this day to night everyday. And this was my first time being this consumed and discipline. So yeah, I learned discipline.

Asset-creation wise? Learned to use Pixelmator so hard, I think I can handle Photoshop now.

Code wise? Mate. It was crazy. I learned, I would say, 1-2 months worth of coding on Apple platform. I'm not even kidding, it was so intense, I felt really good approaching code afterwards. There were a lot of things learned here, and I'm not going through any of it, for the sake of you and me.

My WWDC21's Submission

Following up on my previous works is something that I love to do (not), as it allows me to work better and more creatively. But for real, the win I received last year put me in a spot to be more and better. I feel the pressure, and I am scared of failing people's expectations on me. Lucky for me, this year's SSC allowed almost twice as much time as we had in previous years, though, you'll understand why that didn't matter in a bit.

- Inspiration.

I consider myself very lucky to have had the chance to explore so much with my solo project, WalletSplit. Prior to WalletSplit's v1.1 update, I had the pleasure of joining a talk-and-discuss thingy, where we had a guest. He was born blind. He talked about being blind, how it had affected him, and the technologies that helped him through life. After the 1-hour talk ended, I was motivated.

About 2-3 weeks later, I released the long-awaited (to some) update to WalletSplit. What they didn't expect was full VoiceOver support. I decided to play around with accessibility features, and while it wasn't features that I know my friends would use, I just wanted to explore it more. And then SSC was introduced.

I didn't know what to make. Frankly, it took about a week into the challenge for me to really know what I wanted to make. I thought, "huh, why not do something that I've been exploring and am really interested in?". Lo and behold 😉, a literal follow-up to my previous year's iOS Simulator, the "Inclusive yet Exclusive Escape-Room-game-playground-thingy"! Yeah, I really did call it that.

ws notes image
WalletSplit patch notes
playground notes image
Playground contents
scholar image

I won't lie though, the scholar with the hearing aid in front of his laptop image on the Swift Student Challenge page might have did me a solid there. Inspirations really do come unexpectedly, huh?

- Product.

This year's submission looks kind of similar to the iOS Simulator, and that was the point. Instead of exploring the different ways you can "storytell" iOS, I wanted to do a spin-off of a major part in iOS, Accessibility.

Not a lot of people know what accessibility is, let alone the features that are baked-in to iOS. Why not let people experience these features firsthand? And what better way to do this, than with a game?

Remember when I said that this year's submission is a literal follow-up to the iOS Simulator? You see, I added everything back in (not including the contents of the Calculator and sQUIZe apps), to make it feel like a season 2 of the iOS Simulator. I added widgets, a new background (which is the most memorable part of my newly-unboxed iPhone X at that time), a fresh paint on the Music app, and of course, the ESCBox app.

wwdc20 submission image
wwdc21 submission image

ESCBox (ESCape Box) is an Escape Room game, inspired by accessibility features in iOS. It uses the newly-created floating Accessibility Shortcut button, which works very similarly to Assistive Touch, but only shows accessibility shortcuts. To discover hints and escape the room, you'll need to take advantage and explore the different accessibility features built-in. If you're lucky, you might even find a prize waiting for you outside the room!

draft 1 image

Initial planning with a treasure to open, find hints in the room

draft 2 image

More went into the room and suddenly you're escaping the room

Pretty neat, huh? The shortcut button holds in 3 different accessibility features, but because of technical limitations, VoiceOver needed to be activated through the Mac running it. It does, however, work pretty well. The other 2 features are Color Filters and Dynamic Type. These 3 features, fun fact, are the only 3 features I got to discuss with my mentors during my time in the academy, hence why I'm implementing them. There are more of course, but I see these 3 as the more widely used ones.

accessibility button image
The floating button
accessibility shortcuts image
Accessibility shortcuts
colour filters image
Colour filters!

Another major thing I want to cover here is the ability for anyone to complete the playground with only VoiceOver. Notice how instead of saying "game", I said "playground"? This is because VoiceOver can read and navigate the revamped home screen, and the game itself, without ever needing to look at the screen (I wouldn't do this though). Unfortunately, because the game itself requires all the different accessibility features to be used, VoiceOver alone won't make the game fully playable.

voiceover image

VoiceOver in action. Notice the text in the bottom left of the screen. Also, I know it quite rough on the edges, but it works :D.

If you're interested in seeing all the quirks and whatnot, you can visit the project page here.

- Experience.

Since I learned so much from implementing VoiceOver into WalletSplit, I unfortunately didn't get to learn so much from making the playground. I did get to explore my creative side though, so that's pretty good.

Having about 20 days to work on this gave me space to work with, but the idea didn't come up until I had about 10-ish days? It wasn't like I wanted to put it off or anything, I just couldn't think of anything.

Oh, I did learn to use a tool for this playground. Reality Composer is one of the apps that looks really good, but you know you'll never use. That was kinda me, but not after I started making models for the award and tutorial part of this playground. Look at these models, pretty sweet, huh?

token 1 image
token 2 image
aESCessibility token
box 1 image
box 2 image

- Testing.

First and foremost, I wanna thank the few 'lucky' people that agreed to test out my playground. You see, the game itself is super easy to figure out. You might call it biased because I was the one who made it, and you're super right. Upon testing, I realised how confusing things are, especially with the different shapes and "is this a button?" elements. The more people that got to test, the better I understand what was confusing and what's not.

On average, it took about 12 minutes to complete the game. 12! That's not the required 3 minutes tops. Of course, because they're almost all tested via Zoom, a lot of things need to be considered. So, instead of thinking about how long they took to finish the game, I took it upon myself to ask them questions regarding how they behaved and interacted with the game. The result? I now know what to implement.

Thanks to this phase, I added a lot of hints. And I mean, a lot.

before image
No one bothered with the tutorial
after-image 😉
So I combined both into one
hint 1 image
hint 2 image
hint 3 image
hint 4 image

Final Words

If any of you reading this are / were in the academy, you'd know about Office Hours. If you have not figured out by now, my WWDC20's submission covered Design, and my WWDC21's submission covered one of Apple Values. Maybe Coding next?

These blog posts are pretty fun to make, so stay tuned for more! No promises on when and what, but it'll come. In the meantime, if you have questions regarding anything, don't hesitate to shoot me an email! I don't often bite.

And to those expecting a collage of images, I'd like to just say I forgot to document the process and that you should expect less from me 😇.

Thanks for skimming really quickly!
ending 1 image
ending 2 image
ending 3 image
ending 4 image
ending 5 image