22. Oktober 2008

I am a Professional Paranoid

I am a software developer. I make things work. Sometimes I make a mistake. But only about once per year. I mean serious mistakes, a wrong Architecture, a buggy code line that requires an emergency release. That's OK, you think. But...

...there are 10 developers. Each of them does very good work. They deliver solid, tested, working code. They make only very few mistakes. Only one each year. I mean the very serious errors. This makes an emergency release every month. Each new release is followed by a bug fix release. Each new feature is retarded by the emergency release of the previous feature.

There are 6 big features every year. Each feature has >1 operating components. This makes 30 components in 2 years, easily 50 in 3 years. If a single components runs into problems once per year, then after 3 years operating plays firefighter every other week. But operating is already busy maintaining and expanding the operation without serious application problems. They have their own operational problems.

All this makes me 10 times more paranoid.

Of course you make mistakes, anyone does. We test, check, and we find and fix them. But still one per year might slip through. That's still too much. We need methods to eradicate them. My methods are paranoid programming, good architecture, expectation tests, slow down, and 4-eyes.

Paranoid programming and good architecture are classics. 4-eyes is useful in extreme cases and dangerous situations. You want to drop the backup database? Ask someone else, if the statement is correct. She will notice that you are actually dropping the live database.

Expectation testing means, that you plan what to expect from a test. Think of the result before you click the button. Do not interpret test results. Plan the result, make a theory, and confirm the theory. The system tells you facts. And facts are powerful arguments. They can easily convince your brain, that everything is OK. Do not let them convince you. Let the facts confirm your expectations. You are the boss. You tell what happens, before it happens.

Slow down means that you do not hurry delivery. Coding should be quick, dynamic, agile. But delivery, be it deployment, delivery of results or code check-in may be slow. Take your time to think about what you are doing and if it is really brilliant. Stand up, walk around the chair, sit back, think. Take the time. It's only 3 minutes. It's nothing compared to the work before, nothing compared to the consequences of failure.

The goal is NO MISTAKES. That's impossible. But if we do everything and more to make NO MISTAKES, then we might end up at really only one per year, per developer. That would be fine.

21. Oktober 2008

Standardising Virtual Worlds: Do Not Hold Your Breath

We know it all: there will be one 3D Web in the future. All virtual worlds will be unified into a single system. A single 3D world player will interface to many virtual worlds (VW) and there will be multiple compatible players. We know it, we talk about it, some of us even work on it. The term "walled gardens" expresses our dream to overcome the current fragmentation. But it is a dream, rather than an expectation. Because most of us in the VW domain do not really know how to achieve such standardization. We know it will happen, but we do not know how. The standardization question is wide open. Of course, some people can answer it already.

Multiverse and Metaplace develop protocols with standardization in mind. They also create showcases. But the real driving force is to provide infrastructure, that others can use to create content. Their infrastructure comprises protocols, formats, and mechanisms wrapped into sample implementations. Their answer is: "use our protocol. It's been designed exactly to be used by everyone". That is probably true. But for the rest of us the question remains: which of them? Would any of the new "created as a standard for all of us"-systems drop their protocol and use another one? Probably not.

Second Life and There.com also have answers. The Second Life community just says: OGP. Others say OGP is the least common denominator. That's neither fair nor true. See how much value has been created with HTTP as common denominator. A chat protocol would be the least common denominator for VWs. A chat protocol just mediates messages. OGP is much more. OGP is feature rich. But still There.com surely finds deficiencies and has no incentive to make a transition. There.com and many other mature VWs have a well running system. Would they join OGP? Probably not.

Then come World of Warcraft and other systems, which have 10 Mio. monthly paying power users. Their answer to the standardization question is: "why?". Maybe as good as "let's see".

There are newcomers striving to create standards, there are mature VWs which move to create standards based on their 10% market share and completely uninterested behemoths. The current situation ist very unlike the Web where competitors dropped out quickly when HTTP arrived. It is much more like the Instant Message and Presence (IM/P) situation 10 years ago. Uninterested behemoths (e.g. ICQ, AIM), established players tweaking their protocols (SIP, XMPP), and newcomers determined to create a standard from scratch.

If this is true, then there is no hope for a unified VW protocol. Extrapolating from the IM/P experience, we can expect multi-protocol VW clients with protocol plugins for individual systems. We are now running Miranda, Trillian and others and have our buddies on a unified roster. A typical protocol plugin has less than a MB of code. A SL/Metaverse/There client weights in the order of 20 MB. Applying a conservative Moore's law, the 500 kB of 1996 is the 20 MB of 2008. We are now talking about standardization. We go to conferences, which remind me of lively IETF meetings about IM/P standards. Some are implementing "the future standard". Some hurry to make small changes to their existing protocol to propose it as "the standard". Some just wait and see.

We can expect multi-protocol clients in a few years and it will be long time until there is a common standard. Maybe 20 years from now. The IM/P domain did not get there after 10 years. But there is progress. IM/P has only been partially integrated. The roster is unified, i.e. only one client with one window on the desktop. But account-wise IM/P is not integrated. There are some big players connecting their account spaces. But it is not yet common. You need an account in every network. We can expect the same in VWs for a long time.

Even with incompatible protocols we would hope for avatar unification. But it will probably turn out as in the IM/P space. Different world, different account, each one with an avatar. Primarily because of different policies. There are VWs with user created content. How would you use these avatars in WoW or a controlled There.com. If you buy something in one world and you get it for free in another, some content creators might be very upset. That's a pity for worlds which rely on user generated content. And there are technical limits. How shall engineers handle scripted clothing from SL in a world which does not support it.

What we can hope for is partial integration where a world manages an avatar and other worlds can at least show it. Maybe not all features, maybe just the basics. The goal for the near future is to display avatars from other worlds. That also fits to the business model of VWs. Users remain full members of their primary world. They customize the avatar with all features offered by the world, from a user driven clothing industry to quest rewards. But they can visit other worlds with this avatar.

28. September 2008

And the Geeks Shall Inherit the Earth

http://www.pbs.org/cringely/pulpit/2008/pulpit_20080922_005421.html

Stromkonzerne steuern Kraftwerke nach Bedarf. Kernkraft sorgt für die Grundlast. Wind und Sonne sind Glücksache. Kohle und vor allem Gas versorgt die Spitzen. Wenn in der Halbzeitpause alle warmes Wasser brauchen fahren Gasturbinen an. In Wirklichkeit fahren die schon vorher an, weil man ja weiss, dass die Pause kommt. "Man"? "die Konzerne"? Nein, jemand. Es ist jemand, der für 10 Millionen Verbraucher mitdenkt und die Turbinen anwirft. Nicht Software, nicht ein Kommittee, nicht der Vorstandsvorsitzende, sondern einer den keiner kennt: der Geek, der Techniker, der das schon seit Jahren macht, der schon viel gesehen hat und weiss wie die Dinge laufen. Einer mit tiefem Technikwissen und technischer Intuition (auch Bauchgefühl genannt). Sicher, da gibt es viele Leute, die mithelfen. Techniker in den Werken, in den Netzen, Händler und Vertriebler, denn irgendwo muss auch das Geld herkommen für die teuren Spielzeuge.

Aber wenn all die Technik, die Verbraucher, die Ressourcen bereitstehen, dann ist da einer, der weiss wie viel das Netz in 10 Minuten braucht und wo er es her bekommt. Der meldet an das Gaskraftwerk A und Kohlekraftwerk B, dass in 10 Minuten 350 MW gebraucht werden. Er hätte auch C anrufen können, aber C hatte in letzter Zeit Probleme mit der Umspannkopplung und liefert außerdem gerade ins Ausland. Wenn da beim Netzumschalten was schief geht, sinkt die Spannung in den Bereichen D und E unter 200 Volt und 10% der PCs vertragen das nicht. Deshalb lieber von A und B beziehen bis die Uptime von C wieder besser ist. Ok, F wäre auch ein guter Lieferant, aber teurer, als A+B und ausserdem hält der Wind in Norddeutschland noch ein paar Stunden, sodass der Ökostrom gerde stabil ist und die volle Kapazität von F nicht gebraucht wird. Das klingt vielleicht langweilig, aber so sind die Entscheidungswege in der Leitzentrale. Viele Faktoren, Fakten, Randbedingungen, aber auch Erfahrungswerte und Intuition.

Nichts anderes bei einer guten Werbekampagne. Dahinter steckt ein Kopf, der einen neuen Trend umsetzt mit einem guten Bauchgefühl einer Idee, ein Visionär der oder die weiss was dem Markt jetzt gerade voll reinlaufen wird. Viele Mitarbeiter, Ausarbeiter, Zuarbeiter, aber eben auch ein(e) Leader(in) mit dem vernetzen Denken für die entsprechende Branche.

Hinter jedem Produkt steht ein Geek. Der(die) Designer(in), Macher(in), Tüftler(in), Realisierer(in). Meistens irgendwie unbequem, unkommunikativ, exzentrisch, rechthaberisch und in den Augen mancher schwer steuerbar und potentiell gefährlich, aber trotzdem irgendwie unentbehrlich. Das ist die, die Bob Cringely meint.

27. September 2008

Gummibärchen...

...sind kein Stück besser als wir Menschen. Rote Gummibärchen als "anders" zu bezeichnen bloss weil sie eine andere Farbe haben, ist echt ungummibärlich. Die Roten sind zwar in der Minderheit, aber auch die Gelben sind nur eine von vielen Farben. Die Vielfalt macht die Tüte bunt.

Wären die Gelben wirklich besser dran, wenn es nur Gelbe gäbe? Fühlen sie sich durch die wenigen Roten bedroht? Würden die Gelben wirklich besser schmecken, wenn es keine Roten gäbe? Eigentlich sollte nur der Geschmack zählen und nicht die Farbe. Und die Vielfalt.

Auch Du kannst helfen: bevorzuge nicht die roten Gummibärchen. Zeige den Gelben, dass sie genauso geliebt werden.

26. September 2008

Slashdot Auswertung

Das gestrige Slashdotting brachte 30.000 Unique Visitors.

Davon:
14.000 aus USA,
2500 UK
auf Platz 6 mit 1049 Deutschland

61% Firefox, 21% IE
72% Windows, 14% Linux, 12% Mac

Erstaunlich sind die 61% Firefox, aber trotzdem 72% Windows. 61% Firefox ist ziemlich geeklastig und wahrscheinlich typisch für Slashdot. Aber ich hätte mehr Linux und vor allem Mac erwartet. Mac entspricht ziemlich genau dem Marktanteil und ist damit nicht geekig verzerrt. Das heisst: bei echten Geeks (Slashdot Lesern) ist eher Linux stärker vertreten, als Mac.

Das große weblin-Banner rechts brachte unglaubliche 6 weblin User, immerhin einstellig. Das ist wahrscheinlich die schlechteste Conversion Rate, die es jemals gegeben hat. Das heisst: mit einem Slashdot Artikel werben bringt nichts. Der Artikel muss zum Produkt passen. Sowohl Artikel, als auch Produkt müssen Slashdot Lesern echten Mehrwert bieten. Slashdot Leser lassen sich nicht verführen.

Die Bildschirmauflösungen sind auch bemerkenswert für Webdesigner: ca. 1/3 haben 1280x1024. Dann liegen fast gleich auf 1680x1050/1024x768/1280x800/1440x900 mit 13/13/11/10 %. Also insgesamt die Hälfte mit vertikal >= 1050 und nur 1/3 mit weniger als 1024.

Als Anekdote: Flash ist mehr up to date als Internet Explorer. Fast alle (95%) haben die neueste Flash Version. IE 7 und 8 kommen nur auf 64%. Ein Drittel bleibt standhaft bei IE 6.

Java ist noch nicht tot wenn man auf 11% verzichten kann. Wenn allerdings Mac ein "must" ist wegen dem Marktanteil, dann ist Java ein "don't".

Nachtrag: Inzwischen sind 40 k zusammen gekommen. Sehr schöne Grafik von Google Analytics:

_happy_slashdotting()

20. September 2008

TwiX - a Twitter to Jabber (XMPP) Gateway

Tired of waiting for Jabber device updates from Twitter.com?

Try TwiX ...

...and use your Jabber client to send and receive tweets.

TwiX polls twitter.com for new tweets and sends them to your Jabber account as instant message. It also sends your tweets to twitter.com.

Features:

  • Twitter from your Jabber client
  • get tweets to your Jabber client
  • runs on Windows and Linux with .NET and mono
  • Jabber command line + statistics
  • detailed log output
  • many command line options (you won't really need)
  • TwiX runs well on just the 3 account parameters shown below

Release: TwiX-0.5.0.zip (Best ever)
Source code: TwiX-src-0.5.0.zip (MS Visual Studio 2008)
License: 3-clause BSD (Use it but don't sue me)

Sample command line:
% twixd -twitter my-twitter-token:my-twitter-token-secret
-xmpp my-real-jid@jabber.org
-client my-twitter-gateway@jabber.org/TwiX:gateway-password

Command line options:
Usage:
-twitter : # required: twitter oauth token and secret, colon separated
-xmpp # required: your Jabber ID to send/receive tweets
-client : # required: an arbitrary Jabber account to be used by this Jabber client as a relay, colon separated
-interval # optional (default=120) twitter polling interval
-hideself # optional (default=yes) hide my own status updates
-xmppresponse # optional (default=yes) tell me about the submission status
-xmppupdates # optional (default=yes) send updates at all
-xmppreconnectinterval # optional (default=30) XMPP reconnect interval
-loglevel # optional (default=user) max log level
-logfile # optional (default=) log file name
-logconsole # optional (default=yes) log to console
-version # optional: print version info
-help # optional: this text

Jabber command line:
/twix quit
/twix reload
/twix stats
/twix resetstats
/twix set xmppresponse <on|off>
/twix set xmppupdates <on|off>

_happyTwittering()

Tscheljabinsk Smiley auf Google Maps

Die Bewohner der russischen Stadt Tscheljabinsk haben berechnet, wann der Satellit QuickBird, der Fotos für Google Earth und Google Maps macht, ihre Stadt überfliegt. Sie bildeten einen riesigen Smiley. Damit viele Leute kommen wurde ein Volksfest mit Band organisiert und alle Zuschauer haben sich gelbe Capes übergezogen.

Und es hat tatsächlich geklappt. Das Foto ist auf Google Maps angekommen. Es sieht so aus, als ob sich die Verantwortlichen bei Google hier ganz besonders schnell waren. Normalerweise stellen sie neues Material nicht so schnell online. Vielleicht sind sie selbst begeistert von der Idee, dass eine ganze Stadt sich so ins Zeug legt.

Wenn das mal keine Nachahmer findet.