Issue #116 - Ryley Herrington
Happy Monday, everyone!
We made it to Issue #116! 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 Ryley Herrington.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
Tech lead (iOS) at Cisco and potato connoisseur. Creator of Letter Linker and RunRev.
1) What is your name? Where do you live?
Ryley Herrington. ~Portland, Oregon.
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
Hey folks, I’ve been creating apps since 2009 when I started at Oregon State University. Started with android but the chemistry department wanted a colorimetry app to work with an iPod Touch and I was sold on iOS from there on out. After graduation (or a few months before) I started to work at Nike on the SNKRS app, moved around to a startup, then ended up back at Nike. And finally a year ago I started working at Cisco on the Webex app! I’ve been really focusing on SwiftUI and animations recently.
I mostly hang out with my 2 year old nowadays. Besides that I’ve been making coffee in all forms for the last 2 years (coincidence?). I have a nice little coffee prep area with at too many methods for making it and enjoy playing around with new recipes whenever one comes up. My default lately is a Chemex filled with ice in the bottom for summer, or an espresso-tonic-lime (try it before you judge it). I also spend a lot of time wood firing pizza in our backyard.
3) Have you ever considered yourself an indie developer?
I’d consider myself a hobbyist indie developer.
4) What got you started/interested in creating your own applications outside of your “normal” job?
It’s the only way for me to stay relatively sane; I need to have a creative outlet. It used to be modifying websites(like myspace), then creating my own sites which evolved into making apps. The old apps I published are all over the place, but they all stemmed from the idea that something could be a little easier or cooler if it were on your phone. Seeing what songs your friends were listening to, keeping track of a long-running turn based board game, reading random wiki articles to waste some time before your class started. They were all apps that I personally had a need for and wanted. Niche apps are my favorite because they usually do their one task amazingly well.
5) How do you balance your time between friends/family, work, hobbies, and indie dev?
That’s a moving target. You have to decide on your priorities, and sometimes that means those lower priorities get pushed away for months. I specifically remember being excited to make an app when my son was going to be born because I had a couple months off from my job! That’s still so funny to me, because obviously I did not make an app during that time. But I remember reading a blog post from @JordanMorgan10 about balancing these aspects of life and I follow that pattern too; it’s mostly working before and after kids fall asleep. But friends can always come over for a backyard pizza. 🍕
6) Letter Linker - I was intrigued when I saw that you built this all-SwiftUI app on your iPad with Swift Playgrounds. What made you go this route instead of using Xcode?
I remember wanting Xcode on my iPad back in ~2012. Then they added playgrounds to iPad and we were getting closer! Then some folks were experimenting with Xcode in the cloud but interfacing via iPad and we were even closer. Finally Apple claimed we could build and run an app locally and even upload it as a full app. I knew I had to make an app in that environment just for fun. I made a Wordle clone to just try something out, and then decided to stick with the word game theme since there was obviously a market for them. Turns out, you can make a fully fledged app with an iPad!
7) Letter Linker - What surprised you (in good or bad ways) about building an app only on an iPad?
Typing on an iPad keyboard without Vim bindings is hard to overcome for me. It’s a lot of muscle memory to give up on, but I did it! There were also a lot of taps to get in and out of the files I wanted. You don’t realize how often you switch files or have files side by side until you can’t use them. So I missed some of the shortcuts and key bindings but for a small app it’s pretty awesome to be able to go anywhere and only have to bring an iPad. Plus it was my first real use of only SwiftUI for an app and not just integrating SwiftUI into an existing app.The other giant difference was not using git to keep track of versions. Please someone tell me if there’s a way! I like to use feature branches to try and see if I like something, or if a refactor to a new pattern would make development easier. However on iPad I could create new files but I couldn’t easily switch between trials. In the end I just kept switching out a View with View1, View2, etc., until I found the end result I liked. I’m sure there’s a better way but iCloud backups aren’t the same as a repo history in git.
8) Letter Linker - Give me a hint on how you handle dragging and keep track of the tiles that can be moved. I haven’t done things such as that with SwiftUI yet.
That was tough for me to figure out because I kept seeing the discourse around not using GeometryReader. I was trying to get it to work by calculating offsets from a DragPosition based on the position of the tile … it got really messy. It was almost working but then checking the state of the game was too difficult. And the animations were pretty choppy.In the end I used a GeometryReader to keep track of their positions, and each tile has a drag state that receives changes after a long press. Apply the translation distance and normalize that value by the tile size so that it snaps to a grid. Not too hard once you decide on a way forward, but learning the right tool for the job is half the battle. It worked for me in this instance by I know GeometryReader is not the ultimate panacea, especially now that there are layout helpers like ViewThatFits.
9) RunRev - I thought that this was a clever approach for learning about your running statistics. Is this a case of “I wish this existed so I built it?” or perhaps an instance of when you thought you could make a better version of existing apps?
Absolutely. In 2019 I ran 100+ miles a month, and the only way I could “prove” it was to take a screenshot in another app of the month statistics and then cobble them together in a pretty bad screenshot. I couldn’t keep track of my past mileage or pace without doing a lot of scrolling. So for a minimalist app I just wanted a place where I could see my most recent run, my month stats, and my yearly stats easily. Hopefully I’ve accomplished that in RunRev.Once I decided on the end goal for the app I used it to learn about the new hotness in the iOS world. Charts, animations, Swiftui, widgets, Live Activities(coming soon), and HealthKit. Even if there were other apps that accomplish this, sometimes an app that only does one thing can be better than one that does a thousand. So while better is subjective, I made this and I like it!
10) RunRev - I really liked your chart that you made with Swift Charts. My experience with Swift Charts has been quite positive. How about you?
I’ve loved working with charts. There is a ton of surface area though, so creating your first chart is extremely easy but fine tuning it to be the perfect one for your use-case does take time. Then the compiler seems to have a rough time figuring out what you’re trying to do if you have too many subviews, so there was a lot of battling the “Failure to produce diagnostic for expression” message.
11) Any other additions planned for these apps in the future? Any plans for another app?
I’ll add the translation from miles to kilometers(the old metric/imperial system strikes again) soon because that’s the most common request. If I’m feeling gutsy I’ll finish adding the live activity to start a run inside the app so that I can play around with the dynamic island. However, I have to take a little breather because in December we’re having kid #2! 🎉
12) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?
I think the hardest part is the one that everyone struggles with: prioritizing it. Just finding time. Working on it in the morning or instead of watching a movie. In this latest app, I had to run to test some things out. You can only mock so much in HealthKit before you decide that going on a run is easier than faking the run. Working alone is kind of tough, but you find a community through Twitter or coworkers or iOS happy hour and it doesn’t feel so individual.The most fun part is either looking at my daily active sessions or seeing your friends like your app. The analytics of a few thousand people still playing LetterLinker months after release is really cool. But seeing your app on your friends phone and it hasn’t automatically unloaded for space is a feeling worth chasing. Plus it’s something to be proud of because releasing anything is a major accomplishment. That last 5% of work is so hard, but it’s worth it.
13) Is there anything else you’d like to tell the indie dev community about you?
I love talking with anyone in the iOS community, but if you follow me on Twitter you will end up seeing pizza/ coffee pictures and I’m sorry. I can’t stop myself. Caveat lector.
14) Do you have any other indie devs that readers should follow / lookout for?
After 100+ newsletters I’m sure everyone here knows the fun folks to follow. I personally love seeing new shortcut ideas from @Mattcassinelli, and I can’t stop watching(and failing to recreate) the animations that @DLX is making.
Newly Released and Updated Indie Apps
There were no newly released and newly updated apps submitted 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 😜