iOS @ SpotHero


What We Do

We write the code of the SpotHero apps on iPhone, iPad and CarPlay. This is the app that “drivers” use to find a spot, book and pay to park their vehicles. We are constantly working to improve the experience for drivers using the app. 

What We Love

  • Parking!
  • Design thinking
  • Distributed systems development
  • Building fast and scalable applications
  • Cross-team collaboration

Technology

Development Tools: Xcode is our go to IDE for building the app and frameworks. We use Swift in all of our applications and SDKs. Historically, some were written in Objective-C, but the code is either removed or legacy and in the process of removal. For source control we use Tower, Sourcetree, Github Desktop, and git on the commandline.

Testing

All apps and SDKs use XCTest and XCUITest where applicable, though our testing coverage in some projects is much better than others. We use Proxyman for debugging network calls to the back end, to mock responses and errors. We also use Postman and Charles Proxy to troubleshoot the API without using the app.

Continuous Integration / Continuous Deployment (CI/CD)

All of our build scripting is written in Bash or Ruby. We run our build scripts via Fastlane to ensure that local and CI builds run through the same set of instructions, allowing us to replicate our build process and easily transfer between CI tools as needed.

We use Bitrise as our CI pipeline for our private apps and SDKs. Our public repos utilize GitHub Actions. We use the Bitrise build number as the bundle version of the app when it is built. We are looking forward to kicking the tires on Xcode Cloud.

Development and Release Candidate builds go to TestFlight.

Package Management

All of our apps currently rely on Swift Package Manager (SPM), which was released in 2015 but made compatible with Xcode and iOS/macOS development in September, 2019. 

Networking

All of our apps utilize a networking client on top of URLSession in our UtilityBelt SDK.

Local Data

SpotHero stores local data via CoreData.

All apps of course also leverage UserDefaults and Keychain where applicable.

Code Standards

We use SwiftLint for linting our code within Xcode. Every project should include a .swiftlint.yml file in the root that closely matches a global .swiftlint.yml file defined in our Shared-iOS repository, and all targets should have Run Scripts that run our swiftlint_run_script.rb when a build is kicked off, ensuring that you’re constantly receiving warnings when a SwiftLint rule is violated.

We also use SwiftFormat in our projects. SwiftFormat is used to codify and automatically enforce our code standards regarding formatting.

We tend to have the rule of thumb: if we can’t lint or format it, we shouldn’t enforce it. Any code style-related review comments should attempt to be codified by SwiftLint or SwiftFormat. While there is overlap, we use both tools because they each provide specific code style enforcement that only exists in one or the other. For standards that we want to make an exception to this rule, we document in the CodeStandards of the Shared-iOS repository.

Diagnostics

For error monitoring, we currently use Sentry.


We are passionate about using the right tools and frameworks to create awesome software.


Some of Our Team Members

Our team consists of 4 senior iOS engineers and an engineering manager. Here is an introduction to some of the members of the iOS (Retention) Squad.

Tim Mitra

Sr. Engineering Manager, iOS

Background:

I’m a mobile app developer, podcaster and artist. I am also a tech writer and have also taught classes in iOS development in SwiftUI, Swift and Objective-C. At SpotHero I am a Sr. Engineering Manager (iOS). I studied Fine Arts before there were Macs and I have worked for many years in software development, IT, graphic design, publishing and print. I live in the Riverdale neighborhood in Toronto with a dog named Macintosh, who runs and hides when I yell at my computers. I have 20+ Mac computers, from a Mac 128K to M1’s.

What I Do for Fun

I code iOS apps mostly, host and develop web sites occasionally. Making iOS apps is fun, also creative and I like to try out new frameworks and capabilities that Apple gives us. I’m an Apple fanboy and if I had tattoos, they would probably be Apple related.

I make my own toys with my 3D printer, as well as, fix things around the house with 3D prints. I make podcasts. I currently host two; one on mobile app development and one on pop culture sci-fi, comics, movies & TV and anime. I’m often a guest host on other shows. I edit and produce my own podcasts. As a result, I watch a lot of TV and movies, study tech trends and write more code. I play music. Pre-pandemic I lead a classic rock band made up of co-workers. At the start of the lockdowns I started to learn drums and keyboards. I’m looking forward to being able to jam in-person or virtually soon. I hung up my pads, but I was a goalie for around 40 years. Everything I learned about business and working relationships I learned playing hockey. As a goalie I defend our net, and I give the puck to someone else who’s skilled at scoring goals. (I did score a goal myself once.)

Fun Fact: I was a parking lot attendant part-time while studying at York University. Who Knew?

Maciek Girek

Software Engineer II, iOS

Background:

Moved to Chicago to study but because I was broke it took me longer than it should and forced me to take up all kinds of odd jobs including but not limited to; barista, meat butcher, construction worker, babysitter. At that time I knew that whatever I want to do with my life is neither of those things and so I committed myself to finishing my CS degree, which I completed in 2019. I got my first job offer at Chamberlain Group, before I started I took 1 month off and decided to use the sign-in bonus to travel; I visited Mexico, Brazil and Argentina and when I came back I started working on a Security Camera product. 2.5 years later I moved to Spot Hero and I luuuuuv it here

What I Do for Fun: 

During covid I purchased a very old building so every free time I have I try to spend remodeling it. I kind of started to like it and the more I learn the easier the next task is. Besides that I really enjoy cooking, I don’t go out much to eat and prefer to master my own craft. Lately I have been going to Poland pretty often because all my friends decided to get married and I also have my girlfriend and family there. I also really enjoy outdoor activities like Kitesurfing, Soccer, Skateboarding, Snowboarding, Traveling and Learning new skills (cooking, languages).

Kev Delannoy

Staff Engineer, iOS

Background:

After graduating I joined a small startup in the mobile industry called Tapptic where I learned to develop apps for iOS specifically. After about 4 years, I left Belgium and moved to Toronto, Canada. I’ve worked on a wide range of different products here, both as a Developer or an Engineer Manager, such as theScore, Shopify POS and most recently on Localhood, a product for the travel industry. I joined SpotHero in June 2022 and have been enjoying the ride since!

What I Do for Fun:

Outside of work, I enjoy music, hiking, biking and spending time with my friends!

Martin Powlette Jr.

Senior Engineer I, iOS

Background: 

I moved to Toronto in 2016 from St. Lucia to learn more about computers, design and film. I graduated from Humber College in 2019 and joined the industry working on the MyTELUS app and then Flipp. I started working at SpotHero in June 2022 and I couldn’t be happier! 

What I Do for Fun:

I love watching movies and shows, discovering new areas and local events, have too many side projects and know a bit too much about the MCU 🔨. Also love hanging out with friends and my pup, Zuko

Michael Polyakov

Senior Engineer I, iOS

Background:

I graduated from Northview Heights Secondary School. Right after high school, I worked as a general labourer at a warehouse club. Meanwhile in the digital world, iPhones, App Store and Angry Birds were becoming super popular.
Since I already owned a Mac and an iPhone, I decided to try my luck making simple games. Back in those days Objective-C was the language for Apple platforms; it became the first programming language I learned. During those wonder years I have made games, did graphic design, did freelance and picked up programming odd jobs.
In 2014 my corporate iOS developer career began. At the same time, I took part time classes at Seneca College and graduated with a Computer Networking and Technical Support Diploma in 2017. Wanting to continue my education, I pursued a Digital Graphic Design program at Seneca College, graduating with high honours in 2020.
Now, I work at SpotHero and I am super excited about it!
I am constantly looking for ways to provide value though my work to the users and (hopefully) humanity as a whole 😀

What I Do for Fun:

I enjoy racket sports: badminton and tennis. I am a music, HI-FI enthusiast and a CD collector. My latest obsession, is yachting and sailing. Having spent a week sailing at sea, made me want to get my own sailing licence and a yacht someday.

Jasmine Slater

Senior QA Analyst, iOS

Background:

I received my Bachelors in Anthropology and my Masters in Forest Conservation from the University of Toronto. I began my career as an urban forester, but soon realized that being outside all day was not for me. Shortly after, I enrolled in Android development courses and began freelance work as an Android developer. I then moved on to QA and have stayed ever since. I joined the team at SpotHero in July of 2022 and have enjoyed every minute of it.

What I Do for Fun:

I love hiking, running and travelling.

Want to join SpotHero?

You can see all of our open spots here

, ,