Happy Monday, everyone!
We made it to Issue #108! Thank you to everyone who read last week’s issue ❤️
Deep Dish Swift is a brand new conference being held in Chicago April 30th to May 2nd in 2023. The conference aims to bring togethe Swift and iOS developers of all experience levels and backgrounds in an inclusive environment to share knowledge and experience from a diverse set of speakers. The first day is focused on indie development and and the next two are focused on Swift and iOS!
Today’s Spotlighted Indie Devs
📆 Today I’m featuring Gabriel Savit.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
1) What is your name? Where do you live?
Gabriel Savit. I don’t live anywhere! I’ve been doing the digital nomad sort of thing since pre-COVID days.
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
Life story in a nutshell: I was born in the US (Philadelphia), grew up in Australia (Sydney), and spent time living in New York City, Berlin, and London before starting the nomad thing. Travel has always been super important to me and, with it, flying – I’m a big aviation nerd and hold a pilots license which I haven’t used in far too long. Also a fan of: the outdoors, scuba diving, Arsenal, food.
Day job: co-founder at Runway (runway.team). We’re building a platform that helps mobile teams build and release more collaboratively and confidently! Some of your favorite apps are shipped using Runway :)
My path towards software engineering and mobile specifically was pretty serendipitous. I studied aerospace engineering at university, so I’d had some basic exposure to comp sci as part of my degree but it wasn’t a focus by any means. My first actual step in that direction occurred when I took time off of university to pursue my first startup, bring10. We had software to build and so I learned by doing, mostly backend and then some bits and pieces of iOS and Android.
That first startup didn’t go anywhere, but I kept moving in the mobile direction from there. First with a project I started pursuing as the startup wound down: Tab, a bill-splitting app we’ll talk more about below! Then with my senior thesis project once I returned to finish my degree: the project was titled “Flight testing a UAV in simulated controlled airspace” and within my team, I was responsible for programming our aircraft’s flight computer – which just so happened to be an iPhone 4! Then, after graduating, I made the whole mobile thing official by joining Rent the Runway as an iOS engineer, all while continuing to build and grow Tab on the side.
Although Tab is more or less in maintenance mode these days, it’s been a huge part of the overall arc that led me where I am now, building Runway. Actually, it continues to play a direct role – for dogfooding, we ship Tab using Runway!
3) Have you ever considered yourself an indie developer?
Now that you mention it, not really? Or at least I never really stopped and thought about it! Even though Tab started as a side project, I always had in the back of my mind the idea that I might try to turn it into a more fully-fledged business. But that never happened – so I guess I slid into indie mode?
4) How do you balance your time between friends/family, work, hobbies, and indie dev?
Not so well. But given Tab is in a bit of a hibernation state, the indie dev part isn’t to blame!
5) Tab - This is absolutely amazing! I hate splitting bills at restaurants but I have honestly never thought to search for an app that can do this for me 😅 When did you start working on Tab and what were your initial goals?
I started working on Tab back in 2012-ish. It was summer in NYC and like many college-age kids in the city I found myself going out to big group dinners all the time. After the umpteenth frustrating scramble to deal with the bill at the end of one of said dinners, everyone around the table started talking about how there must be a better way.
Enter Tab. My brother Quinn and I left that dinner and began brainstorming a “productized” solution to the bill splitting pain point. We quickly landed on an MVP: digitize those long, itemized receipts and give users a dead simple flow for assigning items to specific people, then spit out accurate totals with tax and tip accounted for. I set to work building out a backend and the iOS app, and my brother worked on Android – a luxury to be able to support both platforms out of the gate :)
Our initial goal was focused on the receipt-parsing part: could we ingest and interpret receipts well enough that users wouldn’t have to do anything by hand? Doing this well was really important to us, and at first we weren’t entirely sure it could be done to the standard we wanted! See below for more on that…
6) Tab - I think the ability for multiple people to split the bill at once from their own phones is genius! This feels like a great marketing/growth strategy. It’s kind of a nice organic way increase download and usage 🙂 Did you think about that when creating this feature? Or was this feature simply to make splitting larger bills between large groups easier?
The multi-device, synced flow was really just a natural next step for Tab as a product. We knew that even once someone whipped out Tab to split a bill, there was still friction: everyone in the group would have to shout across a crowded table to tell the splitter-in-charge what all they ordered. What if instead everyone could just hop into the bill from their own phone, from the other side of the table, and help get things squared away?
I remember in the early days being glued to our backend dashboards and getting super excited when bills with 10 or even 20 connected devices would pop up. It’s almost like building a multiplayer game!
Of course, as you point out, the viral growth loop built in there was a nice bonus! We definitely saw folks whose first exposure to Tab was joining a friend’s bill later returning as bill-starters themselves.
7) Tab - I’ve tried to do reading of store receipts for a project years ago and it was extremely easy for things to fail. How have you handled this since this is the core of Tab? Have you had any issues with reading of restaurant bills? Did you have to do lot of QA by getting bills from various restaurants?
Let’s just say, I became the “receipts guy”. All of my friends would collect their restaurant receipts and give them to me, and that was my training data for lots of manual iteration on Tab’s receipt parsing tech.
There are two entirely separate but equally important steps to receipt parsing:
- OCR, simply converting image to text
- Taking the resulting alphabet soup and making sense of it in the context of a receipt.
I outsourced step 1 to third party APIs to avoid going down rabbit holes with Tesseract and the like – leave that to the experts. Unfortunately, back when we were starting Tab the options were surprisingly poor, and it was difficult to find APIs that provided the necessary level of detail. Many out-of-the-box OCR APIs return text as preformed strings/lines, whereas we knew we needed character-by-character data including spatial coordinates to power the kind of processing we wanted to do for step 2. (This was long before Apple’s Vision framework came on the scene! But, regardless, we needed a solution that would also accommodate the Android side.)
Step 2 – turning OCR vomit into a digitized receipt – was Tab’s real magic sauce. I took a semantic approach to piecing together line items, groupings of line items, taxes and other surcharges, included tips, etc. and it was a painstaking, iterative effort. It got pretty darn good, but of course not perfect – the biggest limiting factor was always quality of the input, i.e. the images users would upload through the apps. Imagine a crumpled-up, grease-stained receipt someone just pulled out of their pocket. Understanding that items would sometimes need editing, we worked hard to create a user experience in the apps that allowed for corrections where needed without distracting from the otherwise magical feel of the automatic parsing.
8) Tab - What’s been one of the collecting things you’ve learned working on Tab? What has been one of the hardest experiences?
The whole receipt parsing thing is definitely up there in terms of both coolness and hardness! Also, Tab was my first experience dealing with infra and supporting a user base at some scale – and that’s definitely not always been easy. The number of times I’ve resorted to just restarting an EC2 instance and crossing my fingers…
9) Tab - What’s next?! Do you have any future features planned that you can share with?
So, there’s lots of stuff I wish
I could do next with Tab – but it will all have to wait for now. There’s big picture stuff, like moving Tab into the payments space. And smaller stuff, like finally dealing with the fact that Venmo randomly and silently killed the API we had been using for years for Tab’s nifty Venmo integration – don’t get me started…
10) Is there anything else you’d like to tell the indie dev community about you?
Maybe more of an “ask” than a “tell”. If I may shamelessly use this spotlight for my day job, Runway, I’d love to hear from folks about their day jobs! Specifically, for people working on mobile teams, I’m curious how you all currently approach automation and coordination around your dev and release cycles. Feel free to reach out directly!
11) Do you have any other indie devs that readers should follow / lookout for?
I’ll highlight a friend and former colleague, Damien Vieira, and his app Moneyboard. It’s a really nicely executed budgeting tool that I know is just as well crafted under the hood, having worked on iOS with Damien before :)
Newly Released and Updated Indie Apps
Here are some newly released and newly updated apps from this past week! If you would like to possibly see your app in this list, please submit your app to the look at me form 👀
Thank you to everybody who made it to this footer! You either spent the time to read or took the effort to scroll 😊
Make sure to visit https://indiedevmonday.com/subscribe to get an email of future issues!
And go to Twitter and give @IndieDevMonday a follow… or multiple follows if you manage more than one Twitter account 😜