Boris Smus

interaction engineering

Front page blues

According to the American Press Institute,

News is that part of communication that keeps us informed of the changing events, issues, and characters in the world outside.

There are many ways for news to be uninformative or even outright misleading. Two trends in particular have received a lot of attention recently. The first is social recommendation systems and selective unfollowing, which creates a reality-distorting echo chamber. The second is fake news, which sure is in vogue these days, and is obviously a problem that we should tackle.

This post is about a different trend: real news presented with misleading frequency. The issue at stake is the media's ability to inform its readers and serve the public interest.

Continued →

VR View 2.0: JavaScript API

VR View was just updated to version 2! This release includes some nice new features, the main one of which is a JavaScript API. This allows VR Views to be much more interactive. You can now load new content dynamically, play and pause videos, and add hotspots that link from one piece of 360 imagery to another. Here's a simple auto-advancing 360 slideshow showing some of my recent escapes around Seattle...

Continued →

Election 2016

Back in June, I gave Trump a coldhearted 55% chance of winning the 2016 US election. You don't have to believe me, since I recorded it in my Predictions.md file, and never on gjopen.com, where it belongs. My assessment was mostly based on anecdotal observations that recent, related polls have been terribly wrong. Brexit and then Trump's surprise Republican nomination both came as a complete surprise to experts from all sides.

But, despite my dire predictions, it somehow didn't feel that I could be right on the eve of the election. When the final result was revealed, I was just as disturbed as everyone else. In retrospect, I attribute my "successful" prediction mostly to luck combined with my apparently contrarian tendencies, rather than to skill. Nearly a week after the announcement of President Trump, I'm still processing the verdict. Two big questions loom: 1) Why did he win?, and 2) Why didn't we see it coming?

Continued →

Ray Input: WebVR interaction patterns

What would the web look like if there were no scrollbars, no mouse cursors, and no clickable links? That's what VR is like today. On one hand, this is great! Developers are completely free to build however they want, leading to a lot of interesting experiments. On the other hand, it takes a lot of engineering effort to just get basic interactions up and running. Furthermore, it lacks consistency. The alluring promise of being able to navigate from world to world may be diluted by the frustration of having to rediscover new interaction paradigms every time.

While sane interaction defaults are badly needed, baking them into the platform violates principles of the Extensible Web. With that in mind, I implemented a basic Ray-based interaction library called RayInput, which provides reasonable defaults for interacting with 3D objects in and outside of VR. Here's what the interaction looks like on various platforms:

Continued →

Copresence in WebVR

The web platform is uniquely great for networked copresence. To demonstrate, I built a multi-user chat prototype that uses peer-to-peer audio and data connections to establish a virtual audio experience. Voices are spatialized based on the position and orientation of each participant (using Web Audio). Also, you can shrink and grow, which, in addition to changing your avatar's size, pitch shifts your voice. Large avatars have deep, god-like voices, while smaller ones start to sound very mousey!

Check out the demo for yourself. It works on desktop (mouse look and spacebar triggers movement), on mobile (magic window) and in VR (through the WebVR API, via the polyfill).

Continued →

Inspirata: for what inspires you

My site has a little section called Clippings. It's meant as a visual record of some of the things I've found inspiring on the web. How do I add new items to this visual record? Well, I'm glad you asked!

About a year ago, I cobbled together a Chrome extension for exactly this purpose: screen grabs from any webpage. Releasing it on the webstore has been on my backburner ever since. Over the last few weeks, I've spent a bit of time improving it and today, I'm ready to release it for broader testing. I call it Inspirata. Inspirata can be downloaded from the Web Store, and it works like this:

  1. Click the Inspirata icon button.
  2. Select part of the page to save.
  3. Enter an optional caption, et voila!

How Inspirata works video

Continued →

Browsing Wikipedia in VR

WebVR provides a solid technical foundation on which to build compelling VR experiences. But it does not answer a critical question, which is the topic of this post:

What could the web become in a Virtual Reality environment?

Gear VR provides a simple and straightforward answer: same same. The fundamental unit is still a page, but you use the immersion of VR to increase your effective screen size. The input constraints result in a worse experience for the user. Scrolling with your finger on your temple is tiring and head-based typing is a massive pain. Given the input constraints, we need to beef up the output and make it better matched to what VR excels at. A responsive design inspired solution would involve deconstructing the page to better suit the nature of the immersive environment.

Another approach is to make a clean break from legacy web content. What if certain web pages had parallel content tailored for virtual reality? In this post, I'll explore this idea with an example focused on Wikipedia.

Video of VR Wikipedia

Continued →

Three approaches to VR lens distortion

Immersion requires a large field of view. This could be achieved by putting a large curved spherical display on your face, but alas such technology is prohibitively expensive. A more affordable solution to increasing the field of view is to look at small ubiquitous rectangular displays through lenses:

Why VR needs lenses

Lenses placed close to your eyes greatly increase your field of view, but there is a cost: the image becomes spherically distorted. The larger the field of view, the more distorted the image. This post is a quick summary of three different approaches to undistorting the image, all of which have been implemented in JavaScript for various WebVR-related projects.

Continued →

Embedding VR content on the web

During a two week trip to India, I took over 1000 shots, including photos, videos and a few photospheres. A picture is worth one thousand words, but how many pictures is a photosphere worth? We may never know, but I digress. My favorite photosphere was of friends posing inside one of the turrets of the Jaigarh Fort:

I captured this using the photosphere camera which ships with Android. It's embedded into my blog using VR View, which launched today. The embed above lets you include an interactive photosphere right in your website, which is especially fun on mobile, where the image reacts directly to your phone's movements. You can view it in full screen mode, and even in Cardboard mode (only on mobile).

But you know what's cooler than a photosphere? A stereo photosphere! And luckily, you can capture stereo photospheres using Cardboard Camera, and then use a VR View to embed them too. You can even embed mono or stereo videos. Check out the docs for more info. Eager to hear what you think!

Simulating wealth inequality

Economic inequality is rising in the US. A viral video from several years ago made this abundantly clear:

Wealth inequality in U.S.

The gap between desire, expectation and reality is truly shocking, and inspired me to learn more. In particular, whether or not inequality is actually a big problem, and then to better understand issues that the video above did not address:

  1. How did the US become so economically unequal?
  2. How can this inequality be reduced?

My answers come in the form of simple simulations. For example, the following simulation has two agents with different salaries, but the same spending habits. You can play with it yourself!

In the first part of this post, I try to provide some background on economic inequality: how to measure it, various forms of it, and whether or not it's a problem. In the last part, I try to explain how we got to the status quo, and how inequality can potentially be reduced. Rather than just making claims, I use simulations like the one above to defend my claims. This way, you can see more clearly where I'm coming from, and if you disagree, you can make your own simulation with better assumptions.

Continued →