At this point, you’re probably wondering what will the app look like at the end.
(Read the previous installments if you haven’t yet — having background knowledge is important!)
It’s a Catch!
Abstract & Introduction
Tech Stack & Application Architecture
In this article, I’ll be going over Catch’s requirements, all of Catch’s views (what appears on screen) and defining what each button, notification, and card is meant to do.
Out of all the sorting algorithms, Merge Sort was the one I had the most trouble grasping.
The basic concept goes like this: You take an unsorted array and keep breaking it down in halves until you get a bunch of one-element arrays, and then you slowly merge the arrays back together until you get a sorted array:
I got the cutting part, but the merging part went straight over my head. I watched all the videos, stepped through all the code, and read all the tutorials — all of them said fancy stuff like “merge sort is a recursive divide-and-conquer algorithm that merges each element with its neighbor, maintaining sorted order.”
Technical concepts don’t have to be complicated.
Unfortunately, making sense of it so often is. True meanings are hidden behind mathematical jargon and long strings of symbols. A single term may have multiple meanings in different contexts. The Internet isn’t always the friendliest to the beginner who may not know what exact phrases to Google for — and all of these things put together can lead to an otherwise enthusiastic student giving up completely.
This is a real problem. Talk to anyone in the tech industry and they’ll tell you how hard it is to come across good engineering talent. As software continues to eat the world, we will need more and more people who can understand and manipulate tech. And that means (gasp!) that we will have to make computer science more accessible to everybody, not just rocket scientists and Stanford Ph.Ds and prodigies who have been coding since they were eight.
This installment covers the programming language, technologies, and software architecture pattern I’ll be using to make Catch, an iOS Tinder for clothes.
Since each article contains sections of my thesis in order, it’s important to go through them in the following sequence. If you haven’t read the previous parts, you can do so here:
The Thesis Diaries: It’s A Catch!
Abstract & Introduction
A “tech stack” is a list of the different types of tech that an app uses. Catch will be developed using Swift 4, XCode 9, iOS 11, various Cocoapods, and Firebase.
Update: There were a few vocabulary errors in this post, which have been corrected as of March 1, 2018.
When I came to college, I needed a new system to organize my dresses.
Back home, I’d hung them up in random haphazard order, and I had so many that I often spent more than five minutes hunting through my closet to find the right one. I wanted to get ready dressed as soon as possible in the morning at school, so my old method would no longer fly.
I came up with a simple system: I determined what color each dress was, and hung them in a specific section of my closet based on that color. The first section (five or so hangers) contained white dresses, the next contained red, then orange, and so forth.
I wasn’t a computer science student back then, but looking back at it now, this system actually resembles a common data structure: the hash table.
Back in October, I announced that I would be blogging about my thesis, and talking about the day-to-day process along the way.
(Here’s the background and basic gist of my thesis. I’m building Catch, an iOS app that is a Tinder for femme clothes trading, and writing about the design and architecture decisions I made during development. More on Catch’s specs later.)
A few things have changed since then. Here are some updates:
I broke up with my Economics major 🙁
I decided to drop my Computer Science and Economics double major down to a Computer Science major and Economics minor, so that I could focus on other projects during my fourth year of college. I had taken all the required classes to graduate, but at my school, a thesis or project in the desired major is mandatory in order to get the degree. Early last semester, I was told that doing product research and iteratively coming up with a startup business model for my app wouldn’t be enough to satisfy requirements for an Econ thesis.
Economics was my first academic love, and while it sucked to have to give up my double major, doing so allowed me to intern in San Francisco and do a bunch of other cool things I wouldn’t have been able to do otherwise.
My thesis is all about app-building now
Since my thesis is now a purely computer science one, I’ve decided to focus on the software engineering aspect of it and create a minimum viable product (MVP) of my app that will testable and demo-able by the time I defend my thesis in late April. An MVP contains only the essential features; it was quite the exercise to take a knife to my project and cut out the parts that weren’t necessary. I decided that I won’t be publishing my app in the App Store until the thesis is over — Catch has features such as real-time chat, the ability for users to upload pictures and item descriptions of their own, and trading, all of which involve some legal stuff that is outside the scope of what I’m trying to accomplish (how can one block users? What can’t be posted as an item? How does the app deal with those who break the rules?). By keeping my shit simple and not having grand illusions of what I can accomplish in two months’ time, I’m minimizing a lot of stress.
Note: I want to cover a wide breadth of Data Structures & Algorithms topics this semester, so I’m only going to touch on concepts that I either a) believe are essential to understanding the subject, or b) struggled finding existing accessible resources to on the Internet. Once all the essentials have been covered, I’ll return to do articles on more nuanced topics (such as Sororitree Rush).
Linked list operations in this article are limited to ones that are used when implementing stack and queue data structures. Check out this great post on linked lists for a more robust description.
Have you ever wondered about how the Back and Forward buttons on your browser work? Or how your favorite clothing website determines your place in line during an online sale?
Stacks and queues, that’s how. Your browser uses a stack data structure to implement the changes in state as you toggle the buttons on the upper left corner. That clothing website uses a queue data structure to stick your access request in line, and only lets you into the store when someone else comes out.
Stacks and queues are separate data structures, but have similar operations and are implemented in similar ways.
‘Tis the season for love … or for phenomenally bad pickup lines.
I would be lying if I said I wasn’t a shameless fan of the latter. There’s something so satisfying about throwing a line out there so cringey that it makes your recipient groan.
I’ve been collecting tech-related ones for a while now (did you really expect me not to?). Here are a few of my favorites that you can send to your favorite programmer/computer scientist:
I also liked building stuff, sure. If you got into a time machine and traveled back ten years, you’d find eleven-year-old me making my first forays into photo editing with Photoshop knockoff software and DIYing jewelry based on cool stuff I’d seen on the Internet. Programming is like like doing arts and crafts with an understanding of how complex systems work.
But I was never satisfied with just making stuff. I wanted to know why code ran the way it did, how integrated development environments (IDEs — the place you write and run your code in) were built, how they could autocomplete and highlight syntax, and how people figured out how to put all the stuff together.