Photo by Mahkeo on Unsplash

If you have ever built applications for interactive experiences it’s likely you had to integrate some kind of external light controls along with your application. Maybe you added some simple blinking LED lights around your kiosk application, or maybe you had to go all out and control a room scale lighting setup.

In any case, the basic question is always the same — How do you control external lights from within your application? How can you interface between the software and the hardware worlds?

tl;dr If you already know your way around DMX and don’t need the introduction part you…


Raspberry Pi(e)s are often used for kiosk applications where their sole purpose is to serve preloaded HTML5 content from an SD card to its attached HDMI screen. This is a very common setup but at some point you will encounter weird issues resulting from SD card corruption.

This guide was originally created for Raspbian Stretch and has been updated for Raspbian Buster. You can still find the guide for Raspbian Stretch here.

In our case usually after around 6 months we would encounter random crashes and find log messages like this:

end_request: I/O error, dev mmcblk0, sector 148225 mmcblk0: error…

Using a Bluetooth motion controller with a HTML5 / Javascript Web Application
Using a Bluetooth motion controller with a HTML5 / Javascript Web Application

How to turn any smartphone into a Bluetooth enabled motion controller for HTML5 / JavaScript Web Applications

Why use a Bluetooth controller for Web Applications?

It’s a valid question and there are certainly easier and more “traditional” ways to control a Web Application. But there are scenarios where including the User’s phone as a (motion-) controller creates an exciting new way for them to interact, such as:

  • If you are creating an exhibition or retail space let users download your controller App and allow them to interact with your applications on-site.
  • With Bluetooth users don’t need to connect to your Wi-Fi network first to exchange data with on-site applications.
  • Due to its low latency Bluetooth is suitable for fast gaming-style applications.

For quite a while now I’ve been evaluating how AI technology can be used to leverage the user experience of digital applications or even enable completely new UI / UX concepts.

Recently I stumbled upon several articles describing how to train a CNN (Convolutional Neuronal Network) to recognize a person’s emotion expressed by their facial gestures. This sounded like an interesting idea for creating a user interface so in order to test it I came up with a simple game called “Do not laugh”.

The game itself is dead simple. It will start playing a random funny video from YouTube…


When you’re building an Electron App you will sooner or later have to integrate some long running or “heavier” tasks that take up larger amounts of resources. Typical examples are:

  • Server processes like WebSockets
  • Database queries with SQLite
  • Data crunching and processing

At the first glance this looks like a very straightforward task. We know that an Electron App is divided in (at least) two processes, the “Main” (background) process and one “Renderer” process per application window. So your first thought might be “Let’s use the main process for the heavy stuff”.

As I mentioned already in my introduction article…


AI to many still appears like a magic new technology capable of just about anything. It powers self-driving cars, enables smart personal assistants and decides whether an applicant is likely to pay back a loan or not.

Due to its immense potential AI has spiked the interest of businesses throughout all industries with the key driver being the promise that “AI will allow (us) to obtain or sustain a competitive edge” [1].


This guide assumes you already have at least basic knowledge about Vue.js and want to learn how to package your Apps with Electron. If you’re looking to get started with Vue.js I highly recommend the guide on their website as starting point.

If you have ever developed and deployed a browser based kiosk application you are probably familiar with some of the usual annoyances:

  • Browsers will display update reminders which is especially annoying for offline applications.
  • Improper shutdown of the browser (or operating system) will result in popup messages like “Chrome didn’t shutdown properly” on the next start.
  • Users will…

Recently there’s been a kind of touchscreen table application getting more and more popular at events and showrooms. People interact with an application by putting objects directly onto the screen. The touchscreen will then immediately recognize the objects and react by showing information related to the objects.

Example of an interactive touchscreen table application with object recognition

The objects can also be moved around or act as dials to interact with the touchscreen user interface. This allows for some interesting and creative UI concepts which integrate real-world objects as part of the user interaction.

It’s pretty cool stuff — So…


Update: I’ve created a new version of this guide for Raspbian Buster.

Raspberry Pi(e)s are often used for kiosk applications where their sole purpose is to serve preloaded HTML5 content from an SD card to its attached HDMI screen. This is an easy solution to set up, however at some point in time you will encounter weird issues resulting from SD card corruption.

In our case usually after around 6 months we would encounter random crashes and find log messages like this:

end_request: I/O error, dev mmcblk0, sector 148225 mmcblk0: error -110 transfering data, sector 148226, nr 254, response 0x900…

Andreas Schallwig

Co-founder of multiple IT start-ups, passionate about blinking stuff, computers and cooking. Currently working as Technical Director at mediaman in Shanghai.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store