Issue #83 - Andrew Bennet
Happy Monday, everyone!
We made it to Issue #83! 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 Dev
📆 Today I’m featuring Andrew Bennet.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
Web app developer, magician, and creator of Reading list
1) What is your name? Where do you live?
I’m Andrew Bennet, I live in Putney in South West London in the UK.
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
Hi there 👋 I’m Andrew, I’m 30 years old. My education culminated in a degree in mathematics at the University of Bristol. In my school days I had dabbled with writing programs in BASIC on a Texas Instruments graphical calculator, which had really hooked me, so I had a hunch that programming would be good career choice. After graduating in 2013, I joined a software company called Symplectic, where I learnt to program “properly”, and I’m still there now. At work, I program in C#, SQL, React and TypeScript, building web applications on a Microsoft .NET stack.
Outside of tech: I’m a magician and member of The Magic Circle (a UK-based magic society), I enjoy playing piano and reading, and – since 2020 – have been a keen runner.
3) Have you ever considered yourself an indie developer?
I’m not sure exactly what the definition of “indie developer” is 😀 I would consider myself an indie developer now, despite having a full-time job – but I probably wouldn’t have called myself that at the start of my app side-project journey. I’m not sure exactly when that classification would begin… maybe around the time I had to file my first tax return!
4) What got you started/interested in creating your own applications outside of your “normal” job?
A few things combined to motivate me to start making a side-project app.
The app idea came first. I had been frustrated with the lack of a good, simple reading tracking app for a few years. I wanted a place to record what I’d read, and when, and to be able to list the books I wanted to read. Every now and then I’d search the App Store, but nothing I tried was quite what I wanted.
The impetus to actually start building an app myself came – kind of randomly – from reading a job ad which said something like “You must have shipped at least one great app”. I didn’t plan to apply for that job, but it triggered a realisation that it would be possible for an me, as an individual, to build and release an app.
Finally, Swift had been released recently, and from what I’d seen of it, it looked much more approachable than Objective-C (which I had tried and failed once to get into before). So I bought a book on iOS App Development in Swift and set about it!
5) How do you balance your time between friends/family, work, hobbies, and indie dev?
My day job working hours are pretty structured, and I don’t usually sacrifice plans with family or friends to work on the app, so I tend to just tinker on the app in whatever time I have left. This can vary hugely – when me and my wife were planning our wedding, or renovating our flat, I wasn’t able to do much app work at all. In quieter times, I usually have some free weekday evenings and the odd weekend afternoon to tinker on it. It’s pretty common for me to do a bit of programming, or reply to support emails, while resting on the sofa with the TV on in the evening. Drawing the line between hobbies and indie dev is tricky, because I consider programming a hobby. It does eat into other hobbies, and ironically the amount that I read has gone down as a result of building a reading tracking app 😂
6) Reading List - I love Reading List! It’s such the perfect app. Its clean and functional and feels like it totally belongs in the Apple ecosystem 🙌 When did you start working on Reading List and what were your initial goals?
Thank you for that! It being clean and functional was one of my key goals, so I’m glad you agree! I set about learning iOS development in late-2015, and after on-and-off progress I eventually shipped the first version of the app in mid-2017. I had a fairly clear MVP in mind: I wanted an app which would let me very quickly record when I had started or finished a book, so I could see how many books I was reading, and how long they were taking me to finish. I wanted to be able to add books I wanted to read by scanning a barcode or searching online. Finally, it needed to work offline, since I wanted to use it on the London Underground where I would often spend my commuting time reading.
I didn’t want the app to require an account, or to have any social media integration: it was designed as a very personal logging tool, rather than a sharing platform like Goodreads. And of course, I wanted it to be super easy-to-use, and for the design to look familiar and approximately like a stock Apple app. A lot of the other apps in this space suffered – in my opinion – from feature bloat; I intended for Reading List to be the antithesis of this, keeping the feature-set down to a minimum, but to do those features well.
7) Reading List - I’m so impressed with Reading List’s ratings and reviews! 4.8 with 15.2k reviews 🤯 That is so amazing and I wish my apps were even a fraction of that. How does it feel to have a high rating like that? Have you done anything special to make sure you get as high of a rating as possible from users?
It feels pretty amazing 😍 I love reading the reviews that come in and hearing how this little piece of software has impacted people around the world. It’s gathered far more reviews than I would’ve ever expected. One of the most gratifying sentiments that comes up is the various comments along the lines of “I’ve looked for an app like this for years and finally found what I was looking for”.
Many of the ratings and reviews were gathered by using Apple’s SKStoreReviewController requestReview() function. This is the one that pops up the little rating / review prompt from within the app. One mistake I see quite a lot with other apps is them prompting for a rating early on in the usage of the app, when a user might not yet feel comfortable judging it. To refrain from asking for a review until a user has a sufficient feel for the app, I keep a couple of persisted integers (stored in UserDefaults) that track the app launch count, and the count of “user engagement actions”: things like adding a book, marking it as started, etc. I call the requestReview() function when the app has been launched at least 3 times and the user engagement count hits a multiple of 10. These numbers are completely arbitrary, but they seem about right.
8) Reading List - The search is so good and I love all the information that is provided by it! Was it hard to find a data source that you could use? Are there any limitations that you need to work around?
Yeah, the Google Books API has been a very useful tool. It’s pretty easy to use, has a large catalog of books, and has a good search. But there certainly are quirks which I’ve had to discover and work around. One which stumped me for quite a while was the fact that the API rate-limits you if you lookup books by ISBN, but not if you lookup books by Google Books ID. This isn’t documented. This has implications when trying to supplement a CSV Import with metadata: you can only do it reliably if the import file has Google Books IDs, unfortunately. I’d love to be able to let users bring all their data over from, for example, a Goodreads export, but I can’t gather all the extra metadata and cover images during the import process as a result.
9) Reading List - I love love love the app icon! It’s the perfect mix between a book and a checkmark 😍 How did you come up with this app icon? Did you have other options you were considering?
That’s lovely to hear! When I was developing the first version of the app, I had this book/tick concept in mind, but my graphic design skills are nil and there’s no way I would’ve been able to create it. So instead I put together a basic flat representation of a book as the icon. When I came to releasing v2.0 last year, I wanted something that looked a bit more professional, so I took a sketch of the original concept to designer Michael Flarup, who put together this fab icon.
10) Reading List - What’s been the most fun thing about building and marketing Reading list? What’s been the most difficult?
I always thought I’d enjoy the technical side of app development the most: the coding, learning the frameworks, finding solutions to problems, etc. And whilst I do love that aspect, I’ve been surprised in how much I enjoy the the product design aspect too. Coming up with a clear and intuitive UI has often taken longer than the technical development, but it is very rewarding when an idea comes to mind and works well.
The single most difficult thing to develop was iCloud Sync: I had issues using Apple’s black box solution (NSPersistentCloudKitContainer) and so instead built my own iCloud Sync engine. I was working on that on-and-off for years! There are so many situations to consider – merge conflicts, network issues, account changes, etc – and it’s ended up being a huge amount of code. It’s also slightly terrifying releasing something that has the ability to go very wrong 😬 Luckily, I had a few really great beta testers who had large libraries and were willing to provide repeated rounds of feedback and logs for me to pour over. The end result seems to be robust and fast.
11) Reading List - What’s next?! Have any future plans that you can share with us?
I’ve got so many features I want to work on, I don’t know when I’ll get to them all! Next up, for v2.1, is a Statistics screen. This will show number of books read per month / year, number of pages read, average read time per book, etc. This is one of my most requested features, so I’m excited to be able to get this out to people at last. It’s in beta now, but I still have a bit of work to do to get it to a good level of polish.
After that, I’d love to work on the ability to record re-reads of a book. A flaw in my original design was to store the started and finished dates as single Date properties on a book object; I want to change this to instead store a list of reading log entries, but I still need to work out the UI for it…
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 has been working as a solo developer without having colleagues to turn to for advice. At my day job, if I hit some weird programming issue that I’m struggling to solve, someone will be around to provide advice or jump on a call to work through it together. I don’t have the same opportunity with my iOS work. I have asked quite a few questions on StackOverflow – this can be really helpful, but quite often the more esoteric questions sit there unanswered. I do usually get to a solution, but it can sometimes take a while.
The most fun part is having complete freedom to do whatever I want to do! Because I am not dependant on the app’s income, I don’t necessarily need to run it like a business and so I am free to engage in refactoring, or try out new frameworks, without needing to be focussed on the bottom-line. It’s also fun being the sole person responsible for taking an idea from feature request all the way to release.
13) Is there anything else you’d like to tell the indie dev community about you?
I can’t think of anything else, but I’m happy to chat to anyone in the community about anything! You can reach me on Twitter at @AndrewBennet 😊
14) Do you have any other indie devs that readers should follow / lookout for?
If they don’t already listen, I’d highly recommend the podcasts Under the Radar (Marco Arment and David Smith); Launched (Charlie Chapman); Swift by Sundell (John Sundell); and StackTrace (John Sundell and Gui Rambo). Having podcast content to dive into can be really informative when working independently. Outside of podcasts, I’ve found the posts by Becky Hansmeyer and Michael Tigas very useful. And a shout out to Ash Furrow, who’s independent book “Your First Swift App” was what got me started.
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 😜