Redefining Task Zero

Task Zero was originally about materialising a person’s digital task list, showing only one task per day. This helps he/she does his/her tasks more efficiently. But hold on…

Living in the society that values high efficiency and stresses success, one may tend to forget there is life beside work.

Task Zero, now, is about the task before the first. Task 0: Treasure your personal life.

Don’t put off those tasks that cultivate your soul. It’s not about booking a flight, it’s about going home. It’s not about getting the groceries, it’s about cooking it for someone.

With this desktop device, I hope to convey to those getting swept away by a fast-paced work life that: the things that might make you smile are those important, not urgent and seemingly mundane tasks.

urgemt diagram-01.png

Introducing Task Zero


Please find here my Instructables Tutorial!

TAZZERO – PA’s Final Project Outline

Inspired by the idea of One Big Thing and the physical form of Tamagotchi, TAZZERO is a task management device that counts down the task one needs to complete each day, which is only one. The aim is to get the sum to 0. If a task is not finished by midnight, a new task will replace the old one and add +1 to your clock.

My rough outline can be found here! 🙂


PA: Final Ideas + Wifi 1-3


  1. One Big Thing + Tamagotchi
    Problem 01: Task Management.
    I found John Zeratsky’s app, One Big Thing, on Medium a few years back, and had tried it but to no success. The insight was that to-do lists does not work and are inefficient to some as they can never complete them by the end of the day. However, if you set one as the most important thing to do that day and check that box, you will feel great.
    Solution 01: Plus + Minus –
    Inspired by the idea of One Big Thing and the physical form of Tamagotchi, Plus + Minus – is a task management device that counts down the task one needs to complete each day, which is only one. The aim is to get the sum to 0. If a task is not finished by midnight, a new task will replace the old one and add +1 to your clock.

  2. Clock + Weather Indicator
    Problem 02: Too Hot/Too Cold

    New England’s weather is extremely unpredictable, and the iPhone that I own does not show at first glance the weather of the day. I have had so many times going out with too few or too many layers, and the rest of the day is a “total disaster!” (to borrow Allan’s words from Affirming Artefacts :P).

    Solution 02: Time Temp.

    Time Temp. is a nightstand clock combined weather indicator that lets one knows the time and weather of the day through ambiance lighting and sound.
    When it’s sunny, the LED light will turn red; when cloudy, blue.
    When it’s raining, the speaker will plays a loop of raining sounds, when windy; whistling wind sounds.1113_idea02

  3. Alarm Clock + Podcast
    Problem 03: Waking Up

    Being woken up from the same looping sound has made me an expert in snoozing the alarm. However, what if the sound is a informative podcast session from my favourite station?
    Solution 03: InformaClock
    InformaClock is a Mid Century Modernist Alarm Clock that wakes one up with an episode from one’s favourite podcast station. The brain will start to work as it is being woken up by intriguing information. I have been listening to The Inquiry from BBC World Service Radio and enjoying it very much. Hopefully, this will motivate me to get out of bed.1113_idea03

An important part of all the ideas above is the sending and receiving signals to trigger all the outputs I desire. I hope wifi will be part of the solution…


Lesson 2 serial monitor.png

Get Back! Brooch


1. Team Ahaar – The Get Back! Brooch
Oomung, Phuong Anh, Tzu-Ching and André

2. Ideal Product:

Get Back! is a brooch/pendant that visually and audibly shows the comfortable amount of personal space by the user. It uses a built-in infrared sensor to judge distance, and a Neopixel to show different colors. With these pieces, the product would judge the distance between the user and another person, and glow green to indicate acceptable, yellow to indicate discomfort, red to indicate anxiety, and pulsing red to indicate panic depending on distance. Ideally, it can also:

  • Produce sounds when others are getting too close to the wearer
  • Have an on/off switch
  • Allow the wearer to set his/her own comfortable distance

Ideal User Scenario:

We envision this product as a discreet, daily wearable for those with crowd anxiety disorders, personal space issues, or women subject to subtle harassment by unknowingly aggressive people. This product would be switched on continually throughout the day, and act as a social advocate of sorts, alerting others to their behavior in a subtle way without pressuring the user to do so themselves.

A user scenario could be a young man with anxiety who wears the product as a lapel pin on his suit jacket. During a normal day at the office, whenever a colleague got uncomfortably close, the product would flash and alert them to slightly back away, at once restoring personal space for our young man and avoiding embarrassment for his colleague.

Where the Product Would Be Sold:

This product would be marketed as a “smart” fashion accessory, and could be sold at premium menswear clothiers, women’s fashion boutiques, and department stores.

3. The technical steps to our prototype:

  1. Design the look
    IMG_6177 copy.jpg
  2. Design the circuit diagram
  3. Code it
  4. Get the materials: Sharp IR Distance Sensor, Neopixel ring (12 x WS2812 5050 RGB LED Ring), plastic case for the dome, 3D model design and some wires
  5. Construct the device
    • Solder wires
    • 3D model and printed case
    • Attach everything together


We had some run-ins with the sensor not working properly as it was placed behind the transparent dome. Thus, we decided to sawed the front off. And it worked!!


Our circuit

4. If given more time on this project, we would:

Work out a way to hide all of the wires and it would have a small battery pack encased with the Neopixel.

5. By building this project, we learned:

How to design a form with the intention of a circuit board inside. We also learned to troubleshoot and try to fix the problems that came up along the way (both in coding and the process of making the casing and attaching all the parts together.

Oomung’s experience: Every time the code was iterated upon to solve old problems, new ones arose. This experience reaffirmed the difficulty and importance of coding and bug-testing. The key element for me was understanding the use of arrays to generate an average ‘smooth’ input from the raw and glitchy analog input. Also, understanding the circuit board and electronic components helped in form development, wherein our design fit together all the pieces while maintaining our core sense of aesthetics.

6. Other potential applications

  • Mounted on a wall next to paintings in a gallery, to let people know if they’re being too close
  • Late night protection wear on the back: warning people with bad intention that the wearer is aware they are there.
  •  Don’t touch my hairpin

7. Our code

/this code requires the Sharp.IR code libary and a sharp ir sensor, the VFL has them to lend out
//this specifies what model and pin the sensor is on, i called it sensor
SharpIR sensor(GP2YA41SK0F, A2);

#ifdef __AVR__
#include <avr/power.h>

#define NUM_LEDS 12

#define BRIGHTNESS 5

const int numReadings = 50;

int readings[numReadings]; // the readings from the analog input
int readIndex = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average

//you all know what this is

#define PIN 6

//specify the which type of neopixel strip this is, RGBW
Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800);

void setup()
strip.begin();; // starts with all the pixels off
// initialize all the readings to 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } } void loop() { // subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = sensor.getDistance(); // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1; // if we're at the end of the array... if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;

// calculate the average:
average = total / numReadings;
// send it to the computer as ASCII digits

delay(1); // delay in between reads for stability

//an if+else reacting to 3cm-10cm distance with a specific color for every individual pixel

//first led
if (average >22) {
strip.setPixelColor(0,strip.Color(0, 217, 0));;
} else {
strip.setPixelColor(0, 0);;

//second led
}if (average == 22) {
strip.setPixelColor(1,strip.Color(10, 217, 0));;
} else {
strip.setPixelColor(1, 0);;

//third led
}if (average == 21) {
strip.setPixelColor(2,strip.Color(30, 190, 0));;
} else {
strip.setPixelColor(2, 0);;

//fourth led
}if (average == 20) {
strip.setPixelColor(3,strip.Color(60, 150, 0));;
} else {
strip.setPixelColor(3, 0);;

//fifth led
}if (average == 19) {
strip.setPixelColor(4,strip.Color(150, 120, 0));;
} else {
strip.setPixelColor(4, 0);;

//sixth led
}if (average == 18) {
strip.setPixelColor(5,strip.Color(150, 100, 0));;
} else {
strip.setPixelColor(5, 0);;

//seventh led
}if (average == 17) {
strip.setPixelColor(6,strip.Color(150, 70, 0));;
} else {
strip.setPixelColor(6, 0);;

//eighth led
}if (average == 16) {
strip.setPixelColor(7,strip.Color(150, 60, 0));;
} else {
strip.setPixelColor(7, 0);;

//ninth led
}if (average == 15) {
strip.setPixelColor(8,strip.Color(150, 40, 0));;
} else {
strip.setPixelColor(8, 0);;

//tenth led
}if (average == 14) {
strip.setPixelColor(9,strip.Color(180, 20, 0));;
} else {
strip.setPixelColor(9, 0);;

//eleventh led
}if (average == 13) {
strip.setPixelColor(10,strip.Color(217, 0, 0));;
} else {
strip.setPixelColor(10, 0);;

//twelvth led
}if (average <=12) {
strip.setPixelColor(11,strip.Color(0, 217, 0));;
} else {
strip.setPixelColor(11, 0);;



Misty Forest Pillow

For the final prototype, I returned to the original idea of recreating a misty forest scenery. Hand sewing the first prototype (Albert the monster) actually helped me come up with this idea for my pillow:


So let’s go ahead and do it!



1/ Choose the composition for each layer of silk
2/ Sew them in and layer them on top of each other
3/ Use another piece of black felt for the back of the pillow


4/ Layer them in this order to make sure when you flip it inside out,
it will create the fading effect of the layers with the black sheet on the backside.
(I had to undo it because I layered it wrong)
5/ Sew 3 sides together and trim off the extra seam

Above is the seam allowance I ended up with (1/2″).
I wanted to trim more, but I was afraid it will tear off, so I kept it around half an inch.

And as you might not have noticed, I
6/ Stuff(ed) the fibrefill in



7/ I soldered these (one with 1K Ohm resistor and the other none)
to make sure one light is much brighter than the other.
8/ The one without a resistor became very hot,
so I unsoldered it and change it to a 220 Ohm resistor.
9/ Don’t forget heat-shrink tubing in all your joints
(I did and had to unsolder it again…)
10/ Solder the wires to this battery pack:
Blue (of both LED) wires to black (of battery)
Black (of both LED) wires to red (of battery)

11/ Sew shut the last side of the pillow


And there was light.



This is the original inspiration for my design:


And sorry for long post, here’s a Dark kNight potato:


soft pillow to freaky plush monster





So my plan making a nice soft pillow didn’t go so well.

I used thin strips of felt and stuff it together with fibrefill inside the silk pillowcase to hopefully illustrate a nice hazy night scene of the forest (like the photo to the left).

But those stripes look like worms and I couldn’t make a nice composition because everything was too soft. And so I crossed that idea out and redo the design.


It looks like a cute ugly blob I would want to hold at night, so thus, the construction begins.

upload2.JPG upload3.JPG






(1) I cut out the eyes and pillow case +  sewed the iris to the eye.

(2) Positioned where I want the eyes to go, hand-sewed them on + took a photo for reference.

(3) Hand-sewed & machine-sewed the pillow case. Stuff the fibrefill in

(4) Work out my light










Look at him; he has a heart :’) –>>

What I like about this design:
Contrast between two fabrics is shown

What I think I can do better:
My hand-sewing & machine-sewing techniques. Be smarter with lights.

The Nightlight monster at night:


  1. Fatter monster
  2. Add 2-3 more lights
  3. Reduce length of wires
  4. Close up Albert. (Yea, he’s Albert now).

Hazy Night – Plush Nightlight

This photo really is the start of it all.

My Inspiration board curates a more comprehensive selection of photos that can better illustrate my idea, if you’d like to take a look.

Some of the sketches I had after browsing in the black hole of beautiful pinterest pictures:



2. Tiny Cubic Lamp:


“Enveloped in darkness, there is my nightlight. That which would be for those who hve trouble falling asleep. Its softness and hazy glowing light will give them comfort, while the rhythmic glow relaxes them. The nightlight encourages a tactile experience–holding and touching softness–in order to assuage anxiety, stress and discomfort of the night.”

That would be my illustration if I had to describe my nightlight. Hopefully, I can make it as nice as it sounds in my head.

Adruino Lesson 3 – PA

Digital Input:

Serial Monitor:

Two Buttons One LED:

My Code:

const int buttonOn = 2; // the number of the pushbutton pin
const int buttonOff = 4;
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState1 = 0; // variable for reading the pushbutton status
int buttonState2 = 1;

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonOn, INPUT);
pinMode(buttonOff, INPUT);

void loop() {
// read the state of the pushbutton value:
buttonState1 = digitalRead(buttonOn);
buttonState2 = digitalRead(buttonOff);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState1 == LOW) {
// turn LED on:
digitalWrite(ledPin, HIGH);
if (buttonState2 == LOW) {
// turn LED off:
digitalWrite(ledPin, LOW);