Logo for DIS 06/05/2007
 

DIS has finally its logo. It was clear at the beginning of the design process that it should put forward the world wide networking feature of DIS which is key to its working principle. I looked for various networking grids but couldn't find anything original and explicit enough.

It is fortuitous that I saw an instance of the UVG120 grid which was first discribed in the article "The Planetary grid: a New Synthesis" written by William Becker and Dr. Bethe Hagens in 1984. I adopted this grid for the logo with the written permission of Dr Bethe Hagens.

I find this grid beautiful because of its apparent randomness and its subliminal regularity resulting from combining the vertices's of a dodecahedron and an icosahedron mapped on a sphere. The fact that these volumes integrate the divine proportion may contribute to the impression of beauty.

The logo was designed by the graphic designer Johan VINET. He runs the company grafxtory but is better known as lordyoyo with his blog offering copious tutorials and enlightening information on graphic design. He has a creative and yet a professional approach, with a pleasant benevolent patience I challenged with my exigencies and care of the details.

 
 

Things have a little bit evolved since the last time I checked the D programming language web site. An updated pdf version of the D language specification is available and the poseidon IDE is catching momentum.

There are some other nice features I forgot to mention in the previous note. Here is a short list:

   - static asserts and if evaluated at compile time
   - mixins of code and templates
   - contract programming (pre and post conditions)
   - version and debug keywords for conditional compilation
   - scopes

There are probably more gems in there, but these are a good start to catch the added value of D compared to other programming languages. Note that D is not an academic research product. It has been created by compiler writers that capitalized their experience in designing a new and better language.

 
 

DIS prototype is currently developped in C++ with Microsoft's Visual Studio C++ IDE. This is because it is a very reliable IDE and has the best debugger I know and at this stage of development debugging plays an important role.

I could have used Java, with Eclipse as IDE, which is as good, and even better on some aspects; an impressive master piece of IBM. But I first need a library for compiled code to be used on servers. I also have the impression that it is easier to translate C++ code into Java than the opposite. C# is on my list, but I need an OS independent language and totally free to use. As far as I know it is currently not the case.

So, the D programming language is very close to the top of my list. This language has very attractive features and I foresee a brilliant future to it. But, as Java in its very early days, D is laking a good IDE with accurate debugging support. The other weakness is its documentation, but this shouldn't last long.

It has all the features one would expect from a modern programming language and I have just learned about the scope keyword and its purpose. This is great. Read this article for a clear and detailed explanation on its purpose and usage.

Another interesting feature is its support of the SWT library called DWT. It makes it easy to implement a portable GUI application. You can also very easily use your pet C library with D. The reverse should be possible but it is not clear yet how to do this. It would be interesting for people developping libraries in D and keep them usable with C or C++. Something I would need.

 
 

When I was younger I always thought Murphy's law was a kind of a joke. It sounds so fatalist. Intuitively I believed there was some truth in it, but I couldn't point it out. Here is its most popular, concise and general formulation.

              "Everything that can go wrong will go wrong"

I recently (re)discovered its mathematical justification and thought it might be usefull to present here. Hold your socks, here it goes.

Let p be the probability that the "wrong thing" happens in one event. The probability that it doesn't happen is then 1-p. The probability that it never happens in n events is then (1-p)^n. Since 1-p is smaller than 1, this probability tends toward 0 when n gets big.

So the correct and complete law formulation should be
 
    "Any possible outcome will happen at least once for sure, provided that it is given enough opportunities to occur".

So Murphy's law is not complete and general enough on two aspects:

  - it applies for good events as well as bad events;

  - it depends on the number of opportunities to occur.

Ok, my formulation is less fun than murphy's law and it is probably because of its provocative formulation and partial correctness that it attracts so much attention. But just to be sure you didn't miss the point, when you consider the probability of occurence of something, good or bad, take in account the number of opportunities it has to occur.

That's true for startup success as well as for car or software crashes or anything else. People often focus only on  p and forget about n. The YCombinator funding model is based on making n increments cheap. And this is as good for entrepreneurs as for investors.