Anonymous chat service that supports Chinese

VideoTomb: Steganography/encryption for online video players

Encrypt videos before uploading to Youtube, Vimeo, etc. and then watch them only with a secret link. VideoTomb uses steganography so you can show an image when the video is shown unencrypted. Using the link the actual content appears.


3D Photo Gallery for Android using AI

An Android app that draws a depthmap from an image using AI. The depthmap is then used to generate new perspectives interactively by rotating the phone in XYZ axis, giving the illusion of depth.

Link to Play Store

Photo Upscaler for Android using AI

An Android app that upscales photos with incredible results using AI. An SRGAN neural network was used.

Link to Play Store

Augmented Reality Glasses

Development of high-FOV Augmented Reality glasses with fully custom-made positional headtracking. The hardware of the AR glasses consists of a customized Android smartphone and off the shelf AR glasses frame.

Featured on (alt. pdf)

Handheld Augmented Reality Device

A handheld AR device that rests on the table and is controlled like a computer mouse.

Featured on (alt. pdf)

Positional head tracker for PC

An outside-in headtracker; it tracks reflective surfaces. In this case it tracks a retro-reflective headband that the user wears which is tracked using a USB webcam. Tracking is solid and works in a variable set of lighting conditions.

Youtube Video

Positional head tracker for Android

A new way to do positional tracking for smartphones by using the camera and flash. The camera detects retro reflective material by lighting the flash at specific intervals. Developed in Java with an extra implementation for Unity support. Using the positional tracking, it was possible to show an augmented scene with the use of customized Google Cardboard goggles.

This technique has been copied in the Augmented Reality glasses from Tilt5.

Youtube Video - Youtube Video

Painting with voxels

VoxelPaint is a voxelbased, 3D painting utiility. VoxelPaint uses a custom designed voxelrendering engine, which leans on the LibGDX framework. An Android version was made but it no longer operational due to server migration. It was the voxelrenderer with the highest voxeldensity and largest drawing area on the Android marketplace and on the web as a (WebGL) web-app.

Youtube Video


Stream and control your desktop over websockets to the Oculus Go browser, or any other browser.



Corrects the drift issues that plagued VR Cardboard users. It uses Xposed to inject filters into VR apps.



Raycasting a terrain using various optimizations.

Github - Video

Live, low latency video streaming in the browser

An app that records the desktop (or uses other VLC compatible video sources) and serves the realtime video as GIF/PNG/JPEG frames to web browser clients over a websocket connection. It applies interframe compression, filters repeatant/still frames, has interlacing, adaptive framerates, adaptive JPEG quality, can switch between JPEG/GIF/PNG on the fly, has hardware acceleration for decompressing, among some other features. This was intended for live-streaming interactive games.

Youtube Video

Automated video documentary generator

Development of automated system that generates video documentaries from Wikipedia pages using a natural sounding, high-end Text-To-Speech engine (Amazon Polly) and slideshow graphics generated using HTML5 and Javascript. The project generates notably better content than projects made by competing developers. The videos were automatically uploaded using the Youtube API. The server and client were written in Java using GWT.

At time of writing, the number of subscribers is 8000+, number of monthly views is 106K, monthly watch-time is 350K minutes.

Youtube Video

Voxel Destruction Engine for Unity3D

An engine for destroying scenery, such as buildings and spaceships, made for Unity. The geometric object has a voxel representation and a regular texture. When voxels are destroyed, the surface shader stops showing the regular texture and starts raycasting the voxels at the destroyed parts. This destruction engine was sold on the Unity Asset store and a small game was made using it, shown below.

Youtube Video

Black out projector

A projector that uses shutter glasses in sync with the pulsed and overdriven LED from the projector, to filter out environment light and pass through projector light. Shutter glasses are kept open for a minimal duration. Shutter glasses generally have 2.4ms risetime and 0.3ms falltime, so given 60Hz the shutter glasses will be closed for 16.66ms - 2.7ms = ~14ms and open for 2.7ms. Thus environment light will pass with factor 2.7/16.66.

Youtube Video