Posts in Software Development

All posts in Software Development in chronological order with newest first.

Today I released an updated version of the library of geometric algorithms.

Die Folien für den Kurzvortrag beim Kultur-Hackathons Coding da Vinci Nord 2016 sind jetzt online.

Im Rahmen des Kultur-Hackathons Coding da Vinci Nord 2016 habe ich eine Web-Applikation für die Analyse und Visualisierung der Verbreitung von Familiennamen erstellt.

Hierzu habe ich u. a. Node.js, Express, Mocha, AngularJS, D3.js, Java 8, Neo4J, MariaDB und docker verwendet.

Das Spock-Framework ist momentan meiner Meinung nach das komfortabelste Test-Framework für die Java-Plattform. Da es auf der Sprache Groovy aufbaut ist es sehr ausdruckstark.

While I was reading the excellent book by Kevin Suffern "Ray tracing from the ground up", I implemented a ray tracer in Java and wrote a DSL in Groovy, to describe scenes more easily and dynamically.

Das Thema "Kovarianz und Kontravarianz" wird zwar auch bei Wikipedia erklärt, ich versuche es hier mit eigenen Worten und Scala.

I explain "covariance and contravariance" with some simple Scala examples.

Scala ist ein wichtiger Meilenstein bei der Fusion von funktionaler und objektorientierter Programmierung. Diese Fusion ist noch nicht abgeschlossen, sondern ein “Entdeckungs-Prozess”, der noch ein paar Jahre andauern wird.

This is the last part in a series of four. It show how to analyse the emails with Kibana.

This is the third part in a series of four. It explains the technical background.

This is the second part in a series of four. It shows installation and usage.

This article shows how to use Elastiksearch database with Spring Boot. It is the first in a series of four.

During my talk at the parallel 2015 conference i was asked how one can measure traffic on the PCI express bus. For multi GPU computing it is very important to control the amount of data exchanged on the PCIe bus.

JavaScript hat einen Prototyp-basierten Ansatz zur Objektorientierung. Damit unterscheidet es sich stark von den üblichen objektorientierten Programmiersprachen, wie z. B. Java, C++ und Ruby.

With Babel you can test many features of the upcoming next version of JavaScript called ECMAScript 6 now.

I wanted to learn some frameworks for parallel computing and i decided to implement a simple ray tracer as a "visual benchmark".

Ich benutze git zwar schon ein paar Jahre, wollte aber mehr Hintergrundwissen haben und komplexere Abläufe kennenlernen. Das ist dem Buch “Git in Practice” zum einen gelungen, trotzdem habe ich irgendwie das Gefühl, dass das nicht alles gewesen sein kann.

“Understanding PaaS” ist ein sehr kleines Büchlein über die Grundlagen des Cloud Computings. Es kann gelesen werden, um sehr schnell in die Thematik einzusteigen. Es ist eher für Entwickler geschrieben, als für CEOs.

“MongoDB: The Definitive Guide” ist ein gelungener Überblick auf MongoDB sowohl aus Entwickler- als auch als DBA-Perspektive. Jedenfalls soweit ich das als MongoDB-Einsteiger mit mehr als 11 Jahren Data-Warehousing-Projekterfahrung sagen kann.

Wenn man Java 8 lernen will, ist “Java 8 in Action: Lambdas, Streams, and Functional-Style Programming” das eine Buch, was man gelesen haben sollte.

Wenn es “anspruchsvolle” Literatur gibt, dann gibt es jetzt auch “anspruchsvollen” Code. “If Hemingway Wrote JavaScript” enthält viele lustige und lehrreiche Beispiele.

“Using OpenMP” ist eine gute Einführung und enthält ein paar gute Performancetipps.

Wenn man ein wenig Systematik in seine parallelen Programmierkünste bringen will, ist “Structured Parallel Programming: Patterns for Efficient Computation”
das Buch zum Einsteigen.

Ich hatte damals 1992 schon die zweite Auflage gelesen. Seit dem hat sich sehr viel zum Positiven geändert, sowohl bei C++ als auch bei diesem „Klassiker“.

In diesem kleinen Buch gibt der Erfinder von C++ einen Überblick auf die Neuigkeiten von C++ 11 und der STL.

An “The Definitive Guide to Grails 2” kommt keiner vorbei, der Grails lernen will.

Ich habe “Learn You a Haskell for Great Good” zur Auffrischung meiner Haskell-Kenntnisse gelesen. Während meines Studiums in den neunziger Jahren war ich begeisterter funktionaler Programmierer. Meine Diplomarbeit habe ich 1997-98 über „Geometrische Algorithmen in Haskell“ geschrieben.

Das Buch “97 Things Every Programmer Should Know” besteht aus 97 Abschnitten von unterschiedlichen Autoren zu oft auftretenden Fragen bei der Softwareerstellung.

“API Design for C++” ist eine hervorragende Einführung in die Implementierung von APIs mit C++.

“Patterns for Parallel Programming” ist ein wichtiges Werk für ‘parallele Programmierer’.

These slides are for a course about parallel computing.

“Head First jQuery” ist im “Heads First”-Stil gehalten und richtet sich an Anfänger und Quereinsteiger, die bereits über Grundkenntnisse in HTML und CSS und Programmierkenntnisse verfügen.

Das Buch “Getting Started with Roo” hat nur etwas über 50 Seiten und beinhaltet eine kurze und oberflächige Einführung in die Benutzung von Spring ROO.

Die Programmierung von parallelen und nebenläufigen Programmen mit Shared-Memory und Threads ist kompliziert und sehr fehleranfällig. Als Lösungsansätze wurden z. B. Software-Transactional-Memory (STM), Message-Passing-Architekturen und Aktoren-Modelle entwickelt. In “Programming Concurrency on the JVM” werden diese für die Java-Plattform vorgestellt.

Mit dem Titel “The Art of Concurrency” wird ein hoher Anspruch geweckt, der nicht erfüllt wird. Der Untertitel “A Thread Monkey’s Guide to Writing Parallel Applications” wird dem Inhalt schon eher gerecht, aber auch hier gibt es noch einige Kritikpunkte.

“Dieses Buch wird Ihnen helfen, ein besserer Programmierer zu werden” steht als erster Satz in der Einleitung des Buchs “Der Pragmatische Programmierer”. Und ich bin der Meinung, dass es stimmt.

“Ray Tracing from the Ground Up” ist ein hervorragendes Buch für Einsteiger und Fortgeschrittene. Man merkt, dass sich der Autor viele Jahre mit dem Thema beschäftigt hat und dass er selber Ray Tracer geschrieben hat.

During the christmas holidays i tried out Scala and TestNG with Gradle.

Am 1. April hat Sony ein Update für die Playstation 3 herausgegeben, mit dem der Support für Linux eingestellt wird. Das hat viele verärgert und teilweise heftige Reaktionen und Diskussionen entfacht.

Diese Schulung vermittelt die testgetriebene Entwicklung mit dem Schwerpunkt auf JUnit 4. Andere Frameworks wie JUnit 3 und TestNG werden kurz eingeführt (Stand 2009).

In der Schulung über Subversion geht es um die Versionsverwaltung.

Ant bietet immens viele Möglichkeiten, die den meisten nicht bekannt sind. Diese Schulung geht in die Tiefen von Ant (Stand 2009).

I have got a new computer. As alway i build it myself. How much faster is it?

The functional programming language Haskell provides a very easy way of parallelization.

Ray tracer running on an Intel Core i7 920 @2.67 MHz with Windows Vista Ultimate 64. The ray tracer uses the pthreads library for parallelization.

I tested my ray tracer on my Mac Book Pro. The peak performance is achieved with 7 threads. Programmed in C++ using the pthreads library.

I wanted to learn about the cell broadband engine used in the Playstation 3 and wrote a parallel ray tracer for it.

Almost 10 years after the initial release, i released an updated version of the library of geometric algorithms in Haskell. It now builds with Cabal and requires the Glasgow Haskell Compiler.

Remark: This post was adapted to the new blog format in November 2016.

Memoization is a well known optimization technique to avoid repeated calculations. With dynamic programming languages like Groovy it is possible to extend the behaviour of an already exisiting class at runtime.

JRuby provides access to Java packages, so it is possible to use packages created with the Eclipse Modeling Framework (EMF).

Writing plugins for Eclipse with other languages than Java is not officially supported, but there is a way to write an Eclipse plugin with Groovy only. As prerequisites you need Eclipse with a JDT and the Groovy Eclipse plugin.

The UML2 project provides an EMF based implementation of the UML 2.x metamodel in Java. With the EMFBuilder it is possible to create and process UML2 models.

While i was cleaning up my hard disk on my Linux in 2007, i needed a program that displays the disk usage graphically. I didn't find a suitable one on the web. At that time i was learning Groovy and it's for rapid application development, isn't it. So i gave it a try.

This article shows how Groovy can be used to work with the Eclipse Modeling Framework (EMF).

The Common Warehouse Metamodel (CWM) is a standard by the Object Management Group (OMG). The intention of CWM is to define a standard for metadata in Data Warehouses and Business Intelligence applications.

Here’s my second solution for the quiz No 74. It generates text with a first or higher order Markov chains. See also the first order version.

Here’s my solution for the quiz No 74. It generates text with a first order Markov chain.

When i first heard of the Eclipse Modeling Framework (EMF) i got really excited, i tried it out and i wanted to use it.

Ich wollte herausfinden, wie schwer es ist, in Eclipse einen Editor für eine Programmiersprache zu schreiben. Ich kannte damals keinen Open-Source-SQL Editor (auch für Eclipse gab es noch keinen) und somit fing ich mit einem kleinen Prototypen zu Testzwecken an.

Über Weihnachten 2004 schrieb ich ein EMF-Plugin für Familenstammbäume. Ostern 2005 fand ich dann die Zeit dafür, einen GEF-Editor dafür zu entwickeln.

In meiner Diplomarbeit habe ich 1998 die Potentiale der funktionalen Programmierung bei der Implementierung von geometrischen Algorithmen untersucht. Den Source-Code habe ich veröffentlicht.

In meiner Diplomarbeit habe ich 1998 die Potentiale der funktionalen Programmierung bei der Implementierung von geometrischen Algorithmen untersucht.

In my diploma thesis (written in German) I investigate the application of the functional programming paradigm in the context of geometric algorithms.

In dieser Seminararbeit für mein Hauptstudium habe ich 1996 Algorithmen für das Scheduling in verteilten Realzeitsystemen im Rahmen meines Informatikstudiums behandelt.

In dieser Seminararbeit für mein Hauptstudium habe ich 1995 das grundlegende Präfixsummen (prefix sum) im Rahmen meines Informatikstudiums behandelt.