Happy Monday, everyone!

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

Today’s Spotlighted Indie Dev

📆 Today I’m featuring Shawn Hickman.

Shawn is the creator of Sofa. Sofa is an iOS app that allows you to create lists of apps, books, board games, movies, tv shows, podcasts, music albums, and video games to enjoy later. I usually struggle on what to do during my downtown but Sofa has been helping me with that 😊 There are so many streaming service with new shows and seasons that are always being released that I just can’t keep up. It then stresses me out that I can’t remember them or prioritize them 😝 But Sofa has rescued me! It’s all sorted into lists that I can easily look through when I sit on my couch and I’m ready to relax 🙌 Sofa is so much more than lists though! You can create groups, throw things into a pile to be sorted later when you have time, keep track of things you’ve watched or read in an activity log, and write sticky notes on items about your thoughts or feelings. Sofa is pretty much a requirement for me to relax now 😉 You all need to download Sofa today so you can get your downtime organized!

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

Indie Dev

Shawn Hickman

Philadelphia, PA

Design Manager at Think Company and creator of Sofa


Shawn Hickman

Q&A

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

My name is Shawn Hickman, and I live in the suburbs outside of Philadelphia, PA (Philly).

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

My background is actually in design, not development. I have a degree in graphic design, and I’m currently a design manager at Think Company here in Philly.

In 2017, I dove headfirst into learning iOS development to build Sofa 2.0. Here we are four years later, and I’m still hacking away on it—one of the best decisions I ever made.

Interests outside of tech
Travel is probably at the top of the list. My wife and I love taking day trips, long weekends, or jetting off to Disney World. Traveling has so many benefits beyond having fun. Rick Steves said it best, “Travel is rich with learning opportunities, and the ultimate souvenir is a broader perspective.”

I’ve also recently been getting deeper into photography. It’s a hobby that’s come in and out of my life, but it’s grabbed hold of me the past few months. Shooting with a camera other than my phone helps me disconnect, recharge, and be more present.

Interests inside of tech
This isn’t specifically a tech thing, but I find the systems and operations of individuals, teams, and organizations fascinating. We focus too much on the result instead of the systems that led to it.

For example, every WWDC, I’m blown away at how Apple can create highly integrated solutions that require deep coordination among so many people and teams. As someone who’s worked in consulting for the past seven years, I can tell you firsthand how difficult it is for teams to ship anything.

Apple’s systems and operations are on a different planet.

3) Have you ever considered yourself an indie developer?

I only recently became comfortable calling myself a developer, but I haven’t given the indie developer title much thought. Technically, I guess I am, lol!

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

Like many, the original iPhone is what triggered it for me. When I saw the iPhone announcement, I remember saying, “I want to do that,” without knowing what “that” was. From there, it’s been a windy path of exploration, false starts, confusion, and excitement.

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

I’m sadly a workaholic. Given zero constraints, I will work most of the time. I wouldn’t say I like this quality and have been trying to get better at containing it. This is one of the reasons I built Sofa. Sofa’s a tool that helps me to not work (using it, not making it). The irony is that I have to work more to build a tool that helps me work less 🙃.

Quick aside If you think about it, the tools we use for managing our downtime are all “work” tools. Tools like to-do lists, notes, and calendars come from our work culture. We use them for personal things, but all our work stuff is right there next to it. Sofa is an attempt to build a non-work tool for managing your downtime. I want more tools like this to create better barriers between the work and personal areas of my life. End quick aside

The most useful thing I’ve done is institute work nights (my wife’s idea). Two nights per week are reserved for working on Sofa. The other days are reserved for personal time. I’ve been doing this for a few years, and it’s been working pretty well. I stick to this schedule around 80% of the time.

6) Sofa - I am so glad that Sofa exists! Forgetting which shows and movies I need to watch is probably my biggest weakness 😛 And my list of things I need to watch just keeps getting longer ever since having my son last December 🙃 Sofa gives me an awesome sense of priority and less stress when I have downtown to watch TV. I don’t have to worry about what to watch! When did you get started on Sofa? What was the initial goal? Is it anything like what Sofa is now?

Way back in 2014, Sofa was originally called Movie Night. My wife and I love watching movies, but we would always argue over what to watch. We set up a rule where we would each get a turn to pick whatever we wanted, and the other person wasn’t allowed to complain. Movie Night was intended to track what was watched and whose turn it was. At the time, I was keeping track of this in Evernote but thought it would be better as its own app.

That concept was not very interesting, so we tweaked it to be more of a movie journal. We didn’t find anything compelling about that either and moved on.

Then it became Movie List. You would add movies you wanted to watch so you wouldn’t forget. Basically, a to-do list for movies. This is where the product started to find its legs, and this feature is still a core part of Sofa today.

7) Sofa - I think Sofa has found every show, movie, and game that I’ve searched 🤯 Is it hard finding data sources for all of the items that you want searchable? Have you had to switch data sources or find ones that were reasonably priced? I used to work on an app that dealt with similar data and I remember that getting good data was very hard (but maybe things haven’t changed since 2015) 😅

I’m glad to hear that! Finding good data from reliable sources and combining them into a seamless experience is probably the most challenging part of Sofa. Each API has its quirks and limitations. Overall, the data sources are reliable, affordable, and relatively easy to work with.

I’ve only had to swap out one data source: Google Books. This was the original data source for books, but I quickly hit the daily rate limit. It took Google six months to reply to my request for an increase…which they denied 🤣. I now use the iTunes Search API for book data which has a more reasonable rate limit. The iTunes database has fewer books than Google’s, but it’s much more reliable.

I’m sure I’ll have to swap another data source in the future, but I see that coming with the territory of making an app like Sofa. I also think that’s what makes it so unique. The app does a lot of work for you.

8) Sofa - There are so many great things like lists and groups that make me keep using Sofa but I love the notes that I put on my stuff! I’m so bad with people asking me how I liked a show and I’m just like “It was good!” and that is all I got 🙈 I use notes to write my thoughts but I also use notes to keep track of which seasons I’ve watched and need to watch 😇 What is your favorite ways to use groups, lists, and notes? Have you seen users do anything with groups, lists, and notes that you didn’t expect?

My Use
I use groups and lists in a pretty obvious way. I have groups for the major categories like Books, Movies, and Podcasts. I’ll have a list for different genres like History, Comedy, and Classics in each group. Nothing fancy.

I use sticky notes to write down who recommended something to me and capture my thoughts after logging it to Activity. Writing down who recommended something is handy when I’m trying to find the next book to read or movie to watch. For example, I’ll weigh a movie my brother recommended higher than one I found online.

Ways I’ve Seen Others Use It
I’ve seen some people create groups for different streaming services like Netflix and HBO and create genre lists within them. Federico Viticci of MacStories has a more productivity-based approach. He has groups for New, On Hold, and On-Going and then various lists within those groups.

People are getting clever with sticky notes too. I’ve seen people add release dates for movies and create a rating system with emoji ⭐️⭐️⭐️⭐️⭐️. Since the contents of sticky notes is searchable in the app, people have been adding “tags” to their notes to make them easier to find.

It is pretty cool to see how other people use the app and create their own little hacks.

9) Sofa - I am 100% in love with the Sofa website 😍 It is the perfect balance of information and simplicity and design without going overboard. Did you design the website and copy yourself? I’m probably going to study this and take a bunch of notes and try to apply things to my own projects. I don’t think I have any more questions but take this 🏆 for having a 🔥 website!

That’s super nice of you to say ☺️. Yes, I did all the writing, design, and development for the site. At times, creating the site felt harder than building the app 🙃.

Oooo, I love the idea of a random theme being assigned every day! I might build that!

I’ve meant to do a proper write-up on Sofa’s theme system and process, but I’ll do my best to summarize it here…

UI elements can be broken down into a few basic structures: layout and hierarchy:

  • Layout deals with things like foreground, background, tints, and dividers.
  • Hierarchy deals with things like primary, secondary, tertiary, etc.

Putting these together can look something like this:

//For backgrounds
backgroundPrimaryColor: "#FDF2EB"
backgroundSecondaryColor: "#F3E5DE"
backgroundTertiaryColor: "#F3E2DA"

//For text, dividers, and non-interactive icons
foregroundPrimaryColor: "#333333" 
foregroundSecondaryColor: "#666666"
foregroundTertiaryColor: "#C9BFBA" 

//For interactive elements like buttons and links
tintPrimaryColor: "#264EC1"
foregroundOnTintPrimaryColor: "#FFFFFF"
tintSecondaryColor: "#FFFFFF"
foregroundOnTintSecondaryColor: "#264EC1"

For a simple theming system, this structure works well. For Sofa, I take this a little bit further. I create different “zones” or “areas” of the UI and give them their own theme sub-structure. Things like the navigation bar, tab bar, etc. The cool thing is that I can use the same structure as outlined above and localize it for the different areas. Here’s an example:

//Theme colors for the navigation bar
//For backgrounds
navBarBackgroundPrimaryColor: "#FDF2EB"
navBarBackgroundSecondaryColor: "#F3E5DE"
navBarBackgroundTertiaryColor: "#F3E2DA" 

//For text, dividers, and some icons
navBarForegroundPrimaryColor: "#333333" 
navBarForegroundSecondaryColor: "#666666"
navBarForegroundTertiaryColor: "#C9BFBA" 

//For interactive elements like buttons and links
navBarTintPrimaryColor: "#264EC1"
navBarForegroundOnTintPrimaryColor: "#FFFFFF"
navBarTintSecondaryColor: "#FFFFFF"
navBarForegroundOnTintSecondaryColor: "#264EC1"

I have a Figma design template to create the themes and play around with ideas. I wrote a little plugin that exports the color values from the Figma file, which I then paste into Xcode.

On the development side, I based the mechanics off of a blog post by Late Night Swift. The blog isn’t up anymore, but you can still see the code on Github. There is a Themed protocol that each view conforms to. When a theme is changed, it notifies all the views and passes in a new theme.

With 100+ themes in the app, this setup has been pretty solid and allows me to create some pretty fun looks 😃.

11) Sofa - What’s next?! Do you have any future features that you can share with us?

I’m working on some more minor improvements to add more sorting options and customization to various parts of the app in the short term.

The big feature I’m excited about is collaborative lists and groups. Sofa uses NSPersistentCloudKitContainer to store data locally and sync with iCloud. There are tradeoffs with this approach, but overall I’ve been happy with it.

As of iOS 15, you can now have shared containers. Yay! I haven’t thoroughly investigated this, but it looks promising. I’d love to have a shared movie list with my wife, and I know others would love the same.

I have a public roadmap for Sofa for folks who want to keep up with things.

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 time. Sofa isn’t my full-time job (yet), and fitting it in with a full-time job and personal life can be a lot. I try to work at a pace that is realistic within my constraints. Easier said than done.

The most fun part is not having to justify how I spend my time to someone else. Last summer, I spent a lot of time exploring SwiftUI and didn’t ship anything directly from that effort. In a traditional company setting, that time would have been “wasted”. I see it as time well spent.

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

If you’re interested in keeping up with Sofa, there is a YouTube channel and community forum to check out.

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

I don’t know if some of these folks qualify as “indie,” but I’ve learned a lot from them along the way:


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 👀

Speediness Newly Released
Quickly check your internet connection speed.
Shortery Newly Released
Shortery is the missing automation tab for macOS Shortcuts. Run Shortcuts automatically based on app launch, time, battery level, dark mode, sleep/wakeup and other triggers.
Christmas Guide Updated
- Accessibility improvements. Change your system font size on iOS or iPadOS and see the interface adapt perfectly. This adaptivity is extremely helpful to those who prefer larger font sizes or even those who cherish smaller text. - App redesign. Head over to the settings page to choose your favourite interface theme and app icon. This customisation is a great way to personalise your experience and feel at home with Christmas Guide. - Carols. Access dozens of popular and traditional Christmas songs straight from the home page. These will include links to popular music services, a playable YouTube video and lyrics to sing along and enjoy the season. - Characters. Read more about the Christmas characters you love directly from the home page. These will include a short and easy-to-understand description accompanied by translated names to gain more culture. - Events. Find out all the important dates during the winter season through the home screen. They provide all the different dates for the same event depending on the rite or church, helping you stay up-to-date at all times. - Who Am I? interface changes. Use the app's initial main feature, Who Am I, with only a single tap on the home page. The camera view is now above your usual buttons to choose or take a photo, making the interface more charming and practical. - Who Am I? machine learning model renewal. Compare yourself to other Christmas personalities and symbols in the same way as before. The only difference is an improved face recognition model, which is more accurate and fun to use.
NeoFinder Updated
Fresh user interface with updated icons Added interface colors Space Blue, 25% Grey, 50% Grey, and 75% Grey Change color immediately Code optimized for the new M1 Pro and M1 Max ARM hardware from Apple Fully certified for macOS 12 "Monterey" New Map with satellite images, Point of Interests, and support to display multiple GPS GeoTags Hide and Show the LIBRARY and the entire left window part Folders in catalogs can be shown in LIBRARY for fast navigation Image Analyse of thumbnails to find text (OCR), faces, or AutoTags (requires macOS 10.15 or newer)
Updated design and widget support

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 😜