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.

Curriculum vitae

It was about time to create a nice CV for my applications, so I started to design a neat little website about me and created the CV.

Stephan Schultz - CV

The website

I wanted a small, responsive page that works well on desktop and mobile. It contains some decent transitions, taking advantage of HTML5 and CSS3. It’s not overloaded, feel free to check it out if you have a minute.

The CV

My intention was to design a CV that indicated my passion for mobile development. I designed it using Photoshop and based on the Android Holo theme. When I was happy with it, I switched over to InDesign and created an interactive PDF version, which you can download below.

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

BB10 Bars – App Store

BB10 Bars bietet kostenlos konvertierte Android Apps zum Download an, welche unter der Android Runtime für BlackBerry 10 lauffähig sind. Das Projekt habe ich im Januar 2013 gestartet und es ist inzwischen der größte und bekannteste Market für BlackBerry 10 und PlayBook Apps geworden. Es wurde Zeit für ein neues Frontend, da die schnell wachsende Anzahl von angebotenen Apps den alten Blog sehr unübersichtlich werden lies. Die Website hat daher nun ein komplett neues Design bekommen.

BB10 Bars

Neues Backend

Hinter BB10 Bars steht ein komplett selbst entwickeltes CMS, welches auch das BB10 Sideloading Tool mit Daten versorgt. Trotz der gut 15 Millionen Zugriffe pro Monat war noch kein Ausfall zu beklagen. Die Website erfreut sich zunehmend an wachsenden Nutzerzahlen, da sie die eher beschränkte Auswahl an offiziellen Apps aus der BlackBerry World stark erweitert.