Profile cover photo
Profile photo
Stefan Hanenberg
Stefan's posts

Ubuntu 16.04 update overrode fstab......4 hours time completely wasted :-( .... maybe its time to switch to windows 10.....

This feels weird in Java:

class A<X extends B> { public List<A> l; } class B {}
A a = new A();

The line
A o1 = a.l.get(0);
leads to a type error, but
List<A> l = a.l; A o2 = l.get(0);
does not (caused by the unchecked conversion to List<A>).

Somehow this behavior of Java feels wrong...(maybe it is a nice example for continuing the studies on raw vs. generic).

(Yes,the code is meaningless, yes, generic types should be preferred here over raw types, but it is a simplified example from a larger code base where it makes sense to use the raw type)

A ~50 years old citation:

"A.G. Fraser: One of the problems that is central to the software production process is to identify the nature of progress and to find some way of measuring it."

in: Peter Naur and Brian Randell, editors. Software Engineering: Report of a Conference Sponsored by the NATO Science Committee, Garmisch, Germany, 7-11Oct. 1968, Brussels, Scientific Affairs Division, NATO. 1969, p. 17

"To aquire facts relevant for the identification and specification of the various processes at work in natures it is, in general, necessary to practically intervene to try to isolate the process under investigation and eliminate the effects of others." (A.F. Chalmers. "What is this Thing Called Science?", Open University Press, 1999, p. 28)

One impression I brought back from ICSE 2016.

While I was standing in a queue, waiting for coffee, I heard two people chatting.

I am not able to repeat the conversation word-by-word, but it principle, they were speaking about the need for science in IT industry. And they seemed to agree that there is too much science in IT industry (I was really wondering why they came to ICSE, because at least some people would assume that this is a place where science plays a larger roles).

One person used the iPhone as an example, saying that the iPhone is a piece of engineering and there is no science in there. And this is a perfect example, why progress is driven by engineering and not by science.

I hope those guys' airlines buy their airplanes from engineers who have some background in physics.

Well, the coffee was quite ok.

Post has attachment
According to the dissertation by Kaijanaho the number of randomized controlled trials in the area of programming languages between 1973 and 2012 was 22 (see, p. 143).

According to the number of people winning the turing award during that period in the area of programming languages was 11.

How should the ratio 2 studies/turingAward be interpreted?

Maybe it is noteworthy that 22 is not the number of conclusive studies....

WOW!!!! I took a look at the OOPSLA 2016 Call for Papers (
Evidence: The paper presents sufficient evidence supporting its claims. Examples of evidence include proofs, implemented systems, experimental results, statistical analyses, case studies, and anecdotes.

To make it more explicit: A research work presents sufficient evidence supporting its claims if it provides anecdotes.

Wow....I cannot expressed how shocked I am.....

Maybe it is time to start courses about "anecdotal evidence" or to write the book "Serious research in software construction: the anecdotal approach"...

...I cannot believe it....

Nice quote from the paper "The Prospects for Psychological Science
in Human-Computer Interaction" by Newel and Card, 1985 (

"Millions for compilers but hardly a penny for understanding human programming language use. Now, programming languages are obviously symmetrical, the computer on one side, the programmer on the
other. In an appropriate science of computer languages, one would expect that half the effort would be on the computer side, understanding how to translate the languages into executable form, and half on the human side, understanding how to design languages that are easy or productive to use."

Although the statement is more than thirty years old, it could have been written just yesterday.

Many thanks to Gary Miller for giving the reference to me.

What's wrong with the code below?

In Java's default mode, it stops with a stackoverflow exception. Not astonishing, people familiar with PLs are aware of the problem (and they know how to increase the stack size).

But what is really the problem? The problem is, that we teach Java in the first year and teach recursion. Students at that time have no idea about PL internals. They only see that "recursion does not work" and "that strange things are needed (peculiar vm settings) to let the code run".

But recursion is one fundamental thing that is taught...but the error is outside the students' mental model.

From the perspective of academic education it is a tragedy. Either we tell students that recursion is good (but they do see that it is not) or we tell students that recursion is bad (some people would reject this statement) and we need to rewrite the text books on programming).

What to do?

(Please don't tell me that it is easy to write the code below in an iterative way -- of course it is!)

public class Main {
class SimpleLinkedList { int value; SimpleLinkedList next; }

public static void main(String[] args) {new Main().main();}

public void main() {
SimpleLinkedList l = new SimpleLinkedList(); l.value = 0;
SimpleLinkedList start = l;

for (int i = 1; i < 20000; i++) { = new SimpleLinkedList();
l =; l.value = i;

public void printElements(SimpleLinkedList l) {
if (l==null) return;
System.out.println(l.value); printElements(;

One impression I brought back from SPLASH/OOPSLA: a lot of people argue that optional typing combines the best of the two worlds.

What puzzles me: Why do they come to this conclusion? Why don't they come to the conclusion "optional typing combines the worst of the two worlds"?

And still I ask myself: where to people expect the benefit of dynamic typing? At least, we have troubles when trying to measure such benefit....
Wait while more posts are being loaded