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.

 

 

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 ?????

 

The complexity scanner

What if there was a scanner, that would be able to able to scan for complexity. Imagine a tool just like an infrared camera that shows a heatmap from dark green for low complexity up to bright red for high complexity. What would this scanner actully show on its display? What would be the brightest red thing? Would it be our brain? Or would it be a computer processor chip?

In terms of complexity per area I think it would be the computer processor. A modern computer processor nowadays is that small, and has so many switches per square milimeter that it surpases the complexity of a human brain.

But be carefull! Do not confuse complexity with intelligence. Complexity is a passive attribute of a system. When a system consinsts of a certain amount of elements that interact with each other, its behaviour cannot be determined, even if the interaction between each individual pair of elements is known. „The sum of all parts is greater than the whole.“

Some very disturbing situations may occure, when someone does not perceive the complexity of a thing. Very often I find myself in the situation that I (metaphorically described) see someone trying to repair a computer processor with a soldering iron. I fell the urge to cry out: „No, please stop! You will destroy your chip! A chip is far to complex. It cannot be repaired with a soldering iron.“ But it doesn’t help.

 

The best iPhone hiking map apps

If you like trecking or biking, you’ll provably have probably already heard of mapping apps for your smartphone. I’d like to present the apps that I use on my iPhone.

Ape@Map

Outdoor Navigation ape@map

The basic version of Ape@Map is for free. It’s killer feature that distinguishes it from other apps is a very detailed topigraphic map (for germany and austria) for free. Of course it also support open maps such as OpenCycleMap and OpenStreetMap. ApeMap also has a 3D view. But its rendering is quite slow compared to the other apps.

Additional licences for professional maps (like the ones from „Kompass“) can be bought via in-app purchase. The app is quite easy to use, once you got used to their icon driven UI. Downloading of maps locally to your device for offline use is only possible with the professional version „ApeMap Pro“ which costs 21.99€

iPhone Screenshot 1   iPhone Screenshot 2

The best iPhone hiking map apps weiterlesen