Posts
All posts on this blog in chronological order with newest first.
Test driven development of concurrent programs in Kotlin at KKon 2022
Concurrent and asynchronous applications can be written in Kotlin with coroutines in a precise and structured way. Unfortunately, concurrency often increases the complexity and it is difficult to create bug-free and maintainable programs.
In my talk “Korrekte nebenläufige Anwendungen mit Koroutinen und TDD” at the KKon 2022 I show that test-driven development (TDD) is a solution.
Test driven development of concurrent programs in Kotlin at KKon 2022
I will talk about “Korrekte nebenläufige Anwendungen mit Koroutinen und TDD” (“Correct concurrent applications with coroutines and TDD”) at the KKon 2022.
Slides of my talk about coroutines in Kotlin at KKon 2021 Warmup
In my talk “Nebenläufigkeit mit Koroutinen strukturieren” at the KKon 2021 Warmup i explained how to structure and organize concurrent programs with coroutines in Kotlin.
Talk about coroutines in Kotlin at KKon 2021 Warmup
I will talk about “Nebenläufigkeit mit Koroutinen strukturieren” (“structuring concurrency with coroutines”) at the KKon 2021 Warmup.
Migrating a ray tracer from Java and Groovy to Kotlin (part 1)
After reading the wonderful book Kotlin in Action I started to migrate my ray tracer from Java and Groovy to Kotlin.
EuroClojure 2017 in Berlin
In my first project for ThoughtWorks the backend is written in Clojure. Since the project was in Berlin, I visited the EuroClojure 2017 which takes place in Berlin this year, too.
Working for ThoughtWorks
After long considerations i decided to quit being a freelancer and joined ThoughtWorks in Hamburg, Germany.
Updated library of geometric algorithms
Today I released an updated version of the library of geometric algorithms.
Folien des Kurzvortrag 'Verbreitung von Familiennamen'
Die Folien für den Kurzvortrag beim Kultur-Hackathons Coding da Vinci Nord 2016 sind jetzt online.
Guter Roman über IT und DevOps
Im Roman “The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win” wird der Protagonist Bill gegen seinen Willen befördert und muss in seinem Unternehmen ab sofort den IT-Betrieb übernehmen, verantworten und am Laufen halten. Hierbei stößt er natürlich auf eine ganze Menge Probleme.
Der DAX und das Wirtschaftswachstum
Wenn man sich die Entwicklung des deutschen Aktienindex (DAX) anguckt, dann kann man nur über das scheinbar grenzenlose Wachstum staunen. Eine Wirtschaft kann aber nach dem gesunden Menschenverstand nur dann wachsen, wenn sie etwas besser macht als vorher. Wenn z. B. die Produktivität der Mitarbeiter durch den Einsatz von Software gesteigert wurde.
Problem ungelöst: Geistiges Eigentum und Marktwirtschaft
Der Begriff “geistiges Eigentum” (engl. intellectual property, IP) ist sehr umstritten, auch weil er gar nicht so einfach zu definieren ist. Es werden auch sehr unterschiedliche Konzepte unter diesem Begriff zusammengefasst: Patente, Copyright, Geschäftsgeheimnisse und Trademarks/Warenzeichen. Stephan N. Kinsella definiert ihn in seinem Buch “Against Intellectual Property” anhand der “Knappheit”.
Spielerisch Programmieren lernen mit 'Human Resource Machine'
Mit dem Computerspiel Human Resource Machine kann man die Grundlagen der maschinennahen Programmierung spielerisch erlernen.
Die ‚komplexe‘ Perspektive - Kurzvorstellung
Eine Kurzvorstellung des Buchs “Die ‚komplexe‘ Perspektive”.
Handel erzeugt Wohlstand
Matt Ridley erläutert in “The Rational Optimist: How Prosperity Evolves”, dass der Handel mit Gütern und Dienstleistungen die Basis der menschlichen Zivilisation ist und dass die Menschheit aufgrund des bisher erreichten Fortschritts Grund hat, optimistisch in die Zukunft zu schauen.
Die ‚komplexe‘ Perspektive - Einführung in die digitale Wirtschaft
Die Menschheit ist in der Informations- und Wissensgesellschaft angekommen. Kaum sind die ersten Änderungen verdaut, schon tauchen weitere Neuigkeiten am Horizont auf: das Internet der Dinge, Big Data, Data Science, intelligente Roboter und selbstfahrende Autos mit künstlicher Intelligenz.
Wie soll man diese Technologien bewerten? Welche Folgen werden sie haben?
Überraschung mit hohem Informationsgehalt
George Gilder erläutert in Knowledge and Power: The Information Theory of Capitalism and How it is Revolutionizing our World, dass die Stärke des Kapitalismus seiner Meinung nach darin liegt, dass nur die erfolgreichen Unternehmen, die Gewinne machen, die Möglichkeit erhalten, weitere Produkte herzustellen. Sie haben ja ihre Nützlichkeit bewiesen, ihre Produkte wurden gekauft.
Lassen sich die Folgen einer Krise vorhersagen? (Teil 3/4)
Die Manipulation des Leitzins durch die Zentralbanken löst viele Fehlinvestitionen aus. Diese müssen dann während einer Krise korrigiert werden [1]. Der genaue Zeitpunkt der nächsten Krise ist nicht vorhersagbar, da die Wirtschaft ein sehr komplexes System ist [2]. Lassen sich denn die Folgen der nächsten Krise vorhersagen? Lässt sich vorhersagen, wer die Krise besser übersteht als andere?
Buchvorstellung: 'Libertarian Anarchy: Against the State'
Gerard Casey ist ein Philosoph und Professor am University College Dublin. Sein Buch “Libertarian Anarchy: Against the State” beinhaltet recht kontroverse aber dafür interessante Thesen.
Kovarianz und Kontravarianz in Scala
Das Thema "Kovarianz und Kontravarianz" wird zwar auch bei Wikipedia erklärt, ich versuche es hier mit eigenen Worten und Scala.
Covariance and Contravariance in Scala
I explain "covariance and contravariance" with some simple Scala examples.
Guter Hands-on Einstieg in Apache Spark
Wer die Grundlagen von Spark lernen möchte, ist mit dem Buch “Learning Spark” gut beraten. Mir hat besonders gut gefallen, dass das Buch sehr praxisorientiert ist und man nebenbei mit der Spark-Shell die Beispiele ausprobieren und nachvollziehen kann.
Pflichtlektüre im Bereich Security
In dem schon 2003 geschriebenen Buch “Beyond Fear: Thinking Sensibly About Security in an Uncertain World” schreibt _ Bruce Schneier_ ganz allgemein über Sicherheit. Hier ist die englische “security” gemeint und nicht die “safety”, d. h. die Zuverlässigkeit.
Heat diffusion on multiple GPUs
The implementation of the heat diffusion equation on multiple GPUs is explained in the talk (in german).
Trying out next-gen JavaScript now with ECMAScript 6
With Babel you can test many features of the upcoming next version of JavaScript called ECMAScript 6 now.
Java MapReduce mit Hadoop
MapReduce ist ein “Korsett” und zwingt den Entwickler in enge Grenzen. Daher macht es Sinn, “MapReduce Design Patterns” zu lesen, damit man schnell die üblichen Tricks und Kniffe kennenlernt. Ähnlich ist es ja beim Lernen von anderen Paradigmen auch, wie z. B. Devide-and-Conquer oder Rekursion. Man begreift das allgemeine Prinzip schnell, man muss aber lernen, wann und wie man es am besten einsetzt.
Gute Einführung in C++ AMP
“C++ AMP: Accelerated Massive Parallelism with Microsoft Visual C++” ist eine gute Einführung in die Programmierung mit C++ AMP. Leider ist das Buch zum Zeitpunkt der Rezension das einzige Buch über C++ AMP, so dass ich es nur mit anderen Büchern über CUDA und OpenCL vergleichen kann.
Examples for parallelism: ray tracer on the GPU
I tested the parallel ray tracer on all NVIDIA cards i bought. This page contains the results.
Examples for parallelism: ray tracer
I wanted to learn some frameworks for parallel computing and i decided to implement a simple ray tracer as a "visual benchmark".
Die wunderbare Welt von P2P
In “Bit by Bit: How P2P Is Freeing the World” erläutert Jeffrey Tucker die weltanschaulichen Hintergründe von Peer-to-Peer-Netzwerken und von Bitcoin. Der Autor konzentriert sich hier auf seine philosophische und ökonomische Sichtweise, dem Libertarismus, einer Marktwirtschaft mit Privateigentum ohne Staat.
Nur teilweise elegant
Im ersten Teil von “The Elegant Universe: Superstrings, Hidden Dimensions, and the Quest for the Ultimate Theory” werden die Grundlagen der Relativitätstheorie und der Quantenmechanik anschaulich und mit tollen Beispielen erklärt. Es ist die beste Einführung, die ich bisher gelesen habe und klar 5 Sterne.
Mein Lieblings-Geschichtsbuch
James Gleick ist ein wahnsinnig belesener Mensch, der in diesem umfangreichen und lesenswerten Buch “The Information : a history, a theory, a flood” die Geschichte der Information und der Informationsverarbeitung darstellt. Äußerst bemerkenswert ist, dass sich der Autor in beiden “Kulturen”, den Geisteswissenschaften und den Naturwissenschaften, sehr gut auskennt.
Lesenswert, aber mit Schwächen - Rezension von “Ready Player One'
Das Buch “Ready Player One” hatte fast das Potential ein absoluter Klassiker zu werden in der Größenordnung eines “Hitchhiker’s Guide trough the Galaxy”.
Die geniale Idee des Autors ist es, 80er-Jahre-Nostalgie und ein Massively Multiplayer Online Game (MMO, MMOG) mitander zu verknüpfen und zum Gegenstand eines Romans zu machen.
Sehr viel Haskell, zu wenig funktionale Programmierung
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.
Hervorragende Erklärung der Krise und Ihrer Ursachen
Das Buch “Kasino-Kapitalismus” bietet einen sehr guten Überblick über die Ursachen, die zur Finanzkrise geführt haben. Die für die Krise relevanten Zusammenhänge aus der Finanzwelt werden präzise erklärt. Der Autor schlägt im letzten Kapitel auch Maßnahmen vor, um solche Krisen in Zukunft zu verhindern.
Stellenweise sehr gut, stellenweise nicht ausgereift und zu knapp
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.
Den Überblick behalten und konzentriert Arbeiten einfach gemacht
Im Zeitalter des Multi-Tasking und der ständigen Unterbrechungen ist es schwierig, seinen richtigen Arbeitsrhythmus zu finden, den Überblick zu behalten und keine Aufgaben zu vergessen oder aufzuschieben.
Eine Lösung bietet die “Pomodoro Technique Illustrated: The Easy Way to Do More in Less Time”, die der Autor in diesem Buch erklärt und mit vielen Illustrationen veranschaulicht.
Rezension von 'Complexity - A Guided Tour'
“Complexity - A Guided Tour” ist eine lesenswerte und interessante Einführung. “Komplexität” ist ein Querschnittsthema und durchzieht viele Fachbereiche, wie z. B. die Biologie (Immunsystem, Gehirn, Evolution), Wirtschaftswissenschaften, Informatik und Künstliche Intelligenz.
Ein besserer Titel wäre 'Gutes und korrektes Deutsch für Diplomarbeiten und Dissertationen'
Der Titel des Buches “Technisches Schreiben: (nicht nur) für Informatiker” ist viel zu allgemein. Der Autor betrachtet ausschließlich die akademische Seite der Informatik und auch nur die deutsche Sprache.
Sony verprellt die ersten Fans der Playstation 3
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.
Compiling OpenCL programs on Mac OS X Snow Leopard
I installed Snow Leopard on my laptop yesterday. I was very curious about OpenCL and installed the drivers and the GPU Computing SDK from NVIDIA.
Parallelization with Haskell - Easy as can be
The functional programming language Haskell provides a very easy way of parallelization.
Little big planet and computer graphics
I am fascinated by the possibilities of modern computer graphics. It all began while playing the game Little Big Planet. It does not look like a computer game. It looks like the results of handicraft work with scissors, glue, paper, drapery, etc.
New version of the library of geometric algorithms in Haskell
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 in Groovy with a Decorator
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.
Dynamic Languages Shootout / OOP 2008
The german magazine JavaSpektrum organized the "Dynamic Languages Shootout" contest for the OOP 2008 conference. The challenge was to create a computer game similiar to Scrabble in a dynamically typed programming language.
Accessing EMF models with JRuby
JRuby provides access to Java packages, so it is possible to use packages created with the Eclipse Modeling Framework (EMF).
Using UML2 with Groovy
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.
Higher order Markov chains in Ruby - Ruby Quiz #74
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.
Markov chains in Ruby - Ruby Quiz #74
Here’s my solution for the quiz No 74. It generates text with a first order Markov chain.
Missbrauchserkennung mit Künstlicher Intelligenz
Von 1999 - 2005 habe ich Informationen zum Thema "Fraud detection" auf einer Webseite gesammelt. Als ich 1999 damit als wissenschaftlicher Mitarbeiter der Uni Karlsruhe anfing, gab es zum Thema "Data Science" noch nicht viel Informationen. Es hieß damals auch eher "Knowledge Discovery in Databases" (KDD) in akademischen Kreisen oder "Data Mining" in der Wirtschaft.