Elevator Simulator – HackZurich

Just like the last two years, I’ve sacrificed one of my weekends to fly to HackZurich, one of the largest hackathons in europe. I brought a couple of my fellow students and the plan to create something fancy during the 40 hours of coding time available. But for some reason, we couldn’t really agree on any project – so we tackled a very unsexy topic: elevators.

What’s wrong with elevators?

I have no idea. We just felt like the logic that is currently in use to control elevators could use some improvements. Currently, elevators stop on the level where the last person got out. That works ok and consumes the least amount of energy. However, it’s not very clever. Think about an office building where 50 people would start their work day in the 3rd level, all arriving at about 9 am. People would have to request elevators back to the ground floor when they arrive every time.

A smarter logic

Our approach changes the behaviour of elevators when they are not in use. Take the office example mentioned above. Our control logic would send idle elevators straight back to the ground floor, ready to lift the upcoming group of people up. We predict the levels that idle elevators should move to by looking into the past. We are tracking on which levels people requested elevators (depending on the time of day) and assign each level a score. Based on that score, we can evaluate which level we should send elevators to.

Web simulation

Of course we needed a way to benchmark and showcase our logic. I decided to render an abstract 2D view in a webapp, using plain JavaScript and the HTML5 canvas. It can draw any state of our simulation and thus visualizes our logic over time.

Elevator Simulation

Above you can see a comparison of our smart elevator logic (left) and the default elevator logic (right) at 200x speed. We use gaussian distribution to generate a number of people (rendered as squares) that work at specific times on specific levels.


Imagine a building with 6 levels, 4 elevators and 500 people using the elevators over the course of a day. With the default logic, we measured an average waiting time of 27.6 seconds. With our smarter logic, the average waiting time dropped to 14.8 seconds! This time saving adds up if you think about it in the long term.

Winning the SAP InnoJam and DemoJam

Project: Remote Farm

You probably know about FarmVille, a game where you can build a farm in your browser. The problem is that you only have a virtual farm so you will never eat your harvested fruits. Remote farming provides the possibility to plant, water, fertilize, and harvest your own plants in real life taking into account concepts like social media and gamification. This app enables you to monitor the growth of your plants by checking live sensor data and even lets you watch the plants grow using a Webcam – literally.

Remote Farm App Remote Farm Prototype

SAP InnoJam

Together with 4 of my fellow students I participated at this years InnoJam in Berlin, a coding challenge contest where you get to learn about SAP technologies and partner with participants to build a prototype solution for a real-life business scenario or need. The theme was Internet of Things for the Agricultural Industry, so we came up with Remote Farm – and won the InnoJam.

InnoJam Team InnoJam Hacking

SAP DemoJam

By winning the InnoJam we won the possibility to pitch our idea in front of a few thousand people at the SAP TechEd && d-code DemoJam. Six well prepared teams competed with us on stage, all having only 6 minutes to give a live demonstration of the apps. And it was up to the audience to choose the winner (with the help of the Clap-o-meter). We managed to convince the audience and also took home the prestigious DemoJam medal. You can take a look at the video of our demo presentation and at the live studio interview with Craig Cmehil, Global Director Developer Relations at SAP.

DemoJam Stephan Schultz DemoJam Michael Weisz
DemoJam Stephan Schultz DemoJam Crowd
Demo video Live studio interview

Chilling Vibes – App Engine

After being featured on Reddit and Vsauce3, Chilling Vibes generated so much traffic that my hosting service was not able too keep the site up and it crashed the server farm. I decided to rebuild the site from scratch and host it on Google’s App Engine to be sure that the site can scale up properly.

New backend

I got rid of the old PHP backend and created a new one in Google Go. I also switched from my SQL database to Google’s BigTable storage system. It took some time to get used to it at first, but when the main functionality was up and running I even added some new features just because it was such a small effort.

Mucis submission

The new Chilling Vibes has some new pages, one of them allows anyone to submit music to the site. The user just has to paste a YouTube video url and the site will parse the track meta data automatically.

Chilling Vibes

Vote page

Other users can listen to submitted tracks on the new fresh page. They can up- or downvote tracks to generate a ranking. High ranked tracks will be added to the main page.

Chilling Vibes

Chilling Vibes – Chillstep Radio

Today I released the first version of my web radio station Chilling Vibes. It’s a dynamic page that combines relaxing tracks with beautiful photos. The simple user interface fades out automatically to provide the maximum chill factor.

Chilling Vibes

The music

Chilling Vibes offers tracks from different genres, including Chillstep, Deep House, Drum & Bass, Electro, Funk and Hip Hop. You can filter songs by genre and by speed level to match your taste of music.

The photos

The site shows high resolution photos from different categories. You can select your preferred categories and filter photos by the time of day. Let’s say you only want landscape photos shot at sunset, Chilling Vibes will show you exactly that.

Chilling Vibes

Google Wallet Watchdog

Meine erste offizielle Chrome Extension ist ab heute im Chrome Webstore verfügbar: Der Google Wallet Watchdog. Die Erweiterung überprüft regelmäßig die eingehenden Aufträge in Google Wallet und benachrichtigt den Nutzer bei neuen Aufträgen.

Open Mensa

Es können HTML5 Notifications und der Sound einer klingelnden Kasse als Benachrichtigung ausgewählt werden. Die Aktualisierungsrate kann von einmal in der Minute bis zu einmal pro Stunde angpasst werden. Anmeldedaten für den Wallet Account werden nicht benötigt.