5P Iteration_one

5P key values

  • daily based, multi user, interactions, physical

Iteration One


Users need to cooperate to live the life. Total 5 users: eye *2, nose * 1, mouth *1, ear *1.



All wear the masks, from waking up to going to bed. Camera follows the whole process.


Country doesn’t have all the resources, and the world operates by countries exchanging resources. This mask let users to experience this in an extreme way. After the experience, users will have unexplainable binding.



Eye – able to see the world, and can use camera to pass down what he/she sees

Nose – has fan attached to the belly, provide air circulation and can change the smell of the air

Mouse – has opening to get food, and pass down what he/she gets

Ear – hear “outside sound” with radio and podcast



A button’s desire and personality.


And this is the sound that button wants to deliver. It wants to share what it hears, and thinks maybe the sound can comfort the soul of all the other buttons.

WTD – 1

Wearable Electronics and Smart Textiles: A Critical Review by Matteo Stoppa and Alessandro Chiolerio

  • smart material – sense + react
  • biomedical!
  • Fabric-based antennas (cute)
  • bio-sensor!

Losing the Thread by Virginia Postrel

  • forgetting about textiles, remembering about textiles
  • to contrive function and beauty from the simplest of elements.

Interesting to think about what does “weave” mean – the idea of designing something with simple unit in a structural way to achieve something unforgettable.


My keywords: bio, comfortable yet strong, mechanical, puppet with emotion, readymades, armor


Mood board <3

Follow Laura’s board wearable on Pinterest.

amplify the unnoticeable

Yesterday I was chatting with a friend about how to identify ourselves – are we programmer, designer, maker, artist?

He said he was not and never will be an artist. He wants to make things that solve problems.

And I said “But my projects never really solved a problem. They are mostly fun and weird and just bring laughs to people. So I’m just generating useless and needless garbage to the world?”

The world is already flooded with media garbage and I’m just one of the contributor?

The thoughts depressed me for a few minutes, but that’s it.

I think I can just keep making something that amplifies the unnoticeable and stirs people’s minds. And maybe it would solve someone’s problem. Who knows? There are 7.4 billion people on the earth. And there are also animals. And there is also consciousness existing in the interstellar…


MASK v2.0 – Unity!

Unity3D version of MASK!

Since it’s much more stable with App than with Webpage, maybe it’s worth a try to make a unity version of MASK collection. Hmm such a sweet dilemma!

Codes of accessing camera on the phone… omg so simple!

WebCamDevice[] devices = WebCamTexture.devices;
mCamera = new WebCamTexture ();

//for(var i=0; i<devices.Length; i++){
//	Debug.Log(devices[i].name);

if (devices.Length > 0) {
	mCamera.deviceName = devices[0].name;
	displayPlan.GetComponent<Renderer>().material.mainTexture = mCamera;
	mCamera.Play ();

MASK v2.0 – Local server(*2) network!

Screen Shot 2015-09-18 at 8.40.12 PM

Quick notes on how I made local Peer.js server, and also closed network!

When making my thesis, I used cloud hosted PeerServer with API key, so the project was constrained by internet access. In order to make the project more robust and stable, I decided to create PeerServer on my own laptop, and let devices (mobile phones) access the laptop (server) through Wi-Fi.

Here are the quick notes on how I did those (OMG such a googling / debugging hell!):


Create PeerServer accompanying another WebSocket system

Peer.js documented well about how to create your own PeerServer, even with examples of combining with existing express app, which is perfect for me. But because I have my own Node server as well, I struggled for a while to realize that, I should create two servers for each websocket with different ports!!! Finding this out through non-stop console.log and try & error!

Server codes

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app);
var port = process.env.PORT || 7000;

// peer_server
var ExpressPeerServer = require('peer').ExpressPeerServer;
var peerExpress = require('express');
var peerApp = peerExpress();
var peerServer = require('http').createServer(peerApp);
var options = { debug: true }
var peerPort = 9000;

app.get('*', function(req, res){
    res.sendFile(__dirname + req.url);
peerApp.use('/pp', ExpressPeerServer(peerServer, options));



Client side sudocode

var peerConnect = function() {			
	/* WebRTC - Peer.js */
	peer = new Peer( ID(), { secure: false, host: 'YOUR_IP', port: 5000, path:'/pp', debug:true} );

	// Get an ID from the PeerJS server		
	peer.on('open', function(id) {
		console.log('My peer ID is: ' + id);
		peer_id = id;

		// Now we can connect to my socket server						

	peer.on('call', function(incoming_call) {
		console.log("Got a call!");
		incoming_call.answer(my_stream); // Answer the call with an A/V stream.
		// do what you want~~~


MacbookPro as server, accessing by devices through Wi-Fi with router

  1. Connect Router with MacbookPro
  2. Click Wi-Fi symbol to expand the list –> Create Network…Screen Shot 2015-09-19 at 12.43.25 PM
  3. Setup name and passwordScreen Shot 2015-09-19 at 12.44.53 PM
  4. System Preferences… –> SharingScreen Shot 2015-09-19 at 12.46.06 PM
    • Setup computer name
    • Click Internet Sharing
    • Share your connection from: Ethernet
    • To computer using: Wi-Fi
    • Click Wi-Fi Options –> setup Wi-Fi name and passwordScreen Shot 2015-09-19 at 12.48.59 PM
    • Click on box next to Internet Sharing to startScreen Shot 2015-09-19 at 12.50.45 PM
  5. @ your device’s Wi-Fi list, choose the Wi-Fi shared by MacbookPro and enter password
  6. Voila! Now your device and MacbookPro have same IP address, thus the device and go to the page that MacbookPro serves with <IP_address>:7000/index.html.

« Older Entries