Ep. 21 — Seven unexpected lessons when building HomeSweetHome


First things first. Let’s start with Why?

Why? During shelter-at-home, I have found it too easy to turn a 20-minute trip into a 1-hr wandering in Wal*Mart because my brain is starting to crave away time. So, I made this tool to help ourselves better manage time.

How? Once installed, it automatically starts a timer as you leave your home wifi network (you don’t need to manually launch the app or press any buttons).

What? Every 15 minutes*, it will remind you using a notification with an unique beep. Once you return home, it will record the trip time so you can see daily/weekly trends.

Extra? I have chosen not to use GPS location** or have a login system, so your data remains private and anonymous.

The Development Process under this unique situation

One of the most important decision was picking a scope that is useful, easy to understand and can be built very quickly. The clock was ticking and it was the first time I tried to build something from zero to AppStore in a week.

It’s a pretty ambitious goal, but it’s worth a shot. So, I went to work, spending every hour outside of my day job on the app, making quick decisions and hope that I won’t run into showstoppers I can’t overcome.

What have I learned?

  1. Purpose-driven work + short delivery target + going solo is a potent combination for software engineers. It’s extra fun to work in this setting.

a) Google Play said it had a major backlog and would take 7+ days to review submissions, instead of the normal 1 day turnaround. Ouch! I just coded my hearts out, got stuff working in record time to help the public. Now, I needed to put it in the freezer for 7 days and hope for the best? (Pro tip: Tweet to Google Play account publicly. It may work for you too.)

b) Three days after their initial approval, Google sent me a shocking email to tell me they have delisted my app because they don’t allow apps tied to the pandemic! I ended up creating a new submission with a new app name and crafted wordings carefully in the app description and got lucky the 2nd time. Phew! (Moral of the story — Don’t give up: eventually you will figure it out. There is no short-cut. The language you use matters.)

c) iOS AppStore reviews, which were historically slower than Google Play, gave me numerous pleasant surprises. During the pandemic, they stepped up to offer ultra-fast feedback (within 1–2 hrs!) and offered useful details when my builds crashed (yeah, this tends to happen when doing things too quickly :-)) — Pro tip: Don’t get discouraged if the Beta reviewers reject you. They are handled by different people. It’s still possible to get approved for your production release.

On the technical side, there were a few unexpected lessons too.

  1. How to get iOS to auto-launch my app when the user leave home? One of my core design point is that the Away Timer should be started without any user touches (i.e. no need to manually launch the app or keep it in background.) iOS has very handy Location APIs called startMonitoringVisits and startMonitoringSignificantLocationChanges. Check them out. These monitors stick around even after reboots.

I enjoy learning, creative engineering & reading. Evergreen-labs.com, Vaccine-Ontario.ca, TravelShoppingBuddy.com, Sidekick-app.com, Tangerine.ca