January 2013
1 post
2 tags
Languages Are Overrated
By many people I met over the years of my professional career as a software engineer, programming languages seem to be vastly overrated. Every now and then I see a battle of this language against that language and a flame war and a shit storm. To what extend - I don’t know. For me, languages are tools, no more no less. They are tools for humans to formulate repeatable problem solutions in a...
Jan 8th
December 2012
1 post
2 tags
Jun Fukuyama's P≠NP Page →
Dec 11th
August 2012
1 post
3 tags
Go Standard Library Web Server Rocks
These days I’m doing my first steps in the Go programming language. Today I wrote my web server hello world and I’m really excited. All I had to do was to write these lines of code. package main import ( "runtime" "fmt" "flag" "net/http" "strconv" ) func main() { // command line argments port := flag.Int("port", 8000, "http port") maxprocs := flag.Int("maxprocs", 1,...
Aug 2nd
July 2012
1 post
2 tags
MVC, MOVE - Or Simply A State Machine?
In a blog I recently read, Conrad Irwin extends the well known MVC pattern to a MOVE pattern (http://cirw.in/blog/time-to-move-on). While his critics of MVC meets the right point (“… but the problem with MVC as given is that you end up stuffing too much code into your controllers …”) I cannot see what MOVE does better. It seems to be slightly more complex - and that’s...
Jul 3rd
13 notes
June 2012
2 posts
Hardware Neural Networks: Future Of Computing? →
Jun 18th
1 note
Making a singular matrix non-singular →
Jun 14th
1 note
January 2012
1 post
3 tags
Handle Huge Data With C++ and STXXL
If you ever have to deal with really huge data that does not fit in RAM anymore, but you still need a consistent interface and efficient handling - and you have not the time to write it yourself, as usual - have a look at STXXL. It has some downsides, but after all it works well and efficiently. For me it was the fastest way - both in runtime and implementation time - to deal with data in the...
Jan 12th
11 notes
November 2011
11 posts
5 tags
Clustering RabbitMQ
Clustering RabbitMQ is very easy - if you know how. Unfortunately, the documentation on this topic is good but not good enough (cf. RabbitMQ Clustering). If you try to do it, you may get lost on the track until you find some insightful posts on the mailing list. This is why I summarize here how I got it to work. Say, you want to create a cluster having two disc nodes and two ram nodes. If you do...
Nov 25th
7 notes
3 tags
Technical Quality is an Insurance Policy →
Nov 23rd
8 notes
1 tag
Analysis of Facebook Graph
Very interesting paper: The Anatomy of the Facebook Social Graph Reading this very interesting analysis of the structure of the Facebook graph I come to the conclusion that the main features qualitatively may be common to all graphs of social networks. For example, I’ve seen another social graph one order of magnitude smaller having very similar features. It would be really interesting...
Nov 22nd
39 notes
3 tags
Velocity is Killing Agility! →
Nov 17th
1 note
2 tags
If I had more time I would have written less code →
Nov 17th
1 note
4 tags
I Regret
I regret. Before I learned to think and to act functional, I proclaimed X=X+1 for years. Have mercy!
Nov 17th
17 notes
4 tags
Why Functional: One Reason
Why functional is better? So many reasons, one comes here: Programming languages are not made for computers, they are for humans to formulate generic solutions computers can solve faster in the details. The imperative style formulates the steps the computer has to follow, the functional style formulates the generic solution as such. Imperative style wants you to act like a machine, functional...
Nov 17th
20 notes
3 tags
Name Dropping Consultants
I don’t like name dropping consultants. Name dropping transports no knowledge at all, just obfuscates what is needed to find a decision. A little better is concept dropping, but only a little. What I expect of a consultant is, that she or he asks a lot of questions about my problem and afterwards shows two or three possible solutions for that particular problem, combined with an...
Nov 17th
1 note
3 tags
The Measure Of Agile Is Quality
In agile, I guess, it’s all about quality, not quantity. Quality of code, quality of user experience, quality of customer satisfaction. It’s about maintaining quality in a world of change. It’s not at all about being as fast as possible, but as good as possible - while everything around us is changing constantly. It’s about being smart, not being ...
Nov 17th
1 note
2 tags
Tumblr Sucks When Posting Code
Tumblr really sucks when you try to post code snippets. You can edit your posts using HTML but when you save or when you edit again in fancy mode and save, a lot of extra HTML is added to your posts which often makes the code snippets unreadable. I reported this to be a bug a long time ago - a year or so - but it is still not fixed. Solution would be either to add a “pre” or...
Nov 11th
1 note
4 tags
Publish To A Local Maven Repository With SBT
The Simple Build Tool SBT to build Scala projects is simple most of the time, but if you need something special it can become hard to configure. Documentation is quite well, but not very detailed. More often than not I found me googling some receipts and follow some iterations of trial and error before I finally succeeded. Since I use Scala in real life commercial projects I’m oft confronted...
Nov 11th
9 notes
July 2011
3 posts
PHP 5.4 Traits and the Diamond Problem
PHP will introduce traits in 5.4. While testing this feature with 5.4.0alpha2 I was wondering how it deals with the well known diamond problem. trait T1 {     public function f1() { echo __METHOD__ . PHP_EOL; } } trait T2 {     use T1; } trait T3 {     use T1; } class Test {     use T2, T3; } $t = new Test; $t->f1(); This will output: PHP Fatal error:  Trait method f1 has not been applied,...
Jul 28th
1 note
PHP Design Bug Still Active in 5.4 Alpha - And...
Today I tested my favorite PHP bug by design in current 5.4.0alpha2. It still works, and that’s the good news. php > echo phpversion() . “\n”; 5.4.0alpha2 php > $foo = “bar”; php > echo $foo[0] . “\n”; b php > echo $foo[“ouch”] . “\n”; b php > $bar = array(1,2,3); php > echo $bar[0] . “\n”; 1 php >...
Jul 28th
2 notes
4 tags
Why Software Projects Almost Always Seem To Fail
It is widely believed that a huge amount of software projects does never meet their planned objectives, either in time, cost, or scope. Numbers differ, but to think of about 65% to 70% of failure meets very well with my experience. Software industry exists for about 60 years now but until today, neither engineers nor managers seem to have good planning strategies. The question I want to ask is...
Jul 20th
10 notes
May 2011
1 post
Important rules how to do good HTTP benchmarking  →
May 18th
1 note
March 2011
2 posts
Have a look at exciting paintings of a friend of... →
Mar 21st
1 note
3 tags
Databases Need Predictable Garbage Collection
After been forced to play with different NoSQL systems for a while in a high load environment, eventually I had an insight: You should never rely on a database system based on a technology with non-deterministic garbage collection. If you cannot say when exactly your memory is freed - don’t use it to implement a database. Don’t use Java or .NET, don’t even use Erlang regardless...
Mar 18th
7 notes
October 2010
1 post
2 tags
A Data Model for Social Networks
Until today, the history of data models in social network programming is determined by the paradigm of relational databases. This is both for historical and economical reasons. In the times when such communities like Facebook or MySpace started, relational databases were the dominating systems in the industry. Little was known about alternative approaches. Economically, the time-to-market pressure...
Oct 18th
2 notes
August 2010
1 post
3 tags
If Complexity Saves Human Happiness
Recently a new attempt to proof P =/= NP gains a lot of attention. The paper is still under review and only the future will show if it is correct.This is one of the Millennium Problems and with no doubt, reviews will inspect every detail of the claimed proof over and over again. Let’s now suppose it is correct. What are the consequences? First, some disappointment. Many important problems...
Aug 12th
1 note
June 2010
1 post
4 tags
Scala - Functional Productivity
Currently, in my job, I’m working on my first real life Scala application, a certain clustered database system. The storage engine, Neo4j, is written in Java and the server has to be build around that storage engine to accomplish a number of complex requirements. After switching from Java to Scala I was really excited of both the ease of integrating Java libraries and - the high...
Jun 20th
May 2010
1 post
2 tags
Overlapping Graph Partitioning
Graph partitioning is known to be a hard problem and in algorithm theory many partitioning problems are NP-complete. With the raise of non-relational databases in general and graph databases in particular the partitioning problem nevertheless turns more and more into a practical challenge. A search on a graph database is in essence the exploitation of a graph theoretical notion of structure or...
May 17th
March 2010
3 posts
Scrum does not fit into innovation
Lets call it the ham-or-pig-paradox. What was first? If, in Scrum, I promise to do an innovation until the end of the sprint and I write that innovation down to the card for the task board, isn’t it that I already made the innovation I just commit to do during the sprint? And if not, don’t I make a promise I cannot commit to keep? Commitements have to be based on experience but...
Mar 17th
3 tags
Graph Minors
Recently I learned a very beautiful result in graph theory, the graph minor theorem by Robertson & Seymour presented and proved in a series of 20 papers between 1983 and 1988. This theory is very rich and it has an immediate algorithmic consequence since there always exists a polynomial time algorithm to test a graph for a given minor. One may define a class of graph properties called...
Mar 7th
2 tags
Gravity not fundamental?
Today I read a very interesting paper recently published by Erik Verlinde. In this paper he proposes to treat gravity no longer to be a fundamental force. Instead it should be seen as an emergent macroscopic phenomenon due to some underlying microscoping events. And since space and time are closely related to gravity they should be seen as emergent as well. By obviously having only the second law...
Mar 6th
1 note
February 2010
1 post
4 tags
Functors with Erlang
Thinking about how useful Erlang parameterized modules might be I found a special use case I may call a Functor. Consider the following code. This presents a generic module representing a monoidal structure. -module(monoid,[Impl]). -export([op/2,cmp/2,get_id/0,get_member/0,is_member/1,proof/0]). %% ------ INTERFACE ----- % apply monoid operation op(A,B) -> case members([A,B]) of ...
Feb 12th
January 2010
1 post
1 tag
If you're tired to fight with IO monad in Haskell:... →
Jan 7th
December 2009
2 posts
3 tags
Joe Armstrong released elib1 - remarkable... →
Dec 10th
1 note
5 tags
Erlang Parametrized Modules
The story of module extension continues. Another still undocumented feature of recent Erlang versions is to have parametrized modules and module instances. Have a look at this code: -module(mytest, [Var1, Var2]). -export([getInstvars/0]). getInstvars() -> [Var1,Var2]. With this you can have variables known in module scope. These variables are of course immutable. Moreover you can instantiate...
Dec 9th
November 2009
3 posts
5 tags
Erlang Module Inheritance
Surprisingly, there exist a number of Erlang features rather undocumented and obviously not part of the official picture of the language. One such feature is module inheritance. It is possible to extend a module by another and inherit or overwrite functions. This sounds like OOP and in fact it looks like class inheritance. The following code shows a simple example. -module(alpha). -export([f1/0,...
Nov 30th
5 tags
A Tool Is A Tool Is A Tool
In 20th century philosophy we may observe two main perspectives or views onto mathematics. These are alife even in our days. The first is to damn mathematics as a symptom of what Heidegger called “Seinsvergessenheit”. The other is to declare mathematics or mathematical logic as the only valid philosophy. There are only a few in the middle. One was Gotthard Günther and another seems to...
Nov 29th
1 note
3 tags
“There is nothing more practical than a good theory.”
– Kurt Lewin
Nov 29th
May 2009
1 post
4 tags
What Erlang/OTP Is Good For And What It Is Not
Erlang/OTP is without any doubt a powerful tool. But as with any technology it’s not good for any use case imaginable. It has a lot of strengths but some weaknesses too. Erlang glances in everything related to distribution and reliability. If you want to write software to be arbitrarily distributed over multiple instances, CPU cores, mashines or even data centers without having to change the...
May 27th