One Button Tracker

This is a dedicated topic for discussion of the One Button Tracker, a tool that has come up in a number of discussions.


The One Button Tracker is a maximally simple self-tracking tool that has been the subject of ongoing research by Thomas Blomseth Christiansen and Jakob Eg Larsen for many years, with me as a frequent kibitzer, supporter, and guinea pig. You can see a great short presentation of the idea here:

Let’s Make Active Self-Tracking Much Easier With A One Touch Device


You’ll notice in the linked video that Thomas is using a programable smartwatch as the OBT device. Since then (2015) there have been a number of advances. Thomas and Jakob have created two prototype versions, one using an Arduino board, the other using a CPB. Here are images of a couple of the prototypes:

1-Button Tracker

One Button Data

I’ve collected nearly 10,000 observations for my arrhythmia project using these prototypes, and they’ve been used in a series of academic and clinical studies.

Fortunately the process of recording observations and viewing the data is simple. When you plug the device into a computer using a USB cable, it opens as a drive. On the drive is a file: data.csv. And there’s your data, in a form that allows you to work with it using any spreadsheet tool. The table looks like this:

Screen Shot 2021-08-24 at 4.29.54 PM

The first column is the time, the second two columns I ignore, but they represent the force and duration of the button press.


Since One Button data is tabular data accessible in .csv files, any visualization tool can handle it.

I use a simple visualization scheme created by Thomas and Jakob for my initial review, and then work with the data to answer more questions.

Sometimes the three of us work together in an Observable Notebook that Thomas wrote.

What OBT Can Observe

I've used the tracker to record various kinds of observations, including emotions, cravings, and food. Others have tracked different things altogether. The instrument is flexible, in that all the work of specifying and then noticing the phenomenon is done actively, by my own brain, and the button press itself just records the time. It's easy to imagine other possible uses.

How to Get One

Unfortunately the One Button Tracker is research instrumentation. Each one is hand-assembled by Thomas and Jakob, including 3-D printing the case, so these trackers are in short supply.

Fortunately, @gedankenstuecke figured out how to program a commercially available and not very expensive (£20) puck.js. Bastian describes his tracker in this forum thread:

Cheap & open source one-button tracker

@esenabre used the puck.js and Bastian’s code to apply the One Button approach to track whenever he thought about his smart phone. He describes his project here:

Self-research on smartphone use / withdrawal.

Whenever the One Button shows up in a self-tracking project, it always sparks comment and interest, and of course questions. These are typically a digression from the topic where it arises - but an interesting one. So I created this topic specifically for discussion of all things One Button.


Thnx for starting the thread :slight_smile:

Regarding the puck.js button tracker, my experience has been overall good for a sort of “good enough data” approach tracking my subjective impressions during the intervention you refer to above. Regardless of my topic of research in that case, I would summarise it in terms of pros and cons with the tool.

Among positive aspects, it’s a relatively low-cost technology for locally storing the basic data of pressings - where so far I only paid attention to timestamps and time duration. Its small size, simplicity, touch and led light when pressing it made the tracking very intuitive and immediate (as compared with opening an app for example). And having the basic functions at Puck.js One Button Tracker for locally downloading the data to my PC and cleaning it afterwards was a pro as well.

Regarding problems and limitations, on the one hand a basic one for me is that it requires checking / cleaning up the data and then finding a way to visualize it (in my case I needed help to plot it on a notebook, similar to what you share with Observable). On the other hand I experienced two types of technical issues. The first one is that for a specific long period in which I did not download the data (around one week) when I tried it was not there, or at least the download tool failed. The second one is that it seemed to generate a series of suspicious false positives, which I could confirm (when merging the data from different weeks) that were not deliberate pressings.

Regarding this second issue, I just did a quick test that I think leads to an obvious but important recommendation for future uses of the puck.js: after approx. 24h just having it in my jeans pocket (without intentionally pressing it) I got 28 “false pressings”, whereas during the next 24h having it in my shirt pocket I only got one. I paste below the data, which indicates that it’s important to have the puck in a dedicated pocket away from movements, frictions or other things to reach out next to it:

While in my jeans pocket:

Mon Aug 23 2021 11:29:01 GMT+0000,-,1.18356323242,26.25,0.15776952107,-6163,4535,932
Mon Aug 23 2021 11:29:02 GMT+0000,-,1.1865234375,26.25,0.09955406188,10996,4760,3305
Mon Aug 23 2021 11:29:55 GMT+0000,-,7.6648864746,26.875,0.07001717885,2502,-7491,-8114
Mon Aug 23 2021 11:29:57 GMT+0000,-,2.08737182617,26.875,0.07436943054,1850,-3859,-3743
Mon Aug 23 2021 11:36:17 GMT+0000,-,379.68249511718,28.25,0.05471976598,4776,1430,6608
Mon Aug 23 2021 15:51:04 GMT+0000,-,0.35195922851,30.625,0.06856203079,5547,5194,1849
Mon Aug 23 2021 15:51:28 GMT+0000,-,7.4807434082,30.625,0.06525564193,5438,6382,1351
Mon Aug 23 2021 15:52:20 GMT+0000,-,12.05740356445,30.375,0.06445503234,3815,9563,4003
Mon Aug 23 2021 16:07:49 GMT+0000,-,927.91513061523,29.375,0.06444295247,8858,9392,1853
Mon Aug 23 2021 16:07:49 GMT+0000,-,0.22274780273,29.5,0.1156167984,4647,7498,162
Mon Aug 23 2021 16:08:30 GMT+0000,-,0.76147460937,29.5,0.09709835052,-4769,8296,649
Mon Aug 23 2021 16:12:51 GMT+0000,-,0.37197875976,31,0.07020235061,6007,-5254,-356
Mon Aug 23 2021 18:02:43 GMT+0000,-,0.41162109375,30.375,0.07618665695,-283,6702,-1316
Mon Aug 23 2021 18:02:44 GMT+0000,-,0.71401977539,30.375,0.06409311294,-1626,13740,-4286
Mon Aug 23 2021 18:03:37 GMT+0000,-,6.85656738281,30.125,0.06674448649,-10244,8094,2689
Mon Aug 23 2021 18:04:18 GMT+0000,-,37.21185302734,30.125,0.06598297754,-3801,1383,1874
Mon Aug 23 2021 18:04:26 GMT+0000,-,7.01187133789,30.125,0.0693321228,-4065,1357,1384
Tue Aug 24 2021 06:21:07 GMT+0000,-,0.42346191406,26.375,0.07258224487,-4477,-6147,2082
Tue Aug 24 2021 06:35:22 GMT+0000,-,399.30313110351,29.375,0.06909370422,-5959,1274,4816
Tue Aug 24 2021 06:36:56 GMT+0000,-,4.91387939453,29.5,0.06940364837,-3920,-1140,7046
Tue Aug 24 2021 06:37:37 GMT+0000,-,34.96942138671,29.625,0.07127888997,-3466,-1038,7249
Tue Aug 24 2021 06:37:58 GMT+0000,-,20.11157226562,29.625,0.06746006011,-3743,-1112,7247
Tue Aug 24 2021 06:49:42 GMT+0000,-,13.62115478515,30.5,0.06981833775,-1956,-4889,6283
Tue Aug 24 2021 06:50:11 GMT+0000,-,18.96282958984,30.75,0.07220458984,-2157,-4769,6280
Tue Aug 24 2021 07:02:10 GMT+0000,-,9.9536743164,31.25,0.06614208221,1190,-4697,6534
Tue Aug 24 2021 07:42:45 GMT+0000,-,1.09201049804,29.625,0.07003911336,509,6881,3739
Tue Aug 24 2021 07:44:54 GMT+0000,-,128.79541015625,30.25,0.06646029154,-8519,6411,-4225
Tue Aug 24 2021 07:58:52 GMT+0000,-,692.1457824707,29.5,0.09462356567,15518,10085,3273

While in my shirt pocket:

Tue Aug 24 2021 17:34:49 GMT+0000,-,0.73663330078,30.625,0.0682067871,-2364,-8253,1207

1 Like

The exact design of the button hardware turns out to be very important. Even though the underlying tech is generic (buttons are everywhere), for these uses it matters a lot how sensitive the button is and how it is exposed. Thomas and Jakob suggested recently that maybe it’s possible to just build a case for the puck.js to recess the button; maybe this would handle the problem with accidental presses, at least as a stop-gap solution.

In terms of best hope: one of the motivations for Thomas and Jakob getting into hardware in the first place was realizing how many special requirements self-research had. Really, we want instruments that never, ever lose data, and that have zero failures at the recording stage (accidental presses or presses that don’t record a time). The low tolerance for failures in making observations wasn’t totally obvious at first: all instruments have failures. But experiencing instrument failure, even occasionally, in a self-tracking project is demoralizing. @esenabre you are a professional researcher, and I’m sure you’ve had instrument failure before. Maybe this made it not so frustrating? Or were you pulling out your hair?

In my case the use of the puck wasn’t related to a very urgent or critical health issue, but rather seemed a good “low tech” approach for tracking something I’m very curious about regarding my habits / behaviour, and in parallel to gathering quali data in observations - for connecting both sources afterwards. I was naive in assuming the button would work 100% as expected, and even when realising the failures, all the craft work at the end of the process was still valuable to me and contributed to a better understanding of the experience.

Probably it wasn’t that frustrating also because I saw it as a first methodological approach (which I should have prepared and tested better if I could redo things) and in this sense part of my self-experimentation. In any case, I still see it as an useful tool for future interventions (especially after realising the reason for failures), and although I’m not very familiar with this type of instruments I also see it now as a way of “being aware” about specific events as they happen.

1 Like

I have a replacement key fob for my car that has false button press occurrences. I even shortened the height of the panic button below the case and still get alarms. I believe the problem is due to a softer (vs OEM) conductive material for the buttons and could be solved by requiring more pressure on the button. If the button records the force of the push, then it may be possible to screen out false positives by setting the threshold higher.

1 Like

I get zero false positives on the Totti Lab version, due to the recessed button. The newer prototype is harder to push, I actually didn’t like it as much as the previous one, and Thomas and Jakob told me that the button has a layer of material that has a different density. This is a design variable that turns out to be very sensitive to personal preference. I like the lighter touch and didn’t get any false positives. We’ve been talking quite a bit about how to get it out there, maybe using this an an example of a good approach (mentioned in the self-research chat this week):