This last summer (2015), I moved to Chicago with my girlfriend. She took a summer internship there, and my employer at the time encouraged working remotely, so I sublet my place in SF, and moved (halfway) across the country. Incidentally, 3 of the 4 developers on my team actually lived in Chicago, and our team worked CST, so the move actually made me less remote.
While I was there, I found that I was somewhat drifting away from my San Francisco friends. Our relationships had been predicated upon hanging out in person, which was made more difficult by the distance.
Typically, our relationships followed the following pattern:
Friend: What are you up to this weekend?
Me: Nothing definite yet, but I'm looking at X. Wanna come?
Friend: Sounds fun, let's do that!
Me: Any plans for the weekend?
Needless to say, without this weekly interaction, it was harder to stay in touch. I decided to make a conscious effort to check in every once in a while, but wanted something a little more involved than a weekly reminder to text each of my friends.
I wanted a solution that reminded me to catch up with people, but also wanted it to remind me to check in with them at differing intervals (e.g., I want to talk to my brother more often than casual acquaintances).
To solve those issues, I decided that the best way was to decide how often I would ideally talk to each person in my life. I quickly expanded this from "SF friends" to include my college friends (I went to school out east, so have little overlap there), my highschool friends, and my family.
While talking through this with my girlfriend, I ran into a bit of a moral quandry, namely whether creating this tool (and blogging about it) was too impersonal*. I defended it by arguing, "sales people use a similar approach to stay in touch with their leads", which reminded me that this is a perfect tool for networking, and staying in touch with former colleagues. So, I threw them into the mixing pot.
* Jury is still out
Once I had my list of ~80 people, I imported them to an excel sheet, and began the hard part of deciding "how often would I like to stay in touch with Y".
To make things slightly simpler, I limited my decisions to
- "Every other day",
- "Every 7 days",
- "Every 14 days",
- "Every 30 days (monthly)",
- "Every 90 days",
- "Every 180 days", and
- "Every 365 days".
Once I completed the categorization, I wrote a short VBA macro that generates a different random number each day (seeds the random number generator using today's date), then divided the "every X days" into that random number, only keeping the cases where randNum mod X = 0.
I ran a monte-carlo simulation to make sure I wouldn't have too many people on any given day, and realized I needed a numeric offset (as otherwise, I'd trigger large batches of ~40 people every 180 days). Lazily, I used the row number as my offset, which got me into trouble later**.
After a few days practice, and after talking to one once-a-monther twice in two days, I added a check to make sure I hadn't talked to them too recently ("too recently" defined as within 25% of their avg. contact time***). Since I can't pull this from people's phones, "last talked" is a column in the datasheet.
Lastly, to avoid having to scroll through 80 names daily, I wrote a short formula that pulls that day's contacts onto the first page, then added a button to update "last talked" dates once you finish that day. The button also has the incidental effect of clearing the page, courtesy of the minimum logic discussed above.
**In iOS, I auto-alphabetize it, which changes all subsequent rolls when you add new people.
***Technically, this lowers the "average contact time" slightly, but I didn't recalculate it.
Since I'm not in the practice of booting Parallels to launch Windows Excel on weekends (macro doesn't work on OS X), and wanted to dive into iOS development, I've started recoding it in Swift 2 so I can use it on my phone.
As of writing this, I've reached a "functional" prototype, which I use daily. Unfortunately, it is currently between builds (trying to build in a feature to import from contacts), so I cannot publish it in the App store in its current state. I'm going to revert that feature, and upload it soon. Incidentally, I was thwarted last time midway through submission by the monumental requirement of in-app screenshots, but I think I can overcome that this time around.
If you want the current copy, email me, and I can distribute it to you through other means. If you're really impatient, go to m.diawi.com on your phone, follow instructions to get your UUID and include that in your email.
For those of you who want the Excel version, I've put it up here. It only works on Windows (VBA Macros?), so apologies to those of you who use Excel on OS X (for many reasons).
- Revert Address Book import to get to App Store
- Finish iOS bare-bones development
- Learn how to format iOS apps