Happy Monday, everyone!

We made it to Issue #91! Thank you to everyone who read last week’s issue ❤️

Author
Chris Wu - @museumshuffle

Today’s Spotlighted Indie Dev

📆 Today I’m featuring Yon Montoto and Jeff Kloosterman.

Yon is the creator of Drinksly. Yon is an iOS developer at Chatbooks who is the creator of the Drinksly app. He has a blog about iOS development and also streams Stardew Valley gaming under perhaps the greatest handle ever, Yonald McDonald.

Jeff is the creator of Good Enough Goals. Jeff is an iOS & Web Developer at Michigan Labs who is working on his first indie app, Good Enough Goals. He has been building in public and it’s been quite interesting to follow his progress.

👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.

Indie Devs

Yon Montoto

Orlando, FL

iOS Developer at Chatbooks

Jeff Kloosterman

Grand Rapids, MI

iOS & Web Developer at Michigan Labs


Yon Montoto

Q&A

1) What is your name? Where do you live?

Hello, my name is Yon. I was born in Cuba, but I came to the US when I was two. I live in Orlando, Florida but grew up in Tampa most of my life.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

As far as education, I am not a computer science degree-holding developer. I went to school for Film and Cinema Studies. While I was in school, I took an interest in CS and made that my focus for my minor (after I was a Russian Studies minor). Throughout school, I taught myself how to develop applications. I tried to learn python (and learned quite a bit), and also learned Web technologies (like Javascript [in particular using Express.js to make servers for my app ideas], HTML, and CSS). I landed on Swift in 2017 and have never looked back since then! Currently, I am an iOS Developer at Chatbooks. Outside of tech, I am still a digital kind of person. I like to do 3D design and modeling in my free time outside of tech, but within tech, I enjoy working on personal projects (some of which I develop with my friend).

3) Have you ever considered yourself an indie developer?

I didn’t consider myself an indie developer until my second app. I always thought you couldn’t be an indie dev unless you made money off your apps (and I later found out I was wrong). Now I realize I was an indie dev way before I considered myself one!

4) What got you started/interested in creating your own applications outside of your “normal” job?

Funny enough, my “normal” job got me started developing. I worked at Starbucks for ten years, but around the six-year mark, I realized that the single biggest complaint by students at the University was parking. The garages had counters on the outside to show available spots, but I figured you would want this info before you drove to one, so I made an app that takes the parking data and returns it in a “prettier” fashion. If I didn’t connect with the people that went to Starbucks, I wouldn’t have started making apps! After that came the secret menu app (which, thanks to my job at the time, was a given).

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

Balancing work, indie dev, and friends/family has been the hardest. There are times when I won’t work on indie dev stuff for weeks because I have so much going on outside of that sphere. I think that is something I am still working on and learning to balance, but it helps to allot time to the things you enjoy because sometimes you can get so pulled into the work that you forget to spend time with friends and family.

6) As someone who almost never goes to Starbucks and most certainly would try to order a “medium” the description of the features of Drinksly was very appealing to me. What inspired you to write it?

Since I had a front-row seat to how the customers interacted with baristas and seemingly how they felt when ordering, I could accurately describe the pain points of ordering from a secret menu. The description for the app is the quick and most simple reason having a “secret menu companion” like Drinksly could make ordering new things easy for you. Having a secret language makes things harder for new customers, but having something that you can reference (and have it created and updated by a barista) could make you feel a little more at ease using it.

7) I knew that some places had secret menu items, but I didn’t know that Starbucks was one of them. How do you keep up with menu changes?

It’s hard now that I am a full-time developer. Before, I was able to experiment and see what other people were drinking. The TikTok drink trends come and go so quickly it was nice to be on the front line to know what people wanted. As of lately, I browse the internet and places like Instagram and TikTok for content that is trending in the Starbucks world. The hardest part is spending the money on drinks I won’t know if I will enjoy, but I need to try them to describe them in the app for the supportive users!

8) I saw where you mentioned that the app is built completely in SwiftUI. What benefits did that bring when you were developing the app? Conversely, what made things difficult?

SwiftUI was a lifesaver. I learned SwiftUI in tandem as I created the Drinksly app, so the language was a learning curve. Luckily, I picked it up quickly and was able to iterate on designs and functionality quickly. I would say that the benefit of SwiftUI is that it is friendly to new and seasoned developers, so it won’t take much to get started. The downside to SwiftUI, in its current state, is that many things aren’t entirely polished. Some UI is a little tricky to get to work, and often there are three different approaches to a problem that all yield a solution. Although, this might not be so much a con. A lot still needs to happen for SwiftUI to be taken in as the winning approach to iOS development.

9) Could you talk about how you used CloudKit to sync data, allowing users to download the latest drinks and updates without having to update their apps? That’s a clever implementation!

The biggest thing I found when scouting the rivals in the App Store was that they needed to push an update every three months to keep their list of items up to date. I mulled over the notion of using Firebase; however, I was starting to become upset with the route advertisers were going with their tracking and decided it would be better to have as few identifiers for users as possible. Since users don’t need to make an account, I wanted them to stay anonymous using the app. I decided to use CloudKit for the “backend.” I picked CloudKit because I wanted to keep it streamlined with the apple ecosystem and keep the data safe and secure. Getting items to sync ended up being harder than I thought, but once I figured it out, it was a surprise to see how easily things just “worked.” If drinks are updated (or new ones added), that information is updated when the user reloads the app. This way, drink recipes that change or items that become discontinued are automatically filtered and altered.

10) As someone who hasn’t used CloudKit yet I’d wonder if you’d have suggestions for things to do or watch out for.

One of the worst pain points with CloudKit was understanding how to save data into the database. Once you grasp how a private and public database works, you can learn how records get stored within them. Another pain point to CloudKit was the large requirement of boilerplate code I needed to get to run queries for updating and removing content from within the app. If you are starting with CloudKit, these might be the most confusing things to understand in the beginning. Once you get it, you’ll get to moving quickly. I could not recommend Donny Wals and his book Practical Core Data enough if you want to learn how to use things like Core Data (and some CloudKit too).

11) The app icon for Drinksly is lovely! I distinctly remember asking you who made it. (Spoiler alert: Yon made it himself.) How did you hone your design skills?

I have always loved designing. I love staying on top of trends and even dabbling in some of my design trends. Since I went to school for something creative like Film, all avenues of art interested me. I worked on the Drinksly app for a long time before I felt it was ready. The first icon I used was minimal and did not feature as many rosettas.

12) What’s been the hardest part of being an indie dev? What is the most fun part of being an indie dev?

Marketing is the most challenging part of indie dev work, in my opinion. I have never been good at marketing myself or marketing my products. It’s hard to put your thoughts together and make them cohesive enough to pitch to others. If I had been able to get better at marketing, I would have been a lot more successful at making more widely accepted and used apps. The most fun part of being an indie dev is not having to report to anyone but yourself. You are free to try things, break things, fix things (throw a #warning(“fix this later”)), or even quit if you need to. Being a developer is one of the most fulfilling jobs in the world when you think about it. Your code is usually immediately reviewed by your peers (or your CI/CD tool), and you can have it in your hands in minutes to test. If you’re the only developer working on it, you see a product from inception to MVP. That is just a good feeling.

13) Is there anything else you’d like to tell the indie dev community about you?

I love hearing and learning about other developers and their journeys. If you ever need someone to bounce ideas off of or want to connect and do a zoom call, I am always available. I want to give back to others because I was one of the lucky ones to have the help of articles from great developers before me.

14) Do you have any other indie devs that readers should follow / lookout for?

I keep up with so many developers it would be hard to name them all, but one developer I keep up with is Sawyer Blatz. He’s a great developer and is the creator of the Nugget iOS app!


Jeff Kloosterman

Q&A

1) What is your name? Where do you live?

Hi! My name is Jeff Kloosterman. I live in Grand Rapids, Michigan (US) with my wife Kelsey, daughter Margaret, our dog, and cat.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

I graduated from Calvin College (now Calvin University) with a - deep breath - Bachelors of Science in Engineering with a Concentration in Electrical and Computer Engineering. Which is a lot of words to say “not quite Software Development”. Right out of college I started working at a Software Consultancy doing Embedded Engineering (think firmware and hardware design). After about a year I followed one of my friends to my current job, a custom software consultancy called Michigan Software Labs. That was just over 7 years ago. 

Since then I have helped ship somewhere in the realm of 20 different apps (mostly iOS and web) for our various clients in various industries. These days my day-to-day work is a mix of leading client projects and mentoring coworkers. Lately I have been focusing on developing a more wholistic view of Product Development.

Outside of tech I like to spend my time reading, playing board games, thinking about writing, and thinking about woodworking. I made it a goal this year to finish reading at least 2 books every month — a goal that would be much more easily accomplished if I didn’t keep picking up 800+ page monoliths. I fallen into the trap of getting sucked into two enormous Fantasy series, “The Wheel of Time” (by Robert Jordan) and “The Stormlight Archive” (by Brandon Sanderson), simultaneously.

Within the Tech sphere I am really focused on iOS, specifically SwiftUI recently. App architecture has also been a long term interest of mine, elevated more recently as I increasingly have to work in short bursts between meetings and after my kid goes to sleep. Figuring out how to codify as much of the decision making process into the architecture of the app has allowed me to make progress on my projects even when I do not get long, uninterrupted periods to focus. I also really like making user interfaces that are nice to both look at and use.

3) Have you ever considered yourself an indie developer?

Not exactly. There is also a big overlap in what I do at my day job and what I am doing in the Indie space. I think it will always be a little weird to think of myself as an Indie dev when I work my day job, then come home and do largely the same thing at night (albeit with fewer meetings). 

It is also still new for me. I have worked on Good Enough Goals in relative secrecy for the better part of a year, only really starting to talk about it more in the last few months. Once I launch into the App Store we will see how that equation changes.

4) What got you started/interested in creating your own applications outside of your “normal” job?

A while back there was a couple years where my day job did not have a lot of iOS projects coming down the pipeline. As a result I worked on a number of web projects. During this time I got to learn Vue.js, which I think is a great web framework, but I still wanted to keep my iOS skills sharp. So I built on the side, experimented with new frameworks and APIs, so that I could keep myself in a position to jump onto the next iOS project we signed. 

I also have a lot of intrinsic motivation and get a lot of satisfaction out of learning new things. How this often manifested in the past is I would start a new side project, try out some new ideas, but once I got that sense of understanding of the solution I tended to lose a lot of motivation (often well before the “finished” state). This changed toward the end of 2021 where I sort of looked in my rear view mirror at my long trail of half-baked ideas and decided “I need to ship something that is my own”. 

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

This is a tricky question that I am still trying to find the right balance after the last two years of lifestyle shifts. What I will say is I have the most understanding wife, an employer who is doggedly flexible, and hobbies that are relatively easy to pick up and put down. I also block out my evenings into chunks so that I can make sure I am spending time with the family, getting things done around the house, but still allocating time to make progress on my app and books I am reading.  My wife would tell you I don’t sleep enough.

6) You’ve been building your first indie app, Good Enough Goals, in public and it has been interesting watching your progression. My first question is are you trolling us? This looks way too polished to be your first indie app. If not, where did you hone your design skills?

Ha, no I am not trolling anyone. As I mentioned, I have helped ship multiple apps for clients over the last 7 years at my day job. Most of these were as a part of small, 2-3 person teams. So in that sense this is not my first app. But this is my first Indie app (or at least the first one to make it onto other people’s phones). However, I will take the compliment. 😊 It is always a bit nerve-wracking to show something off publicly, but the reception so far has been incredible.

One of the benefits to being employee number 5 at a development shop is there is a lot of opportunity to step into new roles and build new skills as the company grows. For me this was about 5 years ago when I told my boss “Hey I think I would like to learn more about design”. At the time we relied mostly on the design teams of our clients or on outside contractors to help with design. I have always enjoyed working in visual media so it seemed like a good fit. 

From there it was basically just a loop of read, practice, evaluate until I felt confident enough in my skills. Fast forward to today where we have a whole UX team that is better at it than I am, but really it was mutual growth of myself and the company that helped get me to where I am today.

For Good Enough Goals the design of the app really came in iteration. I have an abandoned project called “Routines” that was basically a task management / todo list app where the central conceit was you could only describe your todos in three emojis (so “Remember to feed the cat” becomes 🥩➡️🐈). The design of that app is something I spent a ton of upfront time thinking about, drawing it all in Sketch, presenting it to people for feedback, etc. When I abandoned the project I kept the design language and ported it over to Good Enough Goals. That was early 2021.

Since then I have redesigned Good Enough Goals twice to get it to the point where it is now. Forms used to be more complicated, the sort of progress bar round-y rectangle outline thing used to be muddier, and I have been adding more UX affordances for common tasks (like tracking a partial value for a “Good Enough” button). Really the crux of it all is iteration, using the app myself for nearly a year, and trying to turn off the part of my brain that says “this looks like junk” when I really know that it is good enough 😉.

7) When I heard the name “Good Enough” I immediately wanted to know more. Can you explain that and how the app works?

Absolutely! So the name, like the design, has been an iterative process as well. It basically went from “Burndowns” to “Trends” to “Good Enough”. This is kind of a commentary on me giving up on finding a descriptive name that is not already taken in the goal / habit tracker space, but also it is reflective of my mentality around goals in general. 

The idea for this app actually started out as a checklist in the Bear notes app. In the summer of 2020 I was trying to break my WFH munchies habit and decided to start tracking Calorie intake. I downloaded a couple different food tracking apps but they all wanted either precise amounts, to do some comprehensive health evaluation, or talked about “macros” and things I didn’t really care about. I just wanted a little insight into how many Calories I was eating. 

So I made a checklist where I divided out how many Calories I thought I should be eating, kept track of how many Calories various common meals I ate contained, and just checked off the amounts (500, 100, 50, etc) throughout the day. In the morning I unchecked all the boxes and started over. The system was simple enough for me while still providing the insights I wanted so I stuck with it for about 6 months. (Please note this is not a health recommendation).

So the app is really an extension of that idea. Making it easy to track common amounts for things that you do regularly but want more insight into. The app allows you to create goals for anything, with a target that can reset every day, week, or month. Ideally then you will create “Good Enough” buttons for these common amounts - a travel mug for coffee, the size of your water bottle or glass for water, the duration of your favorite run, hour and half hour increments to track reading or exercise, etc. The goal being that these amounts are accurate enough to provide insights, but also general enough that once they are set up the mechanics of tracking are as streamlined as “tap the button for the thing you did”. 

I have more ideas for how to make this process even smoother with things like shortcuts, other integrations, timers, etc. Currently my focus is on making the app a little stickier than my little checklist note through reminders and widgets because I how easy it is to fall out of habits if you don’t have some kind of external trigger to prompt you when you forget. After that its just “ship this thing”.

8) The app isn’t complete yet, but so far what part of it are you most proud of? By the way, your widgets are looking beautiful!

Thank you! The widgets have been really fun to put together. Because the whole app is SwiftUI I have basically been able to just move the views I want to use in the widgets down into a shared Swift Package, add to the Widgets target and boom, widget (albeit with some additional effort).

The thing I am most proud of is the theme system. It is based on some experience I have with CSS Properties where you can basically define a name for a color, then override it in any scope. It is also a piece of code that I set up the infrastructure for a long time ago and then never tested until recently, but it ended up working great. I am really excited to add more themes and for a potential in-app “theme builder” in the future to allow even more customization. 

I am also really proud of where the UX for the app is right now. I have a lot that I want to add still but what I have really works for how my brain operates and I hope that resonates with more people.

9) You’re writing the app in SwiftUI. How has that worked out for you so far?

I am probably one of the (relatively) few people out there that actually really enjoyed working in Interface Builder with constraints, outlets, and all that. I really enjoyed the ability to logic through a layout with constraints and priorities and see the results in real time. But I say all of this in the past tense because SwiftUI has replaced and enhanced all of that enjoyment I used to get building UIs and made it so much nicer.

Building this app all in SwiftUI has been mostly positive. I still feel some rough edges when it comes to navigation, weird layout bugs, things that are needlessly difficult compared to their UIKit counterparts, weird crashes deep in complex layouts. I have so many work-arounds to manage TextField focus states, screen dismissal, NavigationLink triggers, etc.

But man is it fun and fast to slap together a screen that looks great once I have all my styles and components set up.

10) One of the reasons I wanted to interview you was because of your great sense of humor. Can you tell us the story behind the infamous “hot dog stand” theme and perhaps give us a hint as to how to unlock it?

I am glad at least one person finds my nonsense funny 😀.   Yes, so first off you can find the (now “infamous” I guess) tweet here where I unveiled the “Hotdog Stand” theme to the world. The theme itself is a callback to an old Windows theme of the same name and colors. Basically it just changes everything to red, yellow, and gray. 

I do not know what possessed me recreate this particular theme or even reminded me of the old Windows counterpart, but I wanted a test that would show me all of the spots in the app that were not adopting the theme correctly. I decided to post it because 🤷‍♂️ why not? I figured a couple folks might get a chuckle and that would be it. 

Fast forward and I am instead pondering how to explain to my family that a hotdog meme may be an inflection point in determining the success of this app.

For the Secret Themes I am sworn to secrecy on how to unlock them. However, just know that I have plans for more of them and I do not want to tie the unlock methods to something that is language or locale specific if I can help it.

The TestFlight launch experience has been incredible. The app reached a point where I finally thought it was good enough to put in front of more people. I have had a couple friends harassing me for the past 6 months over when they would get to use it. So I turned off my perfectionist brain and hit the submit button despite its faults, flaws, and gaps I still need to fill. I expected maybe 10 people to check it out. At the time of me writing about 500 people have checked out Good Enough Goals. Mind Blowing.

I think I posted the link on Twitter at about 10PM (probably not the ideal time) and went to bed. I woke up the next morning to an outpouring of positivity from the community that really hasn’t stopped. I have invested so much time and effort into this app that I am really building for myself and to see it resonate with so many people right away has been so motivating. There is a ways to go before it gets into the App Store proper but now I have an extra boost to make sure it gets there.

12) What’s been the hardest part of being an indie dev? What is the most fun part of being an indie dev?

The hardest part is also the most fun part for me. I am my own worst critic when it comes to all of my creative pursuits. Balancing that self-critique against the freedom to experiment and make choices that aren’t impacting a team or a budget or someone else’s roadmap has really allowed me to flex my skillset in ways that I don’t always get to in my day job. But the challenge comes when it is time to call something done (or again “Good Enough” 🥳). This is part of why I started posting publicly about the development more consistently. It helps keep the “everything must be exactly perfect and polished” part of my brain in check.

13) Is there anything else you’d like to tell the indie dev community about you?

First off just thank you for the kind words, comments of support, and the helpful feedback from those of you who have already checked out Good Enough Goals. The community has been so welcoming to me as a bit of a newcomer and unknown quantity. I hope to get more involved with time.

One of the things that I am very passionate about at my day job is helping my coworkers learn, succeed, and really building up their skillsets. I would like find a way to transfer that passion to the broader iOS dev community whether that’s through writing or just interacting with more folks on Twitter. So I guess if there is something interesting you find in Good Enough Goals that you want to know more about or if you just want more insight into working in custom software consulting please reach out to me on Twitter.

14) Do you have any other indie devs that readers should follow / lookout for?

I have been basically binging the @LaunchedFM back catalog the last month so checkout that podcast by @_chuckyc if you haven’t already. 

I used to run a local game dev meetup and a few folks from there have recently launched games. Check out @BowlcutStudios and @BitSmudge.

Also shoutout to you, Chris. Without your early and ongoing support I would not be here.

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 👀

ManGo is a clean MyAnimeList anime & manga tracker for iPhone & iPad. You can keep track of anime you're watching and manga you're reading, as well as view detailed information about all of your favourite series. Try it now! 🇯🇵
Features: * Data Saver Mode * iPad camera multitasking * Automatic column sizing * Search * Network quality monitoring * New icon
Added support for Spider Solitaire – the eleventh different game variant.

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 😜