Exhibition opens tomorrow: Das Netz @ Deutsches Technikmuseum

The projects that kept me busy over the last months are almost finished! Tomorrow the new permanent exhibition “Das Netz” at the “Deutsches Technikmuseum” will open. Felix Scharstein and I developed and build three interactive exhibits for this.

You can read about the exhibition at the german computer news portal heise.de. Two of our exhibits – the “Memex” and the “Paketvermittlung” (paket switching) – are mentioned in the last paragraph. The development process of the exhibition was documented in a blog (Memex, Flipdots). Another article can be found at deutschland-vernetzt.de (the fourth picture shows the unfinished Paketvermittlung).

I will add some pictures and technical details in the next days.

Visualize Packet Routing with FlipDots

Another exhibit for the Berlin Museum of Technolgy will be a visualization of packet routing in networks. A large wall will show a network of nodes and edges, where the connections (edges) are formed by lines of FlipDots. When the visitors send data over the network there will be a lot of optical and acoustical feedback. :-)


We plan to use more than 1000 dots that are connected with different RS485 bus segments and controlled by a bunch of PSoC 4 microcontrollers. Capacitive sensors will be used for user input and a lot of RGB LEDs provide visual output. The whole scene will be controlled by a python application using the networkx modules.

Pictures will be posted here soon.

Building a MEMEX

I recently started building a MEMEX device for a new exhibition “Das Netz” in the Berlin Museum of Technolgy. The MEMEX is a vision of a scientist from the 1940s about future knowledge management based on microfilms.


The exhibit will use computer components instead but it will simulate the look and feel of a microfilm device. At the moment I have fully functional software simulation (coded in python) of the device to define and test the complete user interface and the typical processes.


In the next step we will build the components (database, displays, keyboard and camera) as independent modules. These modules will communicate over a standard ethernet connection.

The current design is the following:

Database fanless PC with a MongoDB server (Linux)
Monitors Raspberry Pi with a 13.3″ Display (software: python)
Keyboard Arduino with a 64-Button-Shield, Buttons and a transport lever
Camera Raspberry Pi with a RaspiCam (software: python)


PSoC 4 – an exciting low-cost platform

I started using microcontrollers with the Arduino / ATMega platforms because of the simple IDE and the large amount of additional material available.

Now I discovered a new platform and started building projects on it. Its the PSoC 4 family made by Cypress. You get a prototyping board with an ARM processor and everything you need to start for less than 5 €, the software is free. One of the included features is support for capacitive sensing without additional components.

These boards will replace Arduinos in some of my future projects.

Polygon | new version 2.0.7 and 3.0.7

Polygon logoAfter one and a half year I released new versions of my packages for polygon handling. There are no big changes, just some patches that have accumulated over the time. Most important are:

  • fixed some methods to work with instances of subclasses
  • fixed a bug in the SVG export (rgb), thanks to Diederik van Lierop
  • fixed a bug with exceptions in the initialisation, thanks to Diederik van Lierop
  • fixed a bug in gpc: replace on DBL_EPSILON with variable GPC_EPSILON, thanks to Peter Vavaroutsos
  • code changes to work with future versions of numpy (#define NPY_NO_DEPRECATED_API NPY_1_8_API_VERSION
  • added optional labels to SVG export and changed default colors, thanks to Diederik van Lierop (Polygon 3.0.7 only)

Packages can be found on bitbucket (Polygon2, Polygon3) and pypi (Polygon2, Polygon3).



Polygon | problems with nested and overlapping structures

Polygon is not able to handle nested and overlapping contours correctly. This is because the underlying structures and  functions of GPC have only a flat list of contours (solids and holes) without any hierarchy. A hole is not bound to a single solid but is valid for the whole Polygon. If your Polygon object contains more than one solid contour and at least one hole you may not get the results you expected.

One big problem is that it’s very easy to create such Polygon objects using standard operations! An example (thanks to Willie Maddox) illustrates this:

p will be a square (poly3) with a hole (poly2) and a second solid contour (poly1) inside the hole:

But the hole is not bound to the outer contour, it is valid for the inner contour as well and covers it completely. If you do further operations with this Polygon the results may be wrong. p.isInside(0,0) will return False because the point is inside a hole, even if it is inside a second solid contour.

You may use the method p.simplify() to make the Polygon p valid for further operations, but you  may lose overlapping contours. The method first adds all solid contours and then substracts all holes. In the example above the inner solid contour is lost:

Unfortunately there is no easy way to change this behaviour. The main problem is located in the data structures of GPC, which is a core component of Polygon and can’t be replaced easily.

The Project Hosting Odyssey

I moved the hosting of my software projects again: from GitHub to bitbucket. My GitHub repositories will be available in the near future, but I will use bitbucket for development (until further notice 😉 ).

I must confess that I always used the free offers and never spent any money on project hosting. So I got a lot for free and should not complain. But all offers proved to be suboptimal or did not exist long enough to be a reliable platform.

After some self-hosted RCS,  CVS and SVN repositories (many years ago) I moved to Origo.ethz.ch. This pretty good service was closing after some years. One of my projects then moved to BerliOS. This service was announced to close as well, so I used this as a chance to switch to git and moved all my projects to GitHub.

After some time I needed a private repository for a closed-source project. Private repositories are not part of the free plan on GitHub, so I used bitbucket in parallel. Now that GitHub has decided to close the download area, I needed to find download hosting for packages. Instead of  using three different services I decided to move all my projects  to bitbucket today.

Some of my older projects (like Polygon) now outlived  a lot of different platforms and version control systems.

Polygon | new version 2.0.6 and 3.0.6

Polygon logoI just released the new version of my packages for polygon handling with Python 2 and Python 3. There are only small changes, the most important ones are:

  1. moved development and downloads from GitHub to bitbucket after GitHub closed the download area,
  2. renamed the packages from Polygon to Polygon2 and Polygon3 to avoid confusion, especially on pypi,
  3. added a Douglas-Peucker simplification routine to Polygon3.

From now on I will implement new features in Polygon3 while Polygon2 will receive bugfixes only.

Binary packages for Windows will follow. I currently can’t compile x64 binaries for Python 3.3 because neither my Visual Studio 2008 nor Visual Studio 2010 Express supports this. I would appreciate any help for this or the contribution of packages.