YouTube import

Friday 27.10.2017

Added interface for importing data from YouTube. Because videos fron YouTube can be of any type, the user will need to select where he wants to place the content. For playlists, data can be imported into either a clip channel or a series, while single videos can be imported as simply clips or as movies.

Connecting data

Tuesday 17.10.2017

Added functionality to the admin interface for processing reports from the update server for missing data. I made the updater save potential errors that it has found while processing the input data, and made them show up in the admin interface. This includes both missing data on content that makes it not possible to look up data from external data sources, as well as possibly duplicated content. There views makes it a lot easier to see what is not correct, as well as correct errors.

I also added views for connecting our data to external data sources. In the image below, there is movie that do not have a connection to TMDB, which this dialog makes it easy to pick out, if it exists.

Administrating episodes

Wednesday 20.09.2017

When importing data from external datasource, not all episodes are placed correctly into our database. This error comes from both the external sources, where data are not always correct, and from the scraping process itself. I made this view with tightly packed functionality that lets us quickly look up data, as well as move them around using simple editors and drag-and-drop.

Administration tool

Friday 08.09.2017

I've started working on an administration tool for content data. This tool lets us easily validate and update content in the database. Not all content can be automatically processed, and this tool lets ut do the manual tasks faster.

Image server placeholder images

Thursday 24.08.2017

I added placeholder images to the image server, so that instead of returning a "404 Not Found" message when the image was not found, a simple placeholder are returned instead. This makes it look better within the application for places where images are missing.

Image manipulation server

Friday 11.08.2017

I've started working on an image manipulation server. This server will be the one creating all images for the ParrotPlay application. It currently select the best possible image from the various image sources, and resizes it to the desired size.

For processing images I found the excellent library Twelve Monkeys (No relation to the movie of the same name), which provides lots of options when it comes to image processing. Not only does it read lots of image formats, old and new, it also has several image filters. These filters include filters for resampling (rescaling) images, which lets me select the absolutely best image quality.

VR scene selection

Wednesday 26.07.2017

Added support for selecting scene from the VR TV viewer. At the bottom left corner of the view there are a button that lets you pick from the two scenes I've set up so far. This time I added the Family Room model found on Google Blocks.

VR video progress

Sunday 23.07.2017

I've added a progress indicator for video playback. This simple widget is placed on the floor in front of the TV, and are updated as the video progresses.

WebTorrent VR

Saturday 22.07.2017

I've added support for WebTorrent to the VR TV experience. This allows me to view content from Torrent sources within the video viewer. This is an another approach to fetching video from other sources that does not need extra plugins or modification to the web browser.

To demonstrate this, I've added several videos from the Blender Institute Open Movies. These are movies made by the community and provided as open content to anyone. Although BitTorrent is often mistakingly connected to piracy, it is perfect for transferring this kind of content.

And you gotta love the logo of the WebTorrent project:

VR proxy

Friday 21.07.2017

The first version of the VR TV project required you to disable web security in your browser in order to view VR videos. This has now been remedied with a simple proxy. This proxy allows JavaScript on these pages to send requests to any server that I've opened up for. There are therefore no more need for changing any settings on your computer for running this application.

Try it out

DOS emulation

Thursday 20.07.2017

In order to view old projects online, I've added DOS emulation to this site. This allows me to view the projects I worked on during the 90's within these pages. No more need for the hassle of downloading the applications and setting up DosBox.

In order to realize this I utilized em-dosbox, a JavaScript port of DosBox using the Emscripten toolchain. This allows you to do things like playing old MS-DOS games in your brwoser or running old computer viruses without harming your computer.

I could have used the Emularity frontend in order to simplify setup, which is the same system that Internet Archive uses, but I wanted a bit more control over how the application integrates with the page. This meant I had to figure out a lot of details on my own, including how to integrate the BrowserFS filesystem implementation with read-only ZIP overlays, mounting and so on.

Try it out

Treehouse VR TV

Wednesday 12.07.2017

I've been experimenting with VR and WebVR lately. This latest experiment are a giant television screen placed inside a treehouse. The treehouse is a model that I found made by Danny Bittman using Google Blocks.

I've picked some videos from YouTube for easy access, but you might also paste in any YouTube URL into the address input. This player currently only supports YouTube videos.

Because WebVR is not yet an industry standard, not all browsers have implemented support for it yet. Chrome supports the API, but does not support any of the hardware yet. Firefox Nightly is the only browser I've found that supports WebVR. There are some versions of Firefox that works better than others, and support are not neccessarily better with newer versions.

In order for the video to be loaded from an external server, you need to disable security in the browser. This is done by adding a command-line parameter. For Chrome this parameter is "--disable-web-security --user-data-dir". FireFox does not have support for this out of the box, so you'll either have to rebuild the browser from source, or rely on a plugin.

You might also run this application without a VR headset. You will then be able to look around by dragging the view with the mouse.

Try it out

Tuning the pages

Saturday 01.07.2017

I've done some minor tuning to these pages. Minor bugs has been removed, as well as more content added.

For blog posts containing code examples I've added a syntax highlighter. This makes the code look a lot more readable. I also included more external blog posts, so that I have all content gathered at one place.

New web pages

Sunday 25.06.2017

These web pages have been updated with a brand new look. This time around I've tried to follow the Material Design guidelines. This has resulted in a fresh new look, ready for the future.

In addition to the new look, I've also updated all content, and disabled all features that do not work anymore. As an example, these pages used to have a lot of Java applets. As most modern browsers now have removed this plugin, thus making it impossible to view applets on a web page, these have been disabled, and will be available as screenshots only. I expect the same to also happen to all Flash content later in 2017, as browsers have been running a war against these lately.

There has also been a lot of work done on the content of these pages. Over the years I've gathered a lot of blog posts as well as projects. All these texts with its pictures have been updated to better fit with modern times. Most thumbnails has been redone so that they are twice as large, as modern times have higher screen resolutions. Unfortunately, I do not have larger images for some of the older projects. This is due to the fact that I sometimes downscaled those screenshots to better fit on a web page, and other times because their original resolution were that low. A resolution of 320x200 were quite common back in those days.

TV guide visualization

Friday 23.06.2017

The TV guide data also needs a visualization. This view shows what is broadcasted on all your channels in a quick overview. A play icon next to the program symbolizes that the program in question is available on a streaming service, and could therefore be seen immediately. It is also possible to add a reminder on one of the programs, so that you as a user would be notified before the program starts.

Parrot 3D model

Saturday 17.06.2017

Extended the tunnel visualization by converting the parrot into a proper 3D model using Blender. This resulted in the parrot looking a lot cleaner when rendered on top of the rest of the scene.

Importing TV guide data

Thursday 08.06.2017

Lately I've been working on importing TV guide into the ParrotPlay application. This has resulted in its own set of issues, where most have all been solved by now. One of the challenges has been to connect the guide data to our existing database.

This will allow us to link to a movie or series that we already have in our systems. If you see that a movie is listed as being viewed on a channel in a few days, but you want to see it now, you will be able to do this, as we link the guide to streamable content.

Data, data, data

Friday 26.05.2017

Part of extending the application is to add more data. By using several data sources we are able to create a quite complex model of the media world. The image below is just a small example of how complex this data structure is becoming.

Optimizing to the extreme

Thursday 04.05.2017

We are currently transitioning from a combination of a MongoDB and a Elastic Seach into using Neo4J. This allows us to look up data with reations in a faster fashion than we have been able to do earlier.

As part of this transition, we needed to implement several plugins for use with Neo4J, to compenasate for missing functionality. One of these plugins ws a recommendation plugin. As can be seen from the screenshot below, there are a lot that can be done with a little bit of optimization. One call went from 2917ms to sub 1ms. This result is representative for how a few changes often results in large changes when fetching data from Neo4J.

The Flight of the Parrot

Sunday 23.04.2017

Created a simple game with a rudimentary physics engine, in which you throw a parrot around. This was made out of an internal joke. The result was a simple game with inspiration taken from Angry Birds.

Try the game out