Introducing Drops

I called this website “a devlog,” but haven’t posted about anything I’m working on. Let’s fix that!

Screenshots. 1, chart, entry list, and buttons to log food. 2, list of foods, including teas, coffee, and soda. 3, view for adding new entry, controls for size, decaf, and date.
An early build of the app, showing off the home screen and some of the food logging flow.

Drops is an app for tracking how much caffeine you’re consuming and visualizing that information over time. It integrates with Apple Health, so that the food and drinks you log show up in other apps and vice versa. It works great by itself or for people who use a bunch of health apps.

I’m still early in development, although not quite as early as what you see here. The above screenshots are from the first build I sent to TestFlight, near the middle of March, which is when I started working on it in earnest. Even though I’ve made more progress I wanted to start at the beginning, which I think will make things easier to follow. We’ll catch back up to the present… eventually.

Screenshot of git commit message in a terminal window. Content reads: Initial commit. This has gone far enough that I should probably start versioning my changes. For now what I have is a rough prototype that stores caffeine and hydration values in memory, but not much else. 34 files changed, 1643 insertions.
You have to start somewhere. In my first commit the app was more of a toy than anything else. I hadn’t even linked in HealthKit yet!

This post is the start of a series, and in this first one I want to quickly cover why I’m making this app at all. Then, in the future, I’ll be going into more detail about what the app does, specific parts of the UI, how I implemented them, and the design tradeoffs I made during development.

To get a big reason out of the way, I simply think this app will be useful. Lots of people consume caffeine, but I doubt many know how much. I also feel like a lot of people (myself included) have confirmation bias about how caffeine affects them. Tracking this is a lot of work. Really, anything that requires someone to remember to log what they do every day is a lot of work; but, as an iPhone app, Drops is in a great position help. Mobile apps are almost always nearby, and can both actively (with notifications) and passively (by just existing one someone’s home screen) provider reminders to help with this.

Of course, accumulating a big pile of data is often its own problem, which is why my other focus is on making good use of this information. “Good” here is subjective, but I’m aiming to do more than just show an estimated half-life (although this is all that I have implemented currently). Those charts are fun to look at, but the data isn’t very useful in isolation, so one of my challenges will be to make it actionable. I want this app to be a tool that helps people establish or reinforce habits, without being too prescriptive about what those habits should be. I do have some ideas for how I want to achieve this, but that will have to wait for a future post.

A more personal reason I’m doing this is that I haven’t been an independent developer for a long time (the last app I published was an iOS client for CloudApp, a now defunct file sharing service). I’m sure a lot has changed since I’ve been gone, but I’m not really sure what it will be like. I’m also coming back from a bit of burnout, and I want to find a way to continue making a living with computers, but without the negative effects to my health. Suffice it to say, I want to do something where I can take it slow at first, and this seems like a project that won’t become overwhelming.

Last, I’m using this as a chance to have some fun. My core technical problems are fairly well understood, but also offer a lot of room to explore. Looking up how to plot a half-life curve took me less than a day. Figuring out what half-life coefficient to plot, and how to best style and annotate these plots, is a problem I could keep going back over for months. Likewise, I know how to work with SQLite (although it has been a while), but there are dozens of ways to design a database schema. How I approach this also needs to account for what I actually want to do, which in turn means thinking about parts of my UI perhaps well before I’m going to implement them. There’s also a lot of frameworks I’ve never personally gotten to try out before (like Swift Charts, CloudKit, and HealthKit) and I’m excited to take them for a spin.

So what I hope I have here is a project that’s small enough to ease me back into things, large enough to have interesting challenges (which will give me something to write about), and useful enough that people will want to buy it. I’m not sure if that’s asking for too much or not, but I guess I’ll find out!

Subscribe to A Devlog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe