16. Januar 2010

Metaprognose Fazit 2009

Nun ist es offiziell. Das BIP ist um 5% geschrumpft.

Hier nochmal der erste Absatz meines Postings vom 6. Februar:

"Zur Zeit überbieten sich die Wirtschaftsforscher mit Negativprognosen. Während vor einem halben Jahr für 2009 noch 1,5% Wachstum in Deutschland vorhergesagt wurde, liegen wir im Moment schon bei -2,5%. Extrapoliert man das Q4 2008, dann wären auch -4,8% möglich."

Na bitte.

Nur so nebenbei: da steht auch "DAX 3.500". Das war bei einem Stand von 4644. Einen Monat später war dann das Minimum bei 3666.

Gar nicht so schlecht für'n Techie.

_happy_forecasting()

9. Januar 2010

Blizzards Next MMO

The next game will be a cross over between MMORPG, Adventure, and the Sims in a futuristic cyber punk world with space flight and also dark corners. Here is why:

What's next?

There was always the question what would be the next big thing. But until recently the industry was too busy creating Everquest clones with many different skins. The main movement in the MMO space was to duplicate the success of WoW. We saw very successful games by 2004 standards, which are now regarded as complete disappointments because they failed to reach WoW numbers.

Now is the time to go one step further. The blog-chatter about what's next is ramping up. More and more people are talking what could be next. Blizzard started hiring for the next game some time ago, hinting at a "different massively multiplayer experience". Clearly, the concept of monster beating with the tank-healer-DPS trinity will not be enough for the next generation of games. Repeating the same in a steam punk or wild west universe won't do.

To call it the next generation there must be something really new and different. On the other hand, Blizzard does not primarily innovate. Blizzard perfects. So, we have to look for existing trends which can be pushed to the next level by extensive polishing.

Crossover and Integration

I believe that crossover and ubiquity are the key motives. Not the ubiquity of augmented reality. That will be left for the 2025 generation. The next MMO will break out of platform restrictions and single operation models. The next generation will span multiple platforms, integrate different play styles and address diverse audiences in one game.

We already see many of these developments. CCP is very successful with EVE-Online (by 2004 standards :-). They lead the way into new territory with a console game that is separat from EVE, but still integrates with the PC game. Public character profiles outside of the game client where once a "great" feature. They combine the game world with the Web and are now taken for granted. Some publishers successfully integrated the mobile platform with PC games. Virtual goods and social games made a remarkable splash last year and are expected to explode in 2010/11. Virtual goods are a great way to address multiple platforms at once and integrate casual gaming with hard core play style. Social networks are sometimes regarded as virtual worlds. Not in the 3D sense, but in the sense, that people and all of their friends live there.

200 Million Dollar Production

There is a company that managed to perfect trends so well, that it produced the leading game in 3 genres. Blizzard also is the only company that dares to invest a lot of money into an MMO. After the perceived failures between 2005 and 2008 investors shy away from MMOs. Blizzard surely believes in its own capabilities having proven them 3 times in a row. And we are talking about a lot of money. Not the $ 60 Mio. price tag of WoW. We can expect the next generation to cost as much as a big movie production. Something like $ 200-300 Mio.

Casual and Extreme

So here is my take: Blizzard needs something that captures the masses. For the next thing they need a larger audience than WoW. A demographics like Facebook is the goal and Facebook numbers would be cool. This means normal people. Not only hardcore gamers but average people. Normal people, especially women want to live, not slay monsters. They want to live a life, tend their stuff, socialize, and care for others. Micro-managing a farm or a fish pond is currently big. Micro-managing also has been very successful with women earlier. That's the Sims aspect of the new game: housing, living, socializing. Yep, Sims online failed, but nobody knows why. This time the concept will succeed as part of something larger.

Adventure and Social

There must also be adventure. Story is an emerging trend. Blizzard will capture adventurers with better quests and story driven soloing: a Longest Journey aspect instead of the kill-ten-rats grind. Raiding and end game is and will be important. There must be dungeons. That's the easy part: the WoW aspect. Of course, it's not a sharded server. Everyone will live in the same huge universe. That's a requirement of the Facebook aspect. It is free to play with virtual items driven premium features covering casual and power gaming styles.

To capture the masses, the game will not be limited to a genre. Genre can scare off customers. It won't be pure fantasy, not SciFi, not just underworld darkness. Not Starcraft, not WoW, not Diablo. It will be a new setting. The Sims aspect needs a big bright world. The Longest Journey works well modern setting. However, the WoW aspect needs dungeons and mystery. And when you enter a space ship then you are clearly SciFi.

Cyber Punk and Monsters

Fortunately they can all be combined. Imagine a futuristic city with player housing. This is where you live. The normal game life happens in a hyper developed privileged world, surrounded by technology and lifestyle with current western and Asian street trends. Starting in this futuristic environment players would adventure in the "upper world", uncover conspiracies and safe the world (see The Longest Journey). They could easily switch to cyberspace (Otherland) for parts of the quests. My own wishful thinking would add space travel and combat a la EVE-Online or SWG, including an Elite universe.

And where there is light, there is also shadow. The underworld of the distant future is big, dark and old. It is a perfect environment for a World of Darkness where technology meets arcane arts and monsters. Vampires? no problem: a product of criminal bio engineering or uncontrolled nanotech. Or they just developed over thousands of years in kilometers deep dungeons of a planetary megalopolis. Monsters have been gengineered or imported over thousands of years. The perfect setting for an embedded RPG shooter. But "underworld" does not imply darkness. Future tech will supply lower levels with a virtual sky and enough light, if needed. It's just not as civilized as the upper world.

Genre scares off customers. The basic system will be genre free with a slight twist towards hyper modern reality. Other genres will be embedded. Genre embedding is already happening. We stopped wondering a long time ago about the gnome steampunk embedded into Tolkien-fantasy WoW.

Combat and Farming

Of course adventures in both worlds will have combat with the full range of skills, guns, quests, shooting, nano and bio weapons, field effect, casting, regeneration, healing, vicious enemies, robots, cyberspace hacking, monsters. But also character development, tending the garden, arranging player housing and meeting friends. A world where the whole family can live, do their preferred activity (dad: adventure, mom: sims, son: shooter, daughter: social) and meet for diner. A single access point for an online life accessible from different media like PC, console, mobile, browser.

EVE, Second Life, Sims, Facebook, Zynga: watch out.

Sounds too much? we are talking about a product life cycle from 2015 to 2030, about 64 core CPUs, full body gesture controlled Sims and friends who join your family in their virtual living room with ambient 3-D proximity voice and video. It will be futuristic ... and polished.

_just_guessing()

Update:
Just minutes after I posted, I saw this Massivly article in the feed reader. Massively posted 5 hours after I started writing. What a coincidence. Especially since I copied large parts of the text from my 2 years old "suggestion" to CCP. @CCP: it's not too late.

20. Dezember 2009

Neue Wege im IT-Management: Artikel im VentureCapital Magazin 12/2009

Im aktuellen Heft vom VentureCapital Magazin ist mein Artikel über Scrum erschienen (Volltext wegen Copyright nicht frei verfügbar).
Keywords: IT-Management Agile Entwicklungsmethoden Investoren Internet-Startups Softwareentwicklung Pitch Projektsteuerung Scrum Cloud-Computing Open Source Kapitalgeber Time to Market Scrum eliminiert Unproduktivität "The Mythical Man-Month" Frederick Brooks wenige Funktionen Output mit Scrum verbessert Scrum-Prinzipien doppelte Geschwindigkeit Games- und Internetbereich Microsoft, Intel, Yahoo, Accenture, Adobe und GE Healthcare Enfant Terrible Mainstream Jeff Sutherland OpenView Venture Partners Venture Capitals Erfolgschance Investments Qualität Effizienz Due-Diligence Prüfung Impediments Hindernisse Heiner Wolf Gründer CTO virtuelle Welt weblin 3 Mio. User Chief Scientist Open Virtual World Projekt Social Games und Virtual Goods

26. November 2009

IT-Projekt der Bundeswehr in der Krise. Wie dumm kann man sein?

Die neue Nachricht: "beim IT-Projekt Herkules der Bundeswehr ufern die Kosten aus".

Eigentlich nicht ganz so neu. "Bereits im Juni hatte ein interner Bundeswehr-Bericht dem Projekt eine verheerende Bilanz ausgestellt".
Aber: Herkules kam in diesem Blog schon vor 5 Jahren vor: Grosse Softwareprojekte in der Krise.

Besonders interessante Fakten:

  • IBM, Siemens und der Bund haben für das Projekt ein Joint Venture gegründet
  • Seit 5 Jahren ist das Projekt in der Krise, aber Führungskräfte haben auch dieses Jahr Boni bekommen
  • Der Bund hat nichts zu sagen, da er nur 49 % der Anteile hält
  • Das Projekt "lässt sich inzwischen nicht einmal mehr kalkulieren"
  • Ministerium: Grund für steigenden Kosten ist fehlender Wettbewerb
Ist eigentlich schon jemand aufgefallen, dass der Bund 100% zahlt. Bei jedem Drecks-Startup setzen Investoren, die 30 % zahlen, jemand in den Aufsichtsrat. Ab 50 % Finanzierung haben sie gerne die Mehrheit im AR.

Der Auftraggeber hat den Dienstleistern gestattet, eine Abwicklungsfirma zu gründen. Wahrscheinlich hat jemand das dem Bund empfohlen, "um alles zu bündeln". Aber die wichtigste Eigenschaft dieser Firma ist, dass man sie einfach dicht machen kann, falls etwas schiefgeht. Der Bund kann dann nicht mal gegen den Auftragnehmer klagen. Der ist ja dann gelöscht. Siemens/IBM sind fein raus. Eine speziell gegründete GmbH ist DIE Methode, um Verantwortung abzustreifen. Das weiss doch jeder.

"Der fehlende Wettbewerb lässt die Kosten explodieren", hä? Was erwartet man denn, wenn man eine Firma mit der Abwicklung von mehreren Milliarden Euro beauftragt. Wo soll der Wettbewerb denn herkommen?

Wer hat eigentlich diesen Vertrag verhandelt? Das ist ja nicht nur Dummheit, sondern Untreue. Vielleicht sollte man sich mal anschauen wo das Management vorher gearbeitet hat. Ob da nicht jemand aus dem Ministerium rüber gewechselt ist und jetzt gut verdient.

Wie wäre es mit einer parlamentarischen Anfrage: Arbeitet jemand, der auf Seite des Bundes den Auftrag verhandelt hat, jetzt beim Joint Venture oder bei IBM/Siemens?

_happy_moneywashing()

21. November 2009

Integration Tests are a Superset of Unit Tests

The agile world is unit test crazy. That's ok. But it is not enough. Integration tests are a much under valued species. I like unit tests. I need unit tests. I do not know how we could ever build software without unit tests. But pure unit tests jump too short. We need more.

I am talking about unit test frameworks like NUnit. You just write the test function, add an attribute and the framework finds the function and adds it to the test list. Your test function tests a real function. Hundereds of those make a complete test set. Great, but not enough. What is missing?

You are supposed to write unit test code, which tests only single functions and methods. The idea is to isolate functionality and test isolated. I know the theory: Interfaces are contracts. There are unit tests for every behaviour. Even failures should be verified. TDD (test driven develpment) write the test as specification. I know all that bloat.

Fact is: these tests are important, but they ignore reality. Most problems result from interdependencies and side effects. In theory, there are no side effects. In reality they are there. Unit testing reduces them. Unit testing gives complex systems a chance to work. Chance is not enough. We must make sure, that systems work, not only functions. That's the part of the integration test.

Integration tests verify complex operations. Example: assumed I have a typical cached business object. An integration test would check the complete process:

  • fetch the object from the cache,
  • if it's not there, construct it from the DB,
  • put it in the cache and
  • return it at the same time.
  • communication with the DB includes a
  • web service interface and 2 layers of
  • storage driver and
  • SQL access code.
This is a vertical test.

In contrast: unit tests would test everything isolated:
  • does the cache access work? with a simulated in-memory cache. Beware of the network inside of unit tests.
  • does the database access work? using a fake DB, because relying on a real DB server is uncool, not "isolated" enough
  • would the webservice return the correct data? using a mock request object and fake data.
  • does the webservice format correctly? again: fake data
  • everything tested with made up configuration data and carefully constructed dependency injection.
I am totally pro isolated tests. But they are so un-real, mocked-up, simulated. They need something real on top. They need integration tests. Integration tests assert, that complex systems work despite complexity. We need integration tests. Wenn need lots of them. Unit tests just hope, that everything works together. Dream nicely.

We need integration tests anyway. And integration tests are in the real system. They are live. Unit tests are in a separate project and can not be live. Two separate test sets. Too many for me. There is no reason to split testing into 2 test sets, which are operated very differently. You run the test project from time to time and you are happy about the green bar. I run the real project all the time. Why should I run the test project from time to time, when I can run tests in the real environment with just one click.

Integration tests can be written to test isolated functions. They are a superset of unit tests. My interation tests check isolated functions PLUS vertical functionality PLUS live system health.

Unit test frameworks jump too short. They help, but ignore reality.
Get real. Switch to integration testing.

Update:

Changed the title from "Superior to" to "a Superset of".

_happy_testing()

3. November 2009

mod_mono Control Panel Extension

Just added a list of URLs to the mod_mono Control Panel (CP).

The Apache module mod_mono has a small control panel. The CP has some (actually very few) control features. You can see how many requests are currently processed, how many are waiting and you can restart the server process (the mono worker process, not the web server).

It can be enabled by

  1. <Location /mono>
  2. SetHandler mono-ctrl
  3. </Location>
Then go to http://your.host/mono. Unfortunately, it only shows how many requests are in work. I was missing information which requests are processed and waiting. I need the URLs. I want to know which ones take much time and which are blocking the server under high load.

So, I extended the CP to show a simple list of currently processed and waiting URLs.
  • First column is the request serial number.
  • The second colum is the processing time in seconds.
  • The third column is the URL with query.
Waiting requests are also listed. This happens only if the max processing limit is exceeded and requests wait (not in the screenshot). The waiting list shows the wait time instead of the processing time.

All data is stored in a shared memory segment.

BTW: mod_mono is programmed in C with not too much structure. No offense guys. I am very thankful for it. Great work. I know, it's open source. I should not complain, but improve it (which I did).

Why did I extend it? 2 reasons:
  1. I believe that an operator of a real service needs more information about what is going on than just the number of requests. We used apache server-status heavily. This is the same for mono.
  2. Flooding the server with dozens of integration tests, which spawn 200 backend requests each, stalled the server. I was afraid, that mon_mono has a problem under high load.
Once I knew the URLs, I could clearly see, that mod_mono is fine. It was just a normal deadlock situation where an frontend request tried to make a backend call via HTTP and could not get a free slot. Processing slots are limited by the thread pool. It can be increased, but there must be a hard limit. Allowing unlimited threads would make the server unusable under load, whereas deadlock situations can be avoided.

All slots are occupied by requests which wait for completion of backend requests, which do not find a free slot. Not a mod_mono issue. The situation has been resolved by splitting frontend and backend into separate mono applications. This is the normal configuration of a real multi-tier system, anyway.

The patch:

  1. % cd mod_mono-2.4.2/src
  2. % wget http://wolfspelz.de/download/mod_mono-2.4.2.patch
  3. % patch < mod_mono-2.4.2.patch
_happy_patching()

Update: the patch has been integrated into mono 2.6

29. Oktober 2009

How to Reactivate Weblin with 2 XML Files

In the forum of the Open Virtual World project someone posted a way to reactivate Weblin. Based on this information and after my own tests I can confirm, that it works.

It is even simpler and works without programming. All you need is a Web space to put some files.

You create a Jabber account on a public Jabber server, (e.g. http://register.jabber.org). Then put some files on your Web space and configure Weblin to use them. You need 2 XML files and an image as avatar. If you want an animated avatar then you need an additional XML and some animated GIFs.

Quick Try:

Enter in the Windows registry ...

[HKEY_CURRENT_USER\Software\zweitgeist\Firebat\2.0.0\Config\Operation]
PlatformLoginURL=http://ydentiti.org/test/Planta/login.xml
Restart Weblin .. and you are Planta. But, we do not want to be Planta, therefore to create your own...

HowTo:

The 2 most important files are login.xml and identity.xml. I have put both as examples on my web server:
http://ydentiti.org/test/Planta/login.xml
http://ydentiti.org/test/Planta/identity.xml
In login.xml is the URL of identity.xml and you have to enter the Jabber account: Jabber passwort ("secret"), Jabber user name ("planta") und Jabber server ("jabber.org").

In identity.xml is a link to the avatar image:
http://ydentiti.org/test/Planta/still.gif
Now you tell Weblin to use login.xml at startup. You set the registry key like this:
[HKEY_CURRENT_USER\Software\zweitgeist\Firebat\2.0.0\Config\Operation]
PlatformLoginURL=http://ydentiti.org/test/Planta/login.xml
Of course, that's the URL of your web space.

Where do you get the software from? Just copy the folder "C:\Program Files\weblin" from a friend. There is no installer required.

For Advanced Users:

Because the PlatformLoginURL is public, anyone can use this avatar (and the Jabber account). The Weblin login screen requests a password. It sends the password, but your web space probably returns the login.xml without checking the password. If you want to protect your login.xml, then you must create a login.php instead of the login.xml. Your login.php can check the HTTP Basic Authentication. You could also protect the login.xml with .htaccess. Attention: .htaccess protects the entire folder. Do not accidentally deny access to the other files. Anyone must be able to fetch your identity.xml and avatar image. You can put login.xml into a separate folder and set PlatformLoginURL accordingly.

For Advanced Users:

identity2.xml has an additional link to an animation file:
http://ydentiti.org/test/Planta/avatar.xml
which links to animated GIFs. This provides your weblin with actions and animations.

Required:
<config xmlns="http://schema.bluehands.de/character-config" version="1.0">
  <sequence group="idle" name="idle1" probability="1000" type="status" in="standard" out="standard">
    <animation src="still.gif" />
  </sequence>
  <sequence group="moveleft" name="moveleft1" probability="1000" type="basic" in="moveleft" out="moveleft">
    <animation dx="-100" src="left.gif" />
  </sequence>
  <sequence group="moveright" name="moveright1" probability="1000" type="basic" in="moveright" out="moveright">
    <animation dx="100" src="right.gif" />
  </sequence>
</config>
For the start copy this file and use your own GIFs. The XML and the GIFs are cached by the client. If you change something, you have to delete the client cache (C:\Documents and Settings\%USERNAME%\Application Data\zweitgeist\cache).

avatar.xml format in short:
  • <config> has multiple <sequence>
  • <sequence> has one <animation>
  • <sequence> has an attribut "group". This is the action, walk, stand, sleep, wave. If there are multiple actions in the same "group", then Weblin searches a <sequence> randomly controlled by the relative "probability".
  • <sequence> has an attribut "name". Must be unique, but can be anything.
  • <sequence> has an attribut "probability": relative frequency of the <sequence> in a "group"
  • <sequence> has an attribut "type" with values "status", "basic", "emote". "emote" appear as actions in the avatar-menu.
  • <sequence> attributes "in" and "out" can be ignored. They are for advanced uses with automatic selection of transitions between actions.
  • <animation> has only the attribut "src". An animated GIF URL absolute or relative the XML file

_happy_reviving()