Snoozer
team
solo project
role
developer
UX/UI designer
timeline
summer 2024
12 weeks
tools
tensorflow
html/css/js
illustrator
Background
At one of my workplaces, I was required to install an application called Timedoctor. This application tracked all my behavior on my laptop in real-time: it could sense whether I was active or idle, what programs I was using, what file or tab I had open. While it’s presented as a way to ensure employee productivity and accurate track working time for paychecks, it felt really dystopian and invasive. I remember spending so much energy stressing about appearing productive by switching tabs and clicking random things that I didn’t even end up being any more productive than without it.
When it comes to digital privacy, especially concerning more serious matters like crime, some may argue: if you’re not doing anything wrong, you have no reason to mind being watched. I disagree to an extent. Privacy is essential to a feeling of comfort and security. Invading it for the sake of preventing “bad” behaviours will only discomfort everyone, and those who intended to commit such acts will find ways to circumvent it anyway.
Even now, the line between too much and too little surveillance continues to shift. Facial expression trackers in public spaces, mouse movement trackers, eye trackers, etc.—these are all existing inventions currently in use. While they have supposed benefits for worker productivity, I argue that they contribute to the toxic “hustle culture” aspect of capitalism. They’re more efficient at making people put on a facade of ideal behavior than addressing root issues causing misbehavior. In my personal experience, overwork and the resulting exhaustion are the biggest obstacles to my productivity. Forcing myself awake during work hours only temporarily addresses the issue, and exacerbates it in the long term.
Problem
I wanted to raise the question: what are the consequences of these new AI/ML technologies being made—who are they really benefitting? When they solve problems, are they treating symptoms or the cause—or even contributing to them?
Then, I asked: how can I build an application using AI/ML technology that makes things…objectively worse?
And thus, Snoozer was born.
Goals
Force the user to stay attentive when they nod off
Create an environment that upholds toxic standards of productivity
Draw attention to how AI/ML affects digital privacy and surveillance
Concept
Snoozer is a satirical machine learning project that criticizes hustle culture and the toxicity of an environment that prioritizes productivity over health. A machine learning model trained on my facial expressions detects when I start nodding off.
As long as my eyes are closed, the program detects that I'm "asleep" and moves the slider forward, going backwards while I'm "awake". If the slider is filled completely, the program sends a full-screen image and auditory jumpscare to my screen.
Hopefully, this will shock my system enough that I will be startled awake. Despite seeming innocuous or even helpful for maintaining focus, Snoozer actually exacerbates the underlying issue of overworking.
Design
The branding features a playful nighttime color palette. I wanted the UI elements to be rounded and chunky, contributing to a "cutesy" feel that would juxtapose the more sinister intention behind the app.
The primary interface itself is simple, featuring a collapsible camera feed and sleep meter with the majority of the options in a separate screen. I created exploratory screens in Figma and Illustrator.
Prototyping
Version 1: Teachable Machine and Glitch
I took photos of myself in various "asleep" and "awake" states and uploaded them to Teachable Machine. Given the scope of the project, I was unable to amass a giant dataset of photos of faces and label them all. Instead, I curated a very clean dataset of my own facial expressions. While it was functional in certain contexts, it was not universal enough for practical use.
I deployed this version on Glitch, using p5.js for my webcam processing and interface. This setup was unable to be overlayed on other websites, however.
Version 2: Tensorflow.js and Chrome Extension
Considering the shortcomings of version 1, I integrated the Tensorflow.js Face Landmarks Detection model for a more universal approach to facial tracking. To detect a sleeping expression, I calculated the distance between the top and bottom of the eyelids relative to the distance between the corners of the eye.
I developed a popup for the Chrome Extension that would inject the Snoozer interface as an element directly within the current webpage's DOM. I wanted a persistent overlay with a custom shape, not a popup that would close when clicked out of, and I wanted the overlay draggable around the page.
This was the final development structure and UX flow to accommodate Snoozer's features. A major challenge was programming tab detection to automatically activate/deactivate the Snoozer interface when tabs were switched. I used the Chrome Tabs API and a background script to handle listening to tab events.