Picture crunching

Cruzzle joins a sliding puzzle and a Ribiks cube into a new kind of puzzle.

In the past, I spent hours trying to solve a Rubiks cube. I really like the Rubiks cube for it is simple and complicated at the same time. I always wanted to have a Rubics cube on my tablet or smartphone but a Rubiks cube is 3D and a tablet is flat. In order to make it a little possible, I crunched the well known Rubiks cube down to a flat (jigsaw) puzzle and turned it into an Android app. I hope you like this game. Happy cruzzling!


A web based molecular viewer

MolView is web application for viewing, editing and searching chemical structures.

In this project, I've combined some JavaScript libraries and webservices to create an awesome chemistry web application. With this application, you can sketch, view and search molecules online. The drawing section is derived from MolEdit. Molecules drawn in MolEdit are resolved to 3D molecules using the NCI Chemical Identifier Resolver.
The viewer contains several 3D molecule rendering engines including GLmol, Jmol and ChemDoodle Web. Thanks to Jmol, you can also calculate the MEP surface of a molecule which is pretty cool. I also added a search option to search for molecules in the PubChem database or proteins in the RCSB database. Thanks to a translation API from MyMemory, you can also search in your native language (if this language is configured as primary or secondary language in your browser)

Logic Board

An electrical logic simulator for Android

Logic Board is an Android app you can use to simulate simple logic circuits.

I had to make some logic circuits for physics a while ago. To learn wiring electrical logic, we have something we call a 'system board' at school. These boards contain a number of logic gates, a pulse generator, some LED's, a counter and some other components. You can connect these components with wires. This way, you can create simple logic systems. While working with these boards, I discovered it's real fun to mess around with logic circuits.
Therefore, I made this Android app that enables you to simulate some simple electrical circuits. To make it a little more exiting, I integrated some Android Hardware including the flashlight, the volume +/- button and the return button. Moreover, some sensors, including the proximity sensor, the light sensor and the microphone, can be used as input. It was quite difficult but I also managed to save all 'boards' in JSON format.
If you have an Android device and you know a thing or two about electrical logic; install Logic Board, it's fun and it's totally free!

Think A Dot

My first Android game

Think A Dot is a puzzle game with 127 levels where you are challenged to match the small pattern by dropping marbles in the right entries which will change the colors in the large pattern. Each hole in the large pattern contains a switch which is changed when a marble passes. This causes the marble to take a different route the next time (enable the Look inside option to reveal this mechanism)
This game is based on the mathematical Think-a-Dot toy.

A custom gallery using Picasa Webalbums

All images on this website are loaded from Picasa Webalbums using JavaScript. This saves a lot of server side resources and makes the gallery easier to use and update.


The world domination game

In this project, I've recreated the well known strategy game called Risk. Unfortunately, there's no computer AI yet.

When I first met RaphaelJS, I was amazed by its ability to dynamically modify SVG. A small online RaphaelJS demo motivated me to write this game, which is mainly inspired by the good old computer game Risk II. It's code is large and complex so at some point developing it further became very hard. Therefore, there is no computer AI or online multiplayer; you can only play this game with another human sitting next to you. Moreover, the game won't recognize if you've conquered the world. However, the music, composed by my nephew, is beautiful!
A more detailed description can be found in the game itself. I learnt a lot about RaphaelJS, CSS3 and JavaScript by developing this game. I'm actually still planning on expanding the game.


A Three.js based OBJ viewer for Google Drive

Drive3D is a Google Drive app that can display OBJ files in your browser, Drive3D is made using Three.js.

A while ago, I wanted to make a Google Drive app. Currently, 3D files are not viewable in Google Drive, so I decided to write an app that can display OBJ/MTL files directly in your browser. On the internet, I found an example which used Three.js to load and render a locally stored OBJ file. I used this example and combined it with the Google Drive API. I also used the dat.GUI JavaScript library to add some extra controls. This way, you can set the background (clear) color, the light color and the light intensity. You can even embed the OBJ file in real-time 3D into your website, by making the folder, where the OBJ file is located, public, and pasting the embed code into your website!


I am Herman Bergwerf and I live in the Netherlands. I'm 16 years old. My passion is exploring and using cutting edge programming technologies. Since I started programming a few years ago, I am using a lot of time to try new things and develop more awesome stuff. Some of my projects can be found on this website.


Over the last few years, I've learned multiple programming languages, used a lot of libraries and discovered some awesome free software.

Some programming languages I learned:

  • C/C++: C and C++ became the first programming languages I ever learned. My first C game contained thousands of lines of code. About a year later, I rewrote the source and compressed it to a few hundred lines.
  • C#: I have some experience with C# which dates from the time I still used Microsoft Windows. I have used C# together with .NET and WPF.
  • Java: So far, I've used Java to develop Android apps. Since I had a lot of experience with C++ (and some with C#) already, Java wasn't hard to learn.
  • JavaScript: JavaScript is my favorite script language because it offers a lot of flexibility. So far, I have only used JavaScript for websites. I think modern JavaScript API's, like WebGL, make JavaScript awesome.
  • PHP: What I like most about PHP is that it's server-side. This makes websites both more secure and more portable. This website is also generated from server-side JSON data using PHP!

Some awesome libraries I have used:

  • FLTK: After I learned the basics of C++, FLTK became the first GUI toolkit I ever used. FLTK is clean, fast and cross platform. Therefore, I still use FLTK for a lot of applications.
  • wxWidgets: I've used wxWidgets once. WxWidgets is very extensive and also very complex. After all, WxWidgets is not that hard to use. Moreover, a wxWidgets application certainly looks professional.
  • OpenGL: OpenGL is certainly the most professional option for rendering high-end 3D graphics. I've used OpenGL in several C++ games. Sometimes I also use OpenGL for complex 2D drawing. Recently, I started trying OpenGL ES on Android using Java.
  • Three.js: WebGL, a JavaSript API for OpenGL ES and Direct3D, is awesome! So far, I've used WebGL for several web applications. Some of them are written using Three.js, a simple and very useful JavaScript library that can use WebGL, HTML5 Canvas or even SVG for 3D rendering.

Personally, I'm a big fan of free or open-source software. Therefore, I've always avoided using commercial software or illegal copies. The best things in life are free, aren't they ;)
Below is a small list of some free software I use to develop the applications found on this website.

  • Linux: After a lot of issues issues, I was tired of MS Windows and tried Linux. I'm currently using Ubuntu and I'm very happy with the clean system environment and the small hardware footprint. I certainly don't want to go back to Windows!
  • Blender: Before I started using Blender, I had some experience with 3D modelling in Autodesk Inventor (which is totally different software for a different purpose) Blender was very different from Inventor which confused me at first. However, I learned using Blender and I'm still discovering new options every time I create something new in Blender!
  • GIMP: Free Adobe Photoshop alternative.
  • Inkscape: Very useful for editing and rendering vector drawings.
  • Code::Blocks: My favorite C++ IDE.
  • Atom: Awesome for web-development and git integration!