It’s been two weeks since the last update. During spring break last week, I made some good progress on the software development, and I’ve also given some more thought to the interventions that the system will use.
It was a fairly productive week for the prototype software development. Here are some of the highlights:
- I did a lot of work to refactor the software so that it will be easier to build interventions later on. This was an unfortunate amount of work for relatively little progress, but it was necessary. As an example, previously I could not have built something that said, “When the distraction score hits this level, do something,” and now I can. So that’s pretty big.
- I got the intervention window working. This is a window that intentionally tries to get in your way if you get too distracted. The goal is not to prevent you from being distracted. Instead, the goal is to make it more unpleasant and more difficult to distract yourself when you become distracted, so that you’ll get back to work. This window is the placeholder for all of the later interventions I’ll build in once I make some more progress. I would say that this is the primary interaction that the system uses.
- I started working on the web service aspect of the system. Now, you can visit a website to register for an account that you can use to log in through the app. Ideally, you could register for an account through the app, but it’s much quick to build a website to do it. Since time is my primary limiting factor here, I’m generally choosing the fastest (but not necessarily technically best) options for the prototype.
- I decided to build the web services on SSL. This decision is similar to the last one: it’s the fastest way to get a base level of security into the system. The other options would involve cryptography and hashing, but unfortunately I don’t have time right now to work on those.
- This week, I will be working on the sync aspects of the service, so that you can publish your data to the service as well as subscribe to your teammate’s data. Ideally, there would be an awesome way to do this using web sockets or XMPP or something cooler, but instead I’m using the relatively lame (but quickly prototypable) method of polling via JSON.
Here’s a video of the intervention window as it currently works:
Lately, I’ve been thinking a lot about the idea of throttling. I don’t know that I’ve verbalized it so far, but I think that Obtract aims to throttle your distractions. It’s not about stopping distractions entirely, but it aims to put a barrier up to becoming distracted so that it takes more effort (i.e., has a higher biocost) to distract yourself.
For breaks, the opposite can also be true. By increasing the biocost of productivity, the system could push someone toward a distraction or toward a break.
I made a chart to show how interventions might work:
To summarize, as the distraction score drops, increasingly complex interventions will be used. Likewise, as the amount of time since the previous break increases, increasingly complex interventions will be used.
Now to build those interventions…