BEEP! BEEP! BEEP! You finally decided to turn off your alarm and get out of bed. As you groggily get dressed, you face your first decision: What should I wear today? If you’re a guy like me, your answer often is “whatever is on the top of my stack of clothes.” (Hopefully that stack is at least folded!) But in places like Boston in April, you face an additional problem: Which stack? Do you go with a long sleeved shirt or a t-shirt? Pants or shorts? As you get ready to head out, do you wear a coat, a jacket, or neither? Do you bring an umbrella, sunglasses, or neither?
So you start checking a weather forecast. You learn that the high today is going to be, say, 54, with a low of 36 at night. What in the world is that supposed to mean? Are you supposed to memorize what to wear for every set of high and low temperatures so that you can recall it while you stumble out of bed in the morning? Besides, do the highs and lows even matter? What if you’re not going to be outside at 2pm or 3am or whenever those extremes will be?
You eventually give up and decide to move to California, where the weather is predictable and you don’t have to make such complicated decisions. Sad!
My First Solution: Whiteboards
Recognizing these difficulties, I decided to proactively plan for this moment each day. As you might expect if you know me, my first step was to buy a whiteboard calendar and some more whiteboard markers. I wrote in the calendar dates and decided to record enough information to give myself a general temperature snapshot of the day as well as the results of those decision points. Accordingly, I wrote the temperature (using “feels like” temperatures to take into account wind) at four pre-determined times of day (8am, 12pm, 4pm and 8pm) when I might be outside. Then below that, I wrote what I should wear based on the median of those four temperatures, eventually settling on these breakpoints:
- 70s+: “0.5 layers”, t-shirt and shorts
- 60s: “1 layer”, long-sleeved shirt and pants
- 50s: “1.5 layers”, t-shirt, jacket and pants
- 40s: “2 layers”, long-sleeved shirt, jacket and pants
- 30s: “2.5 layers”, long-sleeved shirt, coat and pants
- 20s: “3 layers”, long-sleeved shirt, coat, gloves, scarf and pants
- 10s: “3.5 layers”, long-sleeved shirt, coat, gloves, scarf, pants and tights
- 0s: “4 layers”, two long-sleeved shirts, coat, gloves, scarf, pants and tights
For instance, here’s how my white board looked in April 2016:
Yes, that’s “sì yuè” or “fourth month” in Chinese at the top.
As you can see, this was especially useful a year ago in Cambridge, MA. We went from 60s on the 1st down to 20s two days later, stayed there until the 6th, and then went back up to the 50s on the 7th. There were so many wide fluctuations, by this point I had started adding exclamation points with any jump of 1 or more layer (20 F or more). In fact, in 2016, April was by far the most fluctuating month, either in terms of variance or simply the 50-degree swing in these daily median temperatures (between the 5th and the 22nd).
Still, this solution had some problems. First, I had to actually write down those forecasts in advance. Fortunately, I had (and still have) a to-do list app, Remember the Milk, to help me with that. To save time, rather than recording the upcoming forecast every night, I’d write out three days at once. But then the forecast would sometimes change by the time the day arrived; that rain that was on the forecast was pushed back or forward by a day, leaving me without an umbrella when I needed it or wasting my time bringing my umbrella around when I didn’t.
There was also still a memory aspect; I had to remember what “1.5 layers” and “3 layers” meant precisely. And it turned out that I wasn’t often outside precisely at the times I listed. This wasn’t a huge deal, but it would make a difference if it was super cold or rainy at 8pm but I wasn’t leaving home that evening. And finally, this didn’t really scale; the best advice I could offer someone else was to replicate my system with their own white board and markers. Grace wasn’t even really able to use it without a translation (we started using descriptors like “cold cold cold”), since she was most familiar with the Celsius scale.
My Second Solution: A Web App
Motivated to find a better solution, I’ve spent a few dozen hours over the course of the last month (March 2017) developing and testing a web app to solve this problem. Take a look here.
Here are a couple of screenshots I pulled as I was writing this:
Thursday was a nice day! Those glasses stand for sunglasses.
But then it snowed on Friday! See what I mean about Boston weather changing one day to the next?
As you can see, I’ve made some improvements from the whiteboard days:
- The app allows me to pick the times I’ll be outside, and it only pulls the temperatures and conditions at those times.
- I’ve correspondingly switched from computing a mean to a median. The coldest and hottest temperatures matter, since I’ll actually be outside then.
- The result now gives a list in words and icons of what clothing items I should wear. No more memory needed!
- There is also an option (“Current” at the top) to just get my recommended clothing based on the current conditions.
- And of course, anyone else can use it, too! The app pulls the location of your IP address (which actually was just built into the Weather Underground API), so it should apply wherever you’re at.
I hope this app can be useful to you as well! Here are some of the changes I’d like to add in the future:
- Multiple profiles. This app is geared towards my particular wardrobe, developed through trial and error over the course of a year and a half. Some people would prefer to wear more clothes, while others like my brother prefer to wear shorts all but the coldest days of the year. (I also wonder how much that attitude is a different solution to the same problem: wear the same thing all the time and just live with the consequences.) Also, all of the clothes I depict are men’s clothing, and it’d be nice to have a few women’s profiles, too. Ideally, I’d essentially be able to cluster everyone into a small number of different profiles, and newcomers could just pick their favorite based on simple descriptions.
- Making a mobile app. This would involve learning to code in a new language, but could allow for some personal features. While it would be instructive to learn that language as well (like I learned PHP to put this web app together), it’d be easier to team up with someone who is already experienced with mobile app development.
- Incorporating feedback. Ideally users could adjust the default profiles to their preferences and wardrobes with simple feedback like “I was too cold” or “I wish I had brought an umbrella”.
- Alternative locations. Currently, the app only lets you search for weather at the location of your current IP address; I figured this would be the setting most people would prefer. But if that doesn’t work for you, it’d be nice to give you the option to search from elsewhere. This would be the easiest change, but I’m not sure it’d be that useful at the moment.
- Better umbrella exceptions. You’ll notice above that the app recommends an umbrella for a snowy day. This is because the only factor currently going into the umbrella recommendation is the maximum probability of precipitation (at the times listed). It’d be nice to build in an exception for snow as well as super windy days that would make umbrellas more work than they’re worth.
But I’m mostly curious to hear from you! Is this useful to you? What features would make it more useful? Would you like to help me develop it further? Contact me either here, on Facebook or through the website’s About page.
Finally, I’d like to give a shout-out to Tom Mullaly, part of the IT team at the MIT Math Department. I didn’t start this project knowing any of the relevant languages or even where to start, and Tom was able to answer all of my questions along the way, offering numerous suggestions for improving the app. (It was his idea to add the icons!) I couldn’t have done this without him, or at least it would have taken twice as long and ended up half as good. Thanks Tom!