Mixing Reality with Virtual Reality

Virtual reality is a pretty magical experience when it comes to making art. However, if you have friends in the room watching you, the magic is lost on them. They can only see the experience by looking at a distorted preview of the player’s perspective on a computer monitor.

A friend was recently painting a 3D submarine in Tilt Brush. “Look at this periscope!” she said. I told her to look closer at it, and I leaned into my computer monitor to get a glimpse of what she made.

We can do better than this. Why do I have to get up off the couch to see what my friend is creating? Why can’t I just lean back and see the art floating in the middle of the room?

Until recently, such magic would have been impossible. That is, until Microsoft released development kits of their new mixed-reality HoloLens glasses. I’m fortunate to have access a couple units, and I really wanted to use mixed reality to share in a VR experience.

So I spent a week making a proof of concept to feel that out. It runs on the HTC Vive, a VR system that includes two positionally-tracked controllers. Here’s what that looks like:

Read this article

An open-source device for displaying upcoming events

Event LCD installed outside lounge. My upcoming-event display installed outside my dorm’s lounge.

Web and desktop projects are fun, but hardware adds a whole new dimension to software projects. I wanted to work on something physical, and I found the perfect application: A device that shows upcoming events on my floor’s lounge.

Read this article

Winning a Trip to The Googleplex

I just won a free trip to the Google Headquarters. How did I do it?

For the last three years, Google has run an international programming competition, Google Code-In, for pre-university students between the ages of 13 and 17. There are ten open-source software organizations that take part and create sets of programming tasks, usually requiring the student to write a small amount of code. After completing one task, students earn a certificate that will be mailed to them. After completing three tasks, students win a Google t-shirt.

What’s most interesting, however, is the grand prize. Each of the ten organizations name two students as grand prize winners, making a total of twenty winners. A winner receives a four-night all-expenses-paid trip to Google’s headquarters (a.k.a. The Googleplex) in Mountain View, California. The winners get to speak with Google engineers, tour Google, visit San Francisco, and receive additional prizes (swag); last year’s winners each received a Galaxy Nexus smart phone!

When I discovered this competition on December 1st — a few days after it began — I thought “well this would be a fun way to win a free t-shirt!” And so I began contributing code to a game called Hedgewars, completing tasks. Within a few days, I earned my shirt, but I didn’t feel like stopping. I didn’t even have the grand prize in mind; I was making significant contributions to the game and its main developers were loving my work. It was too rewarding to stop.

Read this article

Real-time User Count Without Any Javascript

Live Demonstration

IP cameras are frequently streamed as M-JPEG over HTTP connections. Why not use the same principle for other uses, too? Although M-JPEG streaming doesn’t work in Internet Explorer, it can still be useful.

The underlying protocol is simply a multipart HTTP request using the x-mixed-replace content type. Basically, the server sends the document (or in this case, image) multiple times, with each part replacing the previous part. So when an IP camera is streaming, it’s just sending multiple jpeg images that each replace the previous image.

It looks like this:

HTTP/1.1 200 Ok
Content-Type: multipart/x-mixed-replace; boundary=--icecream

--icecream
Content-Type: image/jpeg
Content-Length: [length]

[data]

--icecream
Content-Type: image/jpeg
Content-Length: [length]

[data]

--icecream

(and so on)

Read this article