Byebye Mac.

Photo was shot on a more or less related occasion.
Fits this post surprisingly well.

Three years ago we started together. It has been an amazing time. We have created amazing things together, you helped me realize a lot of ideas. I have learned a lot of new stuff and I have been extremely satisfied by the way things are done here. Today I heavily wonder how I could have ever worked with anything else than Unix in those Windows days back then. I didn’t even know about Unix back then. I remember asking an advanced student in my first days at university “What is Unix?”. And now? I have much more knowledge about Unix. Discovered a whole philosophy, a whole new world which has been evolving out there since the seventies.

But now it is time to move on. Again. This is just the next logical step for me. There are a lot of reasons. For me to grow, for my skills to get better, I need to move on, need to move on to a system where I am God, where I can change everything, where I can look under the hood of anything. A system where I am completely unconstrained, where I am completely free to build my own working environment, fitting exactly to my needs. Where I can try completely new things and don’t have to go with the way millions of customers have to.

Additionally I am very unsatisfied with the politics of Apple. I dislike the extreme patent politic as enforced by Apple. I do not want to live in a future where the world, the innovation, is controlled by Mega-Corporations. Things like the censorship within the AppStore [1], due to American prudency and archaic concepts of morality, are steps in a direction towards a world where accessible content is no longer controlled by the governments but by corporations. Paranoid? I don’t think so [1] [2].

Instead I want to move to a working environment which is based upon free software. I believe in the idea that the goal of software should be to make the best solution possible and not the most profitable possible.
State today is that there are still many commercial products which are better than their free alternatives. Better in User Interfaces, comfortability and performance. This is due to, well, people like me. If I would only invest a little bit of time in making the free software products better this situation would change.

So what is the setup I am starting with? Well first: I got myself a new notebook, a Thinkpad, an X220. Due to some work I did for people who got notice of me because of the time lapse, I was able to invest some €s. As a main operating system I am running OpenBSD (following /current) on an i7 with an SSD. So far I didn’t really have any problems with drivers, a little issue with the backlight, but nothing serious. Especially the SSD is an amazing benefit. “Why OpenBSD?” you may ask. Well, I like the *BSD approach better than the Linux approach. I like the uncompromising, idealistic view towards software. I like the fact, that they don’t view security as an add-on which can be installed later, but rather as a fundamental issue.

As a second os I run an Ubuntu installation for hardware accelerated graphics stuff. At the moment the only thing I need this for is GLSL shading stuff and live coding environments.

Tools: I start on the bottom. I want to keep stuff simple, want to understand my tools and the reasons for using them. Hence vi, ksh and dwm. No vim, no zsh, no Gnome. So let’s see how this works out! Below are some screenshots of my current setup.

Login screen + window manager.

The UNIX-Philosophy

I wrote an article on the UNIX philosohpy for the blog ioexception.de (in german).

The article explains some of the concepts behind modern unix-like operating systems like GNU/Linux, Mac OS X, *BSD or Solaris. These concepts are not limited to operating systems, but extend to a general style of developing and working on projects.

UNIX was developed specifically for experts. For people who know what they do and what they want.


Visualizing traceroute

Notice: This article was originally published on the blog ioexception.de (in german).

To get more familiar with Processing and OpenGL I wrote a graphical frontend for the Unix progarm traceroute. The output of traceroute is a list of stations a packet takes on it’s way through the network. This way network connection can easily be debugged, for example.

Technically this is realized with a “Time-To-Live”-field in the header of IP-packets. The TTL-entry describes after how many stations a packet should be discarded. Each router, which the packet passes, decrements this field. Once the TTL reaches 0 the packet is discarded and the sender gets notified with the ICMP-message TIME_EXCEEDED.

traceroute makes use of this and repeatedly sends packets to the destination host. The TTL gets incremented with each packet until the destination host is reached. The hosts on the route will give notice via ICMP-message. This way we will gather informations about the hosts and hopefully be able to identify the individual hosts on the route. The route may not be correct inevitably. There are several reasons for possible variations, e.g. firewalls often completely disable ICMP.

For the visualization I have tied traceroute to Processing. For further explanations on how to this see my blog post at ioexception.de. Though the post is in german the code will make things clear. It’s not really a complicated to do. The frontend reads the output of the command traceroute domain.org until EOF. Each line gets parsed and each individual host is resolved to an IP-address. Then a coordinate for this IP is assigned.

The coordinates can then — with some sin/cos magic — be mapped on a globe. Resolving IPs to a Geolocation is realized using a GeoIP database. GeoIP databases assign a coordinate for an IP with a certain probability and are not specifically 100% exact. But for our purpose this will do. There are some free suppliers and many commerical ones. I decided to give the free GeoLite City by Maxmind a go. This way we can resolve IP adresses to a WGS84 coordinate.

For the fronted I wrote a visualization in Java using the Processing API. The texture of the globe gets furthered rendered using a shader written in GLSL. Libraries I used: GLGraphics (OpenGL Rendering Engine for Processing), controlP5 (Button, Slider, Textfield) and toxiclibs (Interpolation & more numerical methods).

The source code is available under MIT on GitHub: visual-traceroute.

Some eye candy can be found within this video:

vimeo directlink.

About Me

I am a 32 year old techno-creative enthusiast who lives and works in Berlin. In a previous life I studied computer science (more specifically Media Informatics) at the Ulm University in Germany.

I care about exploring ideas and developing new things. I like creating great stuff that I am passionate about.


All content is licensed under CC-BY 4.0 International (if not explicitly noted otherwise).
I would be happy to hear if my work gets used! Just drop me a mail.
The CC license above applies to all content on this site created by me. It does not apply to linked and sourced material.