Your First iOS App — ACM Hack

Breanna Nery
tech@ucla
Published in
10 min readMay 10, 2017

Building your first iOS app can be a little intimidating. There’s a lot to learn and you might not really know where to start. In response, UCLA ACM Hack has organized Hack Camp — a quarter long bootcamp dedicated to teaching beginners real world software development skills. This quarter’s topic is iOS and involves a series of workshops to teach beginners the basics of iOS development.

The last four weeks of Hack Camp are now known as Hack Sprint. An opportunity for beginners to get the help they need to build their very first iOS app. At Hack Sprint, you or a team will be paired with a mentor to guide you in developing your app. Interested? Join the sprint.

If you’re still not confident that you have the chops to build your own app, remember that everyone started from somewhere. Below is an interview with seven UCLA students (including two Hack Camp teachers) about their very first app. Read more to learn about the challenges they faced and the advice they have for beginners just like you.

Introduce yourselves!

(Top Row) Kevin Tan, Bibek Ghimire (Bottom Row) Nathan Smith, Ritam Sarmah

Kevin Tan

Hi! My name is Kevin Tan and I’m a freshman in CS from Toronto, Canada. I’ve been programming for iOS since my junior year of high school, and as a big video game nerd, I’ve mainly built small and simple games. Apart from C++, Swift is definitely my strongest language.

Bibek Ghimire

2nd Year, Computer Science, a Rubik’s Cube aficionado.

Ritam Sarmah

My name is Ritam Sarmah, and I’m a second-year CS major. I’ve been doing iOS development for about a year now, and recently started working as an iOS intern for a startup. I also love music and Mexican food, and my favorite superhero is Batman.

Nathan Smith

1st year, Computer Science & Engineering, and a pretty good Catan player.

Jahan Kuruvilla Cherian, Shannon Phu, and Matthew Lin

Shannon Phu

I’m Shannon Phu and I’m a third year CSE major. I’ve interned at Microsoft and I’m currently taking a quarter off and interning at Uber. I came into UCLA without any coding experience, but built up skills through building web dev/iOS side projects. So I’m a huge supporter of people trying to get into building their own cool things. Feel free to PM me if you want mentorship/advice about iOS dev, getting started with side projects, or internships :)

Matthew Lin

4th Year, Computer Science major, and Hack Camp Session 4 teacher

Jahan Kuruvilla Cherian

Junior, Computer Science, Loves iOS and backend engineering.

Describe your first iOS app. What inspired you to make it?

Kevin Tan’s “The Swag Button”

Kevin Tan

The Swag Button is a “how fast can you tap” game geared towards kids and pre-teens. Admittedly, the latter half of that sentence is an attempt to make my app seem more sophisticated than it really is. You essentially tap a button that says “Swag” every time you press it which fills a bar. Your goal is to fill the bar as fast as possible. Depending on your time, various meme soundtracks (like the sad violin) will play at the end. The app also features a soundboard consisting of four sound effects typically found in MLG meme-type videos on Youtube. Fun fact: I had the “Smoke weed everyday” jingle by Snoop Dogg as one of the SFX originally but Apple told me to remove it :(

I was really inspired by games like Flappy Bird and Pop The Lock: games that took a relatively short time to code but that still managed to captivate a global audience. Again, as someone who loves video games I really wanted to build something that (hopefully) entertains people.

Bibek Ghimire

Bibek Ghimire’s “Project Cube Time

Record and save your solve times for speedcubing (solving the Rubik’s cube as fast as you can). In high school, I was pretty addicted to the Rubik’s cube and even got my fastest solve time down to about 26 seconds. There weren’t any great apps on the App Store for saving solve times and generating statistics from them so I made my own!

Ritam Sarmah

The first iOS app that I completely built on my own was a simple timer app with a basic animation. It was inspired by Apple’s timer app for iPad.

Ritam Sarmah’s Timer

I was kind of bored and decided I wanted to learn how to build something useful by myself. I’ve always been interested in learning iOS development, as it seemed to be a great way to transform creative ideas into something concrete. I taught myself iOS development using Stanford’s free CS 193P course on iTunes U, Udacity videos, RayWenderlich.com, and the Apple docs. The timer app was my first attempt to apply all these new concepts that I was learning about on my own.

Nathan Smith

My first iOS app was called Mirror++. As far as I know, it’s the only non-reversing mirror app for iOS!

Nathan Smith’s “Mirror++”

It was actually inspired after listening to an episode of Radiolab about how what you see in the mirror is actually flipped as opposed to what everyone else saw. I had recently gotten a new haircut and wanted to know which way I should part my hair, so I made an app for that (which I realize is now the most nerdy way to solve this problem).

Shannon Phu

My first app is called Bounce and it’s a game where basically the user can move this pad at the bottom of the screen to catch and bounce as many falling bubbles as possible.

Shannon Phu’s first app “Bounce”

I wanted to just see what I could make without following a tutorial as I had been doing for some time while learning. Bounce was a random idea, and I just decided to build it to test and challenge myself for a first app.

Matthew Lin

My first iOS app was a game called Keepy-Uppy where the goal was to keep the ball in the air as long as possible to score points. It was basically a clone of the Neopets game Zurroball.

Matthew Lin’s “Keepy-Uppy”

I had always wanted to make games when I was younger, and that was actually what initially drew me towards Computer Science. I also wanted to learn iOS development for fun and also to broaden my technical knowledge, so I started watching the Stanford 193P course as well as looking up tutorials online to figure out how to make Keepy-Uppy.

Jahan Kuruvilla Cherian

Jahan Cherian’s “Future Without Borders”

The very first iOS application I ever worked on was Future Without Borders — a application that aimed to connect Syrian Refugees immigrating to the host citizens of the countries they were moving to.

The app’s ideology came during the increased awareness of the Syrian Refugee Crisis in 2015. Having come from the Middle East, I saw this entire event affect people that I knew and the region I came from. At the time I had never done anything practical with the CS knowledge I was gaining at UCLA, and so I decided to try and combine my want to help refugees with the want to utilize my CS skills.

What was the biggest challenge you faced in making your first app?

Kevin Tan: Without a doubt, the biggest challenge I faced was my lack of experience. I actually built the app over a summer, and my only prior experience was a computer science class in Visual Basic. As such, I had to teach myself Objective-C (Swift’s predecessor) using strictly online resources. I spent many long nights poring over Stack Overflow pages and desperately skimming through YouTube tutorials. Even then, the majority of content over a year old was already obsolete! But eventually, I finished the app. I really think you can build and achieve whatever you want as long as you have the motivation and drive :)

Bibek Ghimire: Getting Core Data working! It took copy-pasting a lot of code I didn’t really understand at the time. Also, figuring out how AutoLayout constraints work was challenging, although it was really fulfilling when I finally got the hang of it.

Ritam Sarmah: The biggest challenge by far was wrestling with Auto Layout constraints in Interface Builder (something that still occasionally frustrates me). Also being patient enough to figure out the frameworks I wanted to use, such as CoreAnimation to make the timer animation, or AVKit for audio playback.

Nathan Smith: I had been interested in iOS programming for a while, and had a bit of Swift knowledge from just watching CS 193P lectures online. The main feature actually wasn’t that technically hard to make, it mostly consisted of me finding an example camera app and removing features from it (lol). The hardest part was actually making the about page, because I didn’t really understand how segues, views, or controllers worked. Also Apple then rejected my app when I tried to put it on the App Store so I guess that was a pretty big challenge too.

Shannon Phu: For Bounce, using the physics engine based animation library was quite hard at first to get a natural looking bounce. I also ran into common rookie problems like old IBOutlets not being deleted and causing a runtime crash with unintuitive error messages.

Matthew Lin: The hardest feature that I implemented in my game was the ball bouncing algorithm. I was initially trying to map the exact physics of the tap gesture, but this turned out to be really difficult for me, especially since I was a beginner iOS developer at the time, so I ended up coming up with an approximation. The Swift library called SpriteKit has an attribute called an AnchorPoint, which is the center of the node. From here, I could track the relative distance from the center of the ball where the tap occurred to determine the impulse strength as well as the direction that the ball should go. This part involved a lot of ratios and math, but it was exhilarating to finally get it working!

Jahan Kuruvilla Cherian: Everything. Literally, having never done anything practical with CS outside of classes I felt extremely intimidated with everything that came with the job of creating this application. Being in a hackathon during the creation of this app I gained a sudden sense of urgency that made working quickly extremely difficult, whether that be familiarizing myself with Swift, Parse, MapKit or AutoLayout, I had to jump in head on.

What tips do you have for beginners making their first app?

Kevin Tan: Your program will have bugs. A LOT of them. Unfortunately, Xcode’s error messages are obscure and definitely need rewriting. However, if you have no clue what to do just copy and paste the whole error message into Google. 90% of the time you’ll find your answer.

Google and StackOverflow are your best friends.

Bibek Ghimire: Google and StackOverflow are your best friends. Copy-paste code till it works BUT once it does work, make sure you understand what the code is doing. It’ll definitely help you in the long run.

Ritam Sarmah: Take it slow and steady, cause all the aspects of iOS development can be a bit overwhelming. Xcode and Auto Layout are a real pain in the ass sometimes, but you just have to embrace the struggle and push through. Look at some of your favorite apps to see a particular iOS concept in action, or to find design inspiration for your own app. And of course, be creative and have fun with it!

Build something you’re passionate about because then it doesn’t seem like work.

Nathan Smith: Build something you’re passionate about because then it doesn’t seem like work. Once I knew I wanted to make Mirror++, I basically kept coding until until I had a working demo and didn’t even notice how much time I put into it. Also, building iteratively is great so you always have a product that does something.

Shannon Phu: Be inspired to create something cool! Follow tutorials until you’re comfortable making your own app! Then don’t be afraid to take that leap, build your own app, and challenge yourself. You’ll only get better at it the more you do it. Your first mobile apps may leave you stuck on something new you’re trying to do, but you will get through it. Learn by building, because that’s how I learned.

Matthew Lin: Have a plan of what you want to do and try to set incremental goals each day. It took me two weeks to make the app, but I probably would not have finished if I didn’t set short-term goals each day of what features I wanted to see in the app. It is easy to lose motivation when things aren’t working, so setting up your schedule correctly is key to making sure you persevere to the end!

Don’t be afraid to Google your problems.

Jahan Kuruvilla Cherian: Don’t be afraid to Google your problems. I have seen so many people get stuck at a point in development and either give up because they can’t figure it out on their own or get demoralized for the same reason. With any aspect of software engineering the biggest skill you can gain is the ability to effectively Google your question and come to a solid solution while understanding that solution for your benefit.

Thanks to all the students who shared their story! Learn more about ACM Hack and Hack Camp here.

--

--