Bugwards compatible

Bugwards compatible is a property of a system, product, process or technology that assures that older bugs are retained and not fixed since the quirk of the bug is used to gain features originally not intended.
Fixing such a bug would break the systems, products, processes or technologies depending on or using it. This would cause substantial cost for the consumers when compensating for the loss of features.

Advertisement

Eight Rules for Total Gridlock in the Organization (Peter Kruse)

One of my favorite videos from Peter Kruse describes how to act to create total gridlock in an organization. I’m sad to say that I have lived through all of them, thankfully not all at once.

  1. Alternate Total Control with Total Freedom. Even better is to inconsistently switch between the two methods.
  2. Sprinkle rumors and discuss change only at the Informal Level.
  3. Maximize the number of new activities.
  4. Make it very clear that only the fittest will survive.
  5. Put all focus on finding the guilty one.
  6. Never ever challenge existing rules.
  7. Decisions should reach a consensus as fast as possible on the formal level, and then be extensively questioned on the informal level.
  8. Maximize decision-making speed and minimize implementation abilities. The rate of change on the decision-making level should always be greater than on the implementation level.

Managing Complexity the right way

In a couple of years I have had the opportunity to live through the full cycle of going from centralized to a decentralized organization. Or rather I’m in the middle of moving in to a decentralized organisation. But as so often the pendular tends to swing a bit to far when performing these type of changes. In both cases one of most challenging tasks are to manage complexity.

Id like to start with Ashby’s law:

Ashby’s Law concerns the relationship of a control system to the system it attempts to control. One version of Ashby’s Law is in the box at right. Ashby’s Law tells us that a complex system requires a complex controlling device. Conversely, simple systems require only simple controllers for successful operation.

So from my experience moving towards a centralization you try to improve efficiency by similarity in processes and better utilization of expertise. Decentralization is about speed and productivity of the team. So dependent on which business you belong to and the risk your business is affected by disruptive technologies you focus on the one or the other.
If you are a leader in your area, you can not sit back and watch, you need to constantly move so here the decentralization is probably the better option.

Back to complexity. Both central and de-central approach introduces complexity but on different levels. Production units tend to benefit from decentralization when it comes to complexity, the autonomy decentralization brings with it makes decision making faster. But looking higher up in the organization handling and controlling the whole organization becomes much more complex. Still if you are a leader in your field this is the only way to continue to lead. This is more like herding cats.
Decentralized it’s the other way around managing the organisation becomes easier but to the cost of speed.

This is something Yves Morieux describes very well in this video. He tears appart the classical business school dogma to create middle offices to handle complexity. This is the wrong way to do it since it only increases the complexity even more. I also like his focus on the manager role. I especially like his description of the manger role.

The role of a manager is make people do what they would not spontaneously do!

My favorite Professor Dr. Peter Kruse goes even deeper into the field of how to manage complexity. His take on complexity is based on his combined experience in psychology and brain research and later becoming a manager for a company. He quickly identified that structure an behavior in a company were similar to the human brain. I hope that I with time will manage to write a bit more about him. For german speaking audience this 45min video is a very good starting point. One his main point is that management need to adopt to changes in the society to be able to keep up. Planning everything is a thing of the past. The increasing democratization of information, the exponential increase of complexity and the dismantlement of hierarchies needs a new type of management which utilizes the collective intelligence.

So my conclusion is if you want to lead, it is important to focus on reducing the complexity for the team bringing direct value to your customers and as manager nourish and take care of the collective intelligence.

I have collected a series of videos touching upon this theme on my Youtube channel.

 

The Capitalists of yesterday are the Communist of today!

I think we can all agree upon that the world is turning faster and faster which means that the planning society from the 90’s is no more relevant then the planning economy from the dark ages of communism. To create a five year plan in the past is equally off as creating a 12 month plan today. Hence the capitalist of yesterday are the communists of today!

New technology arise faster than ever, take WhatsApp for instance which more or less instantly stoped the SMS growth. To react fast on such changes a long term plan is not the solution, the solution is to be more agile when planning.

That means that we today should look more into iterated processes when planning. By taking small steps we can more easily adapt to new themes that get a big response in the community.

Facing the future Carl Sagans question in the Novel/Movie Contact seams to become more relevant every day!

Panel member: If you were to meet these Vegans, and were permitted only one question to ask of them, what would it be? 

Ellie Arroway: Well, I suppose it would be, how did you do it? How did you evolve, how did you survive this technological adolescence without destroying yourself?

Why do we create conflicts?

Personally I feel that I’m involved in less micro conflicts than many of the people around me.
I think I have an answer to that.
My focus is on what people are saying and not how!
Personally I believe that if we all could stop focusing on how and try to understand what people are saying, we would have less conflicts.
To reduce the personal impact on how things are told I believe it’s necessary to understand how to communicate with less violence and above all become more prestigeless.

DLNA videos on ZTE MF93D

Bought a unlocked ZTE MF93D to take with me on our vacation. Selected this over the Huawei E5776 since it was available at a local store to very good price.

Have been reeding a lot compering the two and in the end my conclusion was that there are no big difference between them. ZTE you can use MiMo (dual external antenna) in low signal condition but the HUWEI has a bit better internal antenna and max throughput on 4G. But what difference does 150 Mbps for Huawei and 100Mbps for the ZTE really do when you do not intend to stream multiple movies over 4G.

Have been trying to get the dlna to work, but to get the movies to show up in the Video folder has not been easy. Google didn’t have the answer.

No manual saying what limitation there are and support could not help directly, they needed to escalate it.

So after some testing I found that the following works:

  • .mp4
  • .wmv

Did not work:

  • .m4v
  • .avi
  • .mkv
  • .mov
  • .divx
  • .xvid

So now I have to turn on the converter at home, so that my kids can stream movies on our iPads when we drive the 2000km down to Munich.

In Germany I buy prepaid surf card for the ZTE router and we can all surf without using expensive roaming. With some extra battery pack we can be on the move the whole day.

Vacation here we come!

Wrong version of Java

– Starbucks Java is not compatible with intel

Do not try to install it through your keyboard!

Finding your XPage generated elements byId client side

Ok so when you create your fields or divs in XPage and you give them a sane Id, when XPage then renders them you get ids like:

id=”view:_id1:_id2:ContentControl:CompanyName”

I do see why it is necessary, since you can have multiple forms in one XPage and it would be impossible to keep them apart if fields did not have unique names.

But what if you have your JavaScript libraries which uses functions like getElementById or if you are smarter than that and uses the dojo.byId which is browser independent.

There is no way using the client side syntax (#{id:comboBox}) you can use in the XPage and custom controls.

At the moment I see two approaches, the first is to create a global variable which is then used in the JavaScript library. This method is described here!

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/element_ids_in_client_side_javascript_on_xpages.htm

The second method is to use dojo.query().

dojo.query can be used to “query” the DOM tree, a really powerful function which is well worth digging into.

But in this case we will use it to find our html element by querying for the elements where id ends with the id we are looking for.

The syntax would be dojo.query(“[id$=’:CompanyName’]”).

Let’s take it apart. The brackets means we are searching for a tag with the name “id” ([id$=’…), which value ends with our search string, ‘$=’ stands for ends with.

The search string begins with a colon since we want to be sure we do not get fields with ids like ‘FirstCompanyName’, since they also ends with ‘CompanyName’.

The result will be an array of html elements, with multiple entries if more than one element id ends with ‘:CompanyName’, which very well may be the case, see when to use section below.

So when do we use which one:

The first method is preferred if you have multiple forms as data sources for your fields or when you cannot be absolutely sure that the ids are unique over all elements you need to use in your JavaScript library!

In all other cases the second method should work fine.

So now you have to rewrite all your JavaScript libraries! Yes you do and when you do that try to skip everything which takes an id string as a parameter, rewrite it to use elements or better to take both types as an argument.

Function doSomthingWithElement(elmnt){
 if(typeof(elmnt) === ‘string’){
   elmnt = dojo.byId(elmnt);
 }
 // use the element
 alert(elmnt.innerHTML);
}

What you also can do is to replace the XSP objects method getElementById with your own implantation of it using the dojo.query().

Either put the code inside addOnLoad in the client side XPage event onClientLoad or better put the code below in to a JavaScript library which is added as a resource into the XPage. Be sure to put in the JavaScript library early in the code so that it is loaded before used.

The XSP object is created by Domino server and contains different convenient functions like a getElementsById which actually only is a wrapper around dojo.byId()!

dojo.addOnLoad(function(){
 dojo.mixin(XSP, {
   getElementById: function(idName){
     var result = dojo.byId(idName);
     if (!result){
       result = dojo.query("[id$=':" + idName + "']");
       if (result){
         result = result[0];
       }
     }
     return result;
   }
 })
});

I’ll try to explain what happens: First the dojo.addOnLoad() will run the function given as a parameter when the page has loaded in the client. Then by using dojos mixin the script replaces the object literal entry for “getElementById” with the code given as a second parameter. The code itself doing the magic first tries to find the element the classic way by using dojo.byId(). In this way we do not break the previous functionality. If nothing is found it tries to find the element by using the dojo.query() method described above.

So now if you want to find an element where the id has been replaced by the Domino XPage rendering engine you can use XSP.getElementById(‘CompanyName’) as you hopefully are used to.

An alternativ can be to mixin xspById() into dojo.

If someone knows of a function which can be used instead in custom JavaScript libraries please tell me since I’ve been searching a lot for a solution to this problem.

1Kg iron vs. 1Kg feathers

Is configuring an of-the-shelf software less expensive than developing it on an existing application platform? Configuring always sounds more economical. That is as delusive as to say that 1 Kg iron has more mass than 1 Kg feathers.

But it’s hard to compare configuration complexity and code reusability!

Feathers always sounds so light!