Framework for global organizational structure

Everything starts with the organizational structure:

To build it we will need:

  • a list of organization types – humanity, states, religions, terrorists, charities, commercial, etc.
  • a list of all possible organizations including an internal structure where each organizationl unit adds additional motivations
  • a list of all people and their affiliations

Every organization will impose certain motivations and thus if it doesn’t it cannot be considered one. A group of people that are not bind by a common motivation is not an organization, it’s just a crowd.

Additionally each person and organization during their lifetime will go through a series of states. For humans we can identify the following states based on age:

  • Infant
  • Toddler
  • Child
  • Teenager
  • Adult

And then there is a whole list of possible states that is dictated by physical and mental state of the human body. These are listed as medical conditions in ICD-10.

For a commerical entity we may consider these states:

  • Formation
  • Normal activity
  • Termination

The military organization changes the state if it’s at war or not.

The religious organizations tend to be extreamly inflexible as their motivations are pre-defined and therefore they do not have different states. Although recent loss of interest in some religions may force them to rewrite or reinterpret the holy books to apeal to a wider population through change in motivations, that cannot be considered a change of state. It will be a completely different organization.

Each state may change motivations, imposing new ones and removing others.

After we have defined the organizational structure we will need to associate motivations with each state of each entity: their needs and their don’ts.

Posted in Enterprise Architecture | Comments Off

Global organizational structure

The more I learn about structure of motivations the more I realize that something is missing in modern enterprise architecture frameworks. Let me explain my thought process.

I came to conclusion that it is possible to define what motivates each person based on their needs. If we expand the motivation taxonomy to organizations it will be possible to see what drives them. By organization I mean any group of people or other organizations. At this point it is irrelevant what brought them together but we assume something did.

A person can belong to many organizations and so are organizations. And at each level we have motivations. The person, when inside an organization, will be influenced by personal motivations and motivations imposed by the organization. Additionally the person’s motivations will be influenced by him being part of other organizations.

To understand all the motivations that drives the person we first need to know  organizations the person belongs to and how those organizations are related to one another.

For example, let’s look at a man who was raised in Japan, who is Muslim and now works for some company in USA. He is married and supports Conservative party.

We have identified 7 organizations based on sex, place where he was brought up, religion, current location, occupation, marital status and political affiliation.

(Side note. Honestly, Facebook guys, your questionnaire got all that in almost exactly the same order, I must be onto something here)

As I said each organization has needs and therefore motivations associated with them. Some organizations allow others influencing the person’s behavior. In our example the company may let the married person to spend more time with his family. But certain motivations brought from outside will not be tolerated – if the man’s boss is a woman it doesn’t matter what he thinks his religion tells him.

Therefore before we start unraveling the motivations of a stakeholder we need to know the global organizational structure. What are the organizations? What are their motivations? What are their relations? That gives us a complete list of motivations that will drive the stakeholder. But here is what we also need to consider, which is not part of any EA framework I know. The stakeholder comes with a lot of baggage and he may have conflicted motivations. Before you even start resolving conflicts between different stakeholders you may want to pay attention to inner-conflict.

Posted in Enterprise Architecture | Comments Off

General theory of needs

Since Maslow’s theory of needs seems to be holding true to describe healthy people’s motivations (not the forced hierarchy, that I don’t agree with) it’s natural to expand it to cover the needs of any organizations. Following  Zachman framework and keeping in mind Alderfer’s ERG theory, we can start with the following:

  • Existence needs
    • Survival needs (if I don’t – I will die 100%)
      • What do I need to have to survive?
      • What do I need to do to survive?
      • Where do I need to be to survive?
      • When do I need to be there to survive?
    • Safety needs (if I don’t – I might die or will operate at reduced capacity)
      • What do I need to operate continuously/live?
      • What do I need to do to operate continuously/live?
      • Where do I need to be to operate continuously/live?
      • When do I need to be there to operate continuously/live?

So we can then answer the questions for these entities to understand their needs:

  • A person
  • Humanity as a whole
  • Government
  • Military organization
  • Commercial organization
Posted in Enterprise Architecture | Comments Off

Global architecture: first take

I know there are concepts of “world governance” and “global governance“. So I think there must a concept of “world architecture” and not in the narrow sense used by civil architects. Or maybe better let’s call it “global architecture”. Assume the world, aka planet Earth, is an enterprise. We then can apply EA principals to design it. Why would anyone want to do it? Apart from “for fun” I can see several reasons:

  • To improve the quality of life through continuous process of optimization
  • Plan for the future and be ready for anything
  • See the “meaning of life”. It’s kind of inverse process for EA – we plan for activities for a reason, thus if something was done there must be a meaningful motivation behind it.
  • It’s the highest possible level of architecture. Doing EA for some company or a government will always lead to certain assumptions about the outside world. Now we can have a complete picture. Everything is organized. Bless my OCPD.
  • The complete history of everything. It’s just EA collateral but can be quite handy nevertheless.

Let me put on my “global architect” hat :cool:

By my definition of the enterprise (see the previous post) the world is just a collection of activities performed by people at different points in time in Solar System (he he :) ). They perform those activities based on their understanding of the world and motivations.

So here is Why?
We need to define top level motivations. Fortunately there are plenty of frameworks available. I will start with Maslow’s hierarchy of needs. Of course his forced hierarchy is wrong. Take ballet for example. It is an activity that addresses the metamotivation “Perfection” but also comes with poor financial security and terrible consequences for one’s health. But the taxonomy is decent so let’s rip it off:

  • Physiological needs
    • Air
    • Food
    • Water
    • Sex, questionable by some but from EA point of view :lol: the luck of motivation will lead to no action and therefore extinction. And since we are still here the motivation exists whether we want to acknowledge it or not.
    • Sleep
    • Homeostasis
    • Sanitation
  • Safety
    • Personal security
    • Financial security
    • Health and well-being
    • Safety net against accidents/illness and their adverse impacts
  • Love/Belonging
    • Frendship
    • Intimacy
    • Family
  • Esteem
    • Self-esteem
    • Confidence
    • Achievement
    • Respect
  • Self-actualization
    • Morality
    • Creativity
    • Spontaneity
    • Problem solving
    • Luck of prejudice
    • Acceptance of facts
  • Metamotivation
    • Wholeness (unity)
    • Perfection (balance and harmony)
    • Completion (ending)
    • Justice (fairness)
    • Richness (complexity)
    • Simplicity (essence)
    • Beauty (rightness of form)
    • Goodness (benevolence)
    • Uniqueness (individuality)
    • Playfulness (ease)
    • Truth (reality)
    • Autonomy (self-sufficiency)
    • Meaningfulness (values)

The next stop is to list all the possible activities, well, high-level taxonomies at least and link them to motivations.

At one point we will need to map the motivations to people, aka stakeholders. If you think it’s impossible you haven’t been paying attention to what Google, Apple, Microsoft and NSA with their PRISM project are doing. It’s not about your privacy, it’s just an excellent method to design the global architecture :)

Posted in Enterprise Architecture | Comments Off

What is enterpirse architecture?

I started with software development and then spent some time on technical architecture. Then there was a natural sense of progression to the next level, which is enterprise architecture (EA).

That’s where I hit a horde of problems. Starting with the basic one – what is enterprise architecture?

One must realize there is no standard definition for the subject. There are many close related, overlapping and sometimes vague explanations. It all boils down to what we mean by “enterprise” and by “architecture”.

Let’s for a moment say an architecture is a blueprint and the way we produce it.

For me, an enterprise (in philosophical terms) is an action performed by an agent at some point in time and space. To complete the definition I may add “… based on data/information/knowledge/understanding/wisdom to achieve its goal”, but that part is optional for unconscious agents.

That’s very abstract but in essence highlights the main issue with EA. How small or big is the action? Some may say a project is an enterprise. Some say IT department is an enterprise. Others will point out that a company is the enterprise.
And they are all correct.

Now EA is the blueprint for the enterprise. The blueprint for the project, for IT department, or some company. Or maybe me going to the local store to buy food. That is after all an enterprise of epic proportions.

Does this ring a bell? It really should. The problem it appears is not in the definition but what we want to do with it.

There are 2 sides here: on one some may want to get value from EA, on the other someone wants to sell EA.

Selling EA for the trip to the store is not going to be easy. We are talking here about description of all the stores around my current location with all assortment of products, prices, special offers, etc. across my preferences. I don’t want to deal with a complexity like that. And even if I did the value I get out of it would be minuscule. Right? Wrong! Apparently my wife use EA for shopping and saves us quite a lot of money in the process. She buys some products at Tesco, some at Asda, others at Sainsbury’s. Some in bulk, some on special offers. Does she know she uses EA? Of course not. Does she benefit from it? You betcha.

Try selling EA to someone who doesn’t understand it. It’s not going to work. And to finish the circle I state the reason: the definition of EA does not tell you what you going to do with it.
So when someone asks “what is EA?” they mean “what value do I get from it?”

Assume you have a project. What does EA give you? In essence it tells you where you want to go and what steps you need to take to get there.

What about the IT department? We can get a bit more. Not only we can see where we are going but also where we are now. We can plan, we can do “what if” and “buy vs. build” analysis. We may even propose to outsource the whole department if we see it will improve our function.

But why stop on just one department? Let’s see what EA can give us for the whole company. We can see where we are, where we want to be and how we get there. We can analyse any decision and predict the outcome. We can analyse made decision and quantify the actual impact. We can propose changes to the way the company works to improve it. But wait a second, does it mean that the budget we just discussed is an output of EA? Well, yes it does.

EA is a planning function. When you plan – you do EA. You don’t need to “buy” EA. You are already doing it. You are planning. The only thing you need to know about EA is that it is a holistic approach to planning. EA says: “if you are planning you may as well do it right”.

You plan many things and if we are talking about a big company you are not the only one. What EA adds on top of your usual activity is that when you plan make sure you know what others planned and vice versa.

So what again is the value of EA? These come to mind:

  • We plan with the main priority on reducing costs and increasing returns.
  • We assess innovations and know how we can benefit from them.
  • We plan for any decision to be made and thus we are sure it was right and we are prepared and go forward with clear head ready for anything.
  • We make sure the plans are consistent across the enterprise. If a captain said we go left everyone will go left even if they are not sure where left is.

And what is not EA then?

  • The decision making. EA tells you what may happen if the decision is made but it will not make that decision for you.
  • The execution of the plan. EA is about plans, not putting them into action. You may monitor the execution just to correct the future plans but that’s about it.
  • And then there is Strategic Planning. This activity is usually excluded from the domain of EA. But to be honest I see no point in that – it’s just another planning activity that concerns the company.
Posted in Enterprise Architecture | Comments Off

Fonts

Font is a computer program. As such it requires a license. Surprised? I was. You cannot simply use some font in your program, like a computer game for example, without considering legal side.
Read basic guide to font licensing

Posted in Game development | Comments Off

boost::signal

So I am following this guide on Boost library and got to boost::signal, which looks exactly as multicast delegate in .NET. I am currently on version 1.54.0 of Boost and use VS2012.
Here it goes:

warning : Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING.

Hm…ok… let’s use Signals2. We look at the docs and copy “Hello, world” example to Visual Studio. Shall we run it?

error C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

Yes, I got it, it’s not Boost fault and can be cured by adding “_SCL_SECURE_NO_WARNINGS” to preprocessor definitions. But to be honest I expect examples for beginners (which I am) to work in the most used C++ IDE. It will now take me some time to trust this part of Boost.

Posted in Boost | Comments Off

Fixing C4005 warning

In Windows 7 if following some of the DirectX guides you can see “warning C4005: ‘DXGI_STATUS_OCCLUDED’ : macro redefinition…”
To fix it do the following (full advise here)

  • Open Properties for the project and select the VC++ Directories page.
  • Set these directories as follows:

Include Directories: $(IncludePath);$(DXSDK_DIR)Include
Library Directories:  $(LibraryPath);$(DXSDK_DIR)Lib\x86

  • Click Apply
Posted in DirectX | Comments Off

Smart pointers

It’s a question of ownership really. Who does own the underlying object? In Boost we have

  • scoped_ptr and scoped_array – private ownership. I got my hands on the object and only I control it
  • shared_ptr and shared_array – shared ownership with internal reference counting. Collective thinking, we own the object and anyone if free to join
  • intrusive_ptr – shared ownership with custom reference counting
  • weak_ptr – no ownership. I don’t own anything but I can tell you who might

And then there are std:auto_ptr and std::unique_ptr. They do ownership transfer. That is only one owner is allowed at a time.

	auto_ptr x(new int);
	auto_ptr y;

	y = x;

	cout << x.get() << endl; // NULL !!!
 	cout << y.get() << endl; // not NULL
 
	unique_ptr x(new int);
	unique_ptr y;

	y = move(x);

	cout << x.get() << endl; // NULL !!!
 	cout << y.get() << endl; // not NULL
 

A while back I read Jeff Alger book "C++ for Real Programmers". That was before Boost. I think it was written even before auto_ptr. For anyone interested in C++ history I highly recommend it. At least it will be obvious why we have such a diversity of smart pointers.

Posted in Boost, Memory Management | Comments Off

Fast inverse square root

Fast inverse square root can be used to calculate the dx and dy for an object that moves in a straight line. The code is in Java.

float inverseSqrt(float x) 
{
    float half = 0.5f * x;
    int i = Float.floatToIntBits(x);
    i = 0x5f3759df - (i >> 1);
    x = Float.intBitsToFloat(i);
    x = x * (1.5f - half * x * x);
    return x;
}	
Posted in Useful Code | Comments Off