Not invented here syndrome

In IT software development the „not invented here syndrome“ is a very well known disease that many software developers succumb to. It basically sais, that in nearly all cases an already existing software library for a given task will not be used but instead a solution for the same problem will be re-implemented again. The solution needs to „be implemented here“ for being considered good.

Knowing this dilemma I always forced myself to first look for existing  solutions or libraries, before I ever started my own implementation. But a short while ago, I found out that this opposite approach is also too extreme. The ideal solution depends on some criteria that need to be measured objectively:

  1. Is there an existing solution for your problem. You need to check. And more often than you might expect, there already is an existing library for your task.
  2. What is the learning curve for the existing lib? Is it easy to use?
  3. How close is the existing implementation to your exact needs? Does it need to be customized?

Depending on 2. and 3. it might very well be wise to actually do re-implement your own solution. You will know its internal workings and it will implicitly be exactly tailored to your needs.

So in the future think carefully: Use the existing lib or implement your own one. If you decide to implement your own solution, then please at least publish it as open source, because for what you learned from the existing implementations.


Points in time and our names for them

Somehow humans always seem to have some problems to wind their heads around the concept of time itself. For us ‚time‘ is and always has been a topic of longer discussions.

Actually time is something very simple: It is a dimension, that everything constantly travels along in the same direction. We cannot change the speed or direction of our travel along this time axis. It’s just always there.

Now we’ve invented names for certain points in time. But due to our limit thinking of „day and night“, we’ve come up with several systems that assign different names for the same point in time. For example January 1st, 1970 12:00 o’clock GMT (or UTC) is the same as January 1st, 1970, 14:00 o’clock in UTC-02:00 (Brazil). This is actually the same point in time in the universe. But depending in which time zone you currently are, you’d assign this instant a different name.

Computers generally calculate in „milliseconds since the epoc“, ie. the number of milliseconds that have passed since one defined moment in time. This has the advantage, that two of those millis can easily be subtracted from each other, to get the difference between the two points in time. But this format needs to be converted to your local representation, according to your local time zone.



The most complex Hello World program

A „Hello World“ program is a program that dipslays the text „Hello World“ on its output (e.g. a screen). Hello World programs are used as examples to show how a program works. The primary idea of a Hello World is to be as short and simple as possible.

For a long time now, I was thinking – just for fun: How could I create the most largest, complicated and complex Hello World ever?

By chance I found a pretty good candidate :-)


Java Logging Frameworks

In the beginning there was java.utils.logging.
And it was included in the JDK since 1.4
And it was good.

But then came large java applications
And coders realized, that synchronous logging is bad.

So (as always) someone wrote a better logging library.
And thus Apache Log4j was born.
And it was good.

But then (as always) someone else wrote yet another logging library.
And thus logback was born.
And there was chaos.

But then the “simple logging facade for java” (SLF4J) was invented
with the intent to unite all logging frameworks.
And it was very very good.

But (as always) it was just again yet another logging framework
(or to be exact a facade for several frameworks)
And there was even more chaos.

Then Apache upgraded its logging framework Log4j to version 2.0
which providedes “significant improvements over its predecessor”
(according to its own doc).
Amongst other improvements it provides a log4j-to-slf4j adapter,
ie. an adapter for a facade of several logging frameworks.

And now every coder knows which log method to import. :-)
(Or was it LogManager or LogFactory or Logger ?????


Website Design

For long time now, I have been playing around with the newest bleeding edge web technologies, such as client side javascript MVC frameworks (angularjs), new pre-compiler languages (coffeescript) and combination of both (spinejs). It was fun while playing. But in the end, nothing presentable came out. My repositories were all just experimental stuff.

Finally I found a real reason for a project. A motivation to change something. I am a candidate for the local city council for a ecologic party, that was co-founded by my father-in-law, more than twenty years ago.

And our party (defenitely!) needs a new homepage. Website Design weiterlesen