Current side projects

by Martin on April 22, 2011

Today is a public holiday in Germany and as such the “friendly” side of my split boss-personality granted me half a day off. So after getting all to-dos of the day ticked I was thinking about what to do with my free time. I spent the first one or two hours finishing Portal 2 (I absolutely recommend it to anyone…awesome game!) just to return to an annoying state of boredom immediately afterwards. Figuring that the closest thing to a hobby I got was coding I decided to work on one of the side-projects I got in the pipeline right now. Problem was: I realized – once again – that there are a crazy 3 (three!) of them right now and that I couldn’t decide on which to work on. So I figured: Good opportunity to breathe some life into this boring blog and let you know what else is cooking besides AirlineSim. Maybe you can decide on a favorite…

Prosperous Universe

When we decided last year that we needed a second project to become less dependent on the aging AirlineSim, we started out with a survey in which we asked about 200 people what kind of game they’d like the most. Based on these results (and some personal preferences) we came to the conclusion that it had to be more accesible and less complex than AirlineSim to appeal to a broader audience. On the other hand we still wanted to stick to our favorite genre, so it had to be a business sim. The resulting concept was a game constructed around a space setting, featuring a graphical yet abstract hex-field interface and a strong production and trading component.

Current state: Never left prototyping. I did a few prototypes for the space and surface interface respectively. A basic framework for construction of buildings and manufacturing exists, but the overall thing just didn’t feel right. Maybe that’s because we lost focus on it too quickly due to more urgent things, maybe it’s because I have a hard time writing games I wouldn’t actually play myself in the first place. The basic idea just keeps on hibernating though, so who knows what comes off it sooner or later.

AirportSim

I’m not quite sure why I suddenly decided to actually pursue this idea. It has been lurking around my head ever since I laid hand on the oh-so-awful Airport Tycoon and I know a game like this would be a dream-come-true for many AirlineSim players and aviation geeks. It probably has to do with the fact that I wanted to do something beyond “web development” and 3D definitely is a whole different ballpark.

Current state: Right before the point of no return. My basic Java prototype proves that – if I can keep it simple – it’s feasible to actually develop and ship a game like this for a one-man show like me. Problem is: I’d have to commit a tremendous amount of always limited resources to it. I’d have to do this in a field I have zero experience in. And when I’d decide to do it, I’d have to actually stick to it to the end since everything else would be plain crazy. Therefore I’m still evaluating it both in terms of technology choices and feasibility.

“2 Week Project”

Sometimes you need a change of scenery and “2WP” was just that: A short dip into something off the regular day-to-day work. You can find details on my motivation for this project here. The whole game is based on a concept I had been thinking about for many many years and in this project I tried to realize at least parts of it in a very much boiled down version. It’s a hardcore business sim. This means: No graphics, simplest web-interface, numbers and tables aplenty. It’s an attempt at a simulated closed economic cycle with all goods produced and transported by the players and the only AI being the population of the in-game cities who act as both the workforce and the consumers.

Current state: While the original goal – bringing the game “to market” within two weeks – hasn’t quite been met, there exists a more or less solid foundation for future extension. The game lacks a lot of polish of course, the master data and balancing are nowhere near finished and some conceptual issues still exist, but overall this is the side-project with the highest chances to evolve into an actual top-tier project of simulogics. It’s not mainstream, it’s definitely not a “social game”, but I believe there’s a market for it out there.

UI Inspiration

by Martin on September 15, 2010

For a few weeks now I’ve spent a considerable share of my development time to work on a prototype of our upcoming game title. For now I am still pretty much in the experimenting stage, trying out various different types of interfaces and playing around with different client devices (desktop, touch, mobile etc.). Beyond that, most aspects of the game are still undefined. Basically two aspects are set: The game will take place in a space setting – as our teaser site boldly states – and it will once again be a more or less serious business simulation (not a transport simulation, though).

My initial goal was to create an intuitive interface that fits both touch and regular devices equally well. But the further I got into it, the more obvious it became that there are too many tiny differences between these two worlds for my interface to work the way I imagined it. So now I’m basically back at the drawing board…this time with an initial focus on regular, desktop-based client devices.

Since I want the final result to be a proper business and management game in the fashion of the old (and not so old) classics, I’m turning to screenshots of various titles I played throughout my life as a source of inspiration. My intention is to find a decent blend of both proven and innovative concepts for the UI of Prosperous Universe.

So let’s take a quick tour of what I looked at so far:

This is a screenshot from the fourth iteration within the classic Settlers series. Most controls are arranged on a single panel on the left of the screen. The same pattern can be found in most RTS games of the time. Here two of my personal favorites, Patrician and Emperor:

A variation of this is to align the key controls at the bottom of the screen (shown here: Civilization IV, Railroad Tycoon 3).

This concept is robust and familiar to most. Dialogs can be used whenever appropriate to gain more space. At the same time it’s rather boring (old-school?) and it doesn’t make use of large screens while obstructing a large amount of space on small screens. More recent games therefore split up the controls into widget-like components that can be placed anywhere on the screen and only be displayed when needed. One example is Anno 1701 (and likewise Anno 1404 as well as the latest iterations of the Settlers…same studio):

The interface is broken down to a very low level. For example, single widgets are used to display the amount of stored goods instead of a continuous bar that spreads across the whole screen as in older titles. Civilization V uses a blend of the concepts, featuring a broken up interface while maintaining a rather conventional look of the single boxes.

A bit closer to the theme of Prosperous Universe is Eve-Online. It is not a classic RTS game but an MMO-style 4X game within a 3D space environment. Nonetheless it features a very complex ecomomic system and an astounding level of detail. The interface reflects this with independent windows and a very high information density:

The latest add-on to Eve even allows planetary structures and employs a rather abstract but modern interface to manage the facilities:

In my opinion, the interface of Industry Giant 2 is also worth mentioning. The only constantly visible interface component is a slim bar at the bottom of the screen. Everything else is done using dialogs or, most importantly, a context-sensual component that pops up right in place whenever the user clicks an element of the game’s main screen. The latest Anno uses similar methods to allow for easier and quicker construction of buildings.

It might also make sense to take a brief look at what actual browser-based space games look like today. These are two current screenshots of OGame, one of the more popular games in this field:

Maybe it’s just because this is a rather old game that only got a visual update, but generally I get the impression that many of these games still feature a conservative three-column design as found in a plethora of websites. The graphics cannot hide the fact that basically everything the player is dealing with are simple tables. A problem that AirlineSim is suffering from badly and that PU is also prone to. On the other hand, this kind of design just “works” in most environments, even on touch surfaces, as there aren’t many fancy UI gimmicks that could cause problems.

And finally, for sake of completeness, a totally different approach to game interfaces. Long live Airline Tycoon (and it’s predecessors in spirit):

If you think there are important types of interfaces/games missing in my list, please let me know and send me your suggestions in the comments!

Vollprogramm oder nicht Programm?

by Martin on June 14, 2010

In der Piratenpartei schwelt seit langem eine Diskussion, die schwer an die Grünen erinnert: Auf der einen Seite die “Kernis”, die eine Erweiterung des Kernprogramms wehement ablehnen, auf der anderen die “Vollis”, die ebenso störrisch für ein Vollprogramm im klassischen Sinne werben. Natürlich ist die Welt nicht derart Monochrom und daher will ich mich nicht selbst in eine dieser Schubladen stecken. Aber ich muss definitiv sagen, dass ich stark in Richtung “Kerni” tendiere. Eigentlich wollte ich schon seit Wochen zu diesem Thema ein paar Zeilen verlieren, aber nach diversen interessanten Gesprächen an Piraten-Infoständen in Hessen und nach dem in Folge des Landesparteitages der Piraten in Baden-Württemberg entbrannten Diskussion zwischen Sekor und Tirsales konnte ich nicht länger warten.

Ich muss kurz ausholen: Wie viele andere bin ich aus dem einfachen Grund Pirat geworden, dass ich mit der bestehenden Parteienlandschaft und der daraus resultierenden Politik nicht einmal mehr genug anfangen konnte, um mein politisches Leben guten Gewissens auf mein aktives Wahlrecht zu beschränken. Trauerspiele, wie sie nach den Wahlen in Hessen oder NRW zu beobachten waren oder immernoch sind, sowie der Kindergarten der sich auf Bundesebene zwischen CDU/CSU und FDP seit der Bundestagswahl praktisch durchgehend abspielt, bestärken mich jeden Tag aufs neue, dass nicht die Programme oder Inhalte das Problem darstellen, sondern die Schwächen unseres politischen Systems an sich. Der Parlamentarismus, wie er im Grundgesetzt festgeschrieben ist, mag zu Zeiten von zwei dominanten Volksparteien zufriedenstellend funktioniert haben. Aber in Anbetracht der heutigen Parteien- und Themenvielfalt ist er allem Anschein nach nicht mehr das adäquate Mittel, um den Herausforderungen des 21. Jahrhunderts zu begegnen.

Entsprechend sehe ich die Lösung vieler der aktuellen Probleme in einer Anpassung des politischen Systems, weg von einer Parteiendemokratie hin zu mehr Basisdemokratie. Die Korrekturen müssen praktisch auf einer “Meta-Ebene” stattfinden. Dies kann selbstverständlich nicht von heute auf morgen passieren. Die etablierte politische Elite wehrt sich mit allen Mitteln gegen die Einführung derartige Instrumente (siehe Hamburg) und Gegenbewegungen wie der Piratenpartei fehlt es auf ganzer Linie an politischem Gewicht, um dieses Ziel kurzfristig zu erreichen. Aber man möge sich daran erinnern, wie die schwedischen Piraten einst angefangen haben: Als Zünglein an der Waage!

Was ich damit sagen will: Um eine Änderung herbeizuführen muss die Piratenpartei den Fokus auf die Basisdemokratie behalten! Und das nicht nur intern, wo man auf die Ergebnisse der Einführung von Liquid Feedback gespannt sein darf, sondern vor allem nach außen! An jedem unserer Infostände kommt unweigerlich in jedem Gespräch nach wenigen gewechselten Worten die unvermeidbare Frage: “Wie stehen denn die Piraten zu Thema X?”. Ich antworte dann in aller Regel: “Wir haben dazu keinen offiziellen Standpunkt.”. Nach anfänglicher Skepsis seitens des Fragenden kann ich dessen Einstellung dann häufig in wenigen Sätzen zu unseren Gunsten ändern: “Wir Piraten maßen uns nicht an, zu jedem Thema eine Meinung zu haben. Wir akzeptieren, dass viele Themen eine reine Frage der persönlichen Meinung sind, dass vieles nicht zum Zeitpunkt der Wahl bekannt ist und dass sich Meinungen im Laufe der Zeit ändern können. Wenn wir Piraten in den Parlamenten sitzen, dann entscheiden wir einzelfallbasiert und tragen die Meinung der Bevölkerung in die Parlamente”.

So oder so ähnlich lautet mein Text…und man spürt förmlich, wie es “Klick macht”. Die Menschen verstehen, dass dies wirklich eine Alternative darstellen könnte und sie verstehen im Zuge dessen auch, dass wir eben kein Vollprogramm haben, keines haben dürfen. Denn wie kann man glaubwürdig dafür einstehen, die Entscheidung dem Volk überlassen zu wollen, aber gleichzeitig zu jedem Thema einen Standpunkt präsentieren? An welcher Stelle würden diese Standpunkte denn von Bedeutung sein, wenn wir sowieso basisdemokratisch bei jedem Fall einzeln entscheiden wollen? In Koalitionsverhandlungen, die zu den selben festgefahrenen Situationen führen, wie wir sie in NRW und in der Bundesregierung haben? Wenn doch wieder eine kleine Gruppe von “Piraten” verhandelt, was nun wichtig ist und was nicht? Werden die Piraten damit nicht genauso unwählbar, wie die etablierten Parteien es sind, weil man für wenige Punkte, die einem wichtig sind, eine ganze Liste von anderen über Bord werfen muss?

Für mich riecht der ständige Ruf nach dem “unverzichtbaren Vollprogramm” nach der blinden Jagd nach Wählerstimmen. Im Sprint auf das vermeintliche Ziel verliert man das tatsächliche aus den Augen und findet sich, eh man sich versieht, in genau jener Situation wieder, welche man eigentlich vermeiden wollte.

Meines Erachtens stellen die aktuellen Kernthemen der Piratenpartei eine perfekte, runde Einheit dar: Auf dem Weg zu mehr Basisdemokratie müssen wir sicherstellen, dass gute Bildung für jeden und freier Zugang zu Informationen gewährleistet werden, dass die Bürgerrechte geschützt und  politische Prozesse mit einem Höchstmaß an Transparenz durchgeführt werden. Haben wir diese Ziele erreicht und können wir sie erhalten, dann ergibt sich der Rest von selbst. Dann nämlich entscheiden die Bürger selbst und brauchen keinen Klüngel mehr, der ihnen diese Verantwortung allzu gerne abnimmt. Lobbyisten müssen dann eine ganze Bevölkerung überzeugen und nicht eine winzige Gruppe von käuflichen Politikern.

Und um zum Programm zurückzukommen: In dieser politischen Landschaft kann sich jeder, der ein Anliegen hat, politisch einbringen. Seien es die altbekannten politischen Parteien – wer sagt dass Grüne, Linke und Co nicht auchmal gute Ideen haben? – oder Einzelpersonen und Interessengruppen, welche Initiativen anstoßen können. Es braucht keine Piraten, um zu jedem Themenkomplex Lösungen zu bieten. Es braucht Piraten, um diejenigen zur Lösungsfindung zu befähigen, die etwas davon verstehen!

In diesem Sinne: Klarmachen zum Ändern! und ein Hoch auf die Meta-Partei!

Why I probably won’t write a transport simulation again

by Martin on May 28, 2010

On this blog and elsewhere I’ve described more than once how AirlineSim came into existence and what were the driving factors behind it for many years. To give a short summary once again: The whole idea was born out of pure enthusiasm for aviation. From the beginning it was intended to be a solid airline simulation, not a “game” and in no case a “product”. It was a hobby, something I and the many supporters of the project did for personal enjoyment rather then mass-market appeal. As I presented in my last post, this and several other factors posed to be huge show-stoppers in my endeavour to make a living from AirlineSim.

But there is one particular aspect that might well be the root to all the issues I encountered and still have to face: AirlineSim is a transport simulation! Let me elaborate on why I see this to be a problem:

Simulations are not games

Although many games call themselves “simulations”, few simulations are anywhere close to “games”. Sure, since AirlineSim stems from a community of enthusiasts rather than professionals, any IT professor would strongly disagree when I would call AS a serious, scientific business simulation. But at the same time my goal always was to  create a decent image of the real-world airline business. A lot of emphasis was put into correct flight schedules, fleet lists, departure boards; the databases are filled with almost all current commercial airliners and all airports carrying an IATA code; there are more than a dozen types of staff, typeratings, correct financial accounting and a whole lot of other stuff that adds complexity and maybe realism…but only few of which make the game “fun”.

Ok ok, this was only partly correct: Of course, it is fun! It is fun to me and to a certain group of others who share a similar mindset. But have you ever tried to explain AirlineSim’s concept to a friend and she started to jump around in excitement because she could not wait to try it herself? See…me neither!

Simulations…simulate

Sounds obvious, right? But to many it isn’t. Transportation in the real world is a tough business. It tends towards monopolistic structures and absolute competition. In fact, until recently, ocean shipping was one of the last industries to have hardly any anti-trust regulations for the simple reason that it would completely destroy itself if there were any. The situation in aviation was only different because airlines were entities of national interest, state-controlled monopolies or strictly regulated private companies. Since privatisation started, the aviation industry as a whole never made any profits, with only few airlines being financially successful over longer periods of time. In the US, a large-scale consolidation is in full swing and only few players will remain while in Europe British Airways seems to be at the brink of collapse, leaving the field to the two remaining giants: Lufthansa and Air France-KLM.

So why does this real-world babbling matter to AS? Because it is a simulation! As such it automatically inherits all these problems with all their consequences and reproduces them within the game. In the real world, these problems are met with strict rules and regulations. But who wants to play a game that leaves no freedom to the player? Doing this would essentially remove competition, the one thing a game usually is about. So there are two extremes: Absolute competition or none. Neither is fun.

Woah! Feature creep!

Ever had the chance to participate in an AirlineSim community meeting? It’s awesome! You sit there with all the good friends from the community, you have some beers, talk about the game. And the longer you talk, the more ideas spawn. Ideas how this aspect from reality could be added to the game and how that feature could be made more interesting. At the end of the day I can’t help but building all kind of cool gadgets into the game – remember, I love aviation and I love “my game”.

Of course, not a single one of these additions ever shows up in any long-term master plan. Nobody ever thought about whether it affects the simulation’s balancing. Does it hamper the performance or might it be too complex for new players? Will it ever get finished and is it even useful? It’s feature creep! You add buttloads of stuff because it sounds like a good idea and – most importantly – because you like it. You think a simulation can not have enough “realistic features”. This way of doing things is poison for the overall usability. It creates a huge system that’s impossible to balance. It makes the game difficult to grasp and creates an awefully steep learning curve to starters. In short: It’s not fun!

The audience is…special

The audience of serious sim games is the direct opposite of the modern breed of “casual gamers”. They have clear ideas on how they want the game work. They can live with an old-school interface and a total absence of graphics, but they want to understand every single formula in the game. They find long tables of load data exciting and charted figures even more thrilling. They are hardcore players, either in business simulations, aviation games or both. They have done their homework and can pin-point any false aircraft characteristics, lacking feature or wrong account number. If they do, they provide you with detailed essays (of which there are at least 5, all describing a different approach) on why they think it’s wrong and what should be done about it. If you shift a table or (slightly) change an existing interface, expect an enormous shitstorm on why you just ruined their whole live.

They are true fans! They invest unbelievable amounts of time in the simulation. They identify with their airline and they tend to refer to their effort as “work”. Yes, it sounds absurd, but if something (like a patch) threatens the existence of their virtual enterprise, they are afraid that “all their work” might be lost.

You can imagine that pleasing this kind of audience is sometimes difficult. I’m learning this the hard way right now with the upcoming release of AirlineSim 1.5. I thought I had built a really cool new route management interface that would be more appealing to players. But so far the opposite is the case: A certain share simply doesn’t like it because it’s different. A considerably smaller amount of players can provide constructive critisism on how certain aspects could be improved. And then there’s the hard core…the huge players, the top 20 of the largest airlines, the operators of hundreds and thousands of aircraft. The players who push the system to the limit. If you build a new feature, you always have to keep them in mind. A drop-down that contains 50 entries for a “normal person” contains 5000 entries for one of the big boys. If you implement a change that adds a single click to whatever “workflow”, this tiny change is a disaster to them because they have to do it 1000 times in a row. They look at the system in way that’s almost impossible to grasp for me or anybody else on the team! Is this way of “playing” fun? I don’t know, but probably not to many.

And the conclusion?

If you look at the great games of the past and the presence, be it casual or “hardcore”, computer-based or board game, you find one common thing among all of them: They are abstract! Even games that appear rather complex – for example Civilization – are in fact based on very simple game mechanics. There are only so many variables that can actually be put into an equation and balanced. Usually there are only one, two, maybe three aspects within the game you can actively control as a player and they achieve a high level of immersion anyway. They might be tough to master, but they always are one thing: Fun!

So if I ever had to do AirlineSim again? I’d make it a game, not a simulation.

So…what next?

by Martin on April 30, 2010

It’s almost 3 o’clock at night and I can’t sleep. Probably due to the larger quantities of coke and coffee I had the evening before…but also because I have a lot of stuff floating around my head that keeps my brain from slipping into sleep-mode.

In a few days time it will have been 10 months since the international portal for AirlineSim was launched. This basically marked the final public step towards my decission to do browsergames for a living. As you can see, I don’t live under a bridge just yet, so it hasn’t been all bad. But it’s also been a tough time that brought to light many weaknesses of AirlineSim that never appeared to me before. Most importantly I underestimated how difficult it would be to transform a hobby project that’s been around for several years into a commercial one that needs to sell well enough to pay the bills of at least one person (and his cats).

AirlineSim has always been layed out as what the name suggests: Being a realistic airline simulation. This never included making a game that achieves a revenue per player of X or a conversion rate per new visitor of Y. In fact, no such “KPI” ever occured to me or anybody else on the team and obviously it didn’t have to because there was no reason for the hassle. So several thousand files and 10s of thousands lines of code after it’s first appearance in 2002, AirlineSim has developed into what it is today: A huge piece of software that will never be “finished” and will never become a “bread & butter project”.

Don’t get me wrong! I still love AirlineSim, it will always remain my baby and I won’t stop working on and extending it any time soon. But there’s a saying that I picked up quite some time ago somewhere on the net that sums up the problem quite well:

If you have to keep putting money into it, it’s not a business, it’s a hobby.

Now I’m not exactly putting money into AirlineSim. In fact, it pays most of my bills. But “most” isn’t “all” and there needs to be a point where I have to shift at least some of my resources (being time, primarily) towards something that will a.) close that money gap that AS fails to fill right now and b.) permits to further support AirlineSim as what it always has been and always will be: A niche game for a rather limited group of enthusiasts (including myself).

And there we go: The reason for my insomnia! It’s not the fear of living in cardboard boxes but the constant brain-storming about a follow-up project. It’s the first time in years that a new, large project appears on the horizon and whenever the daily work is finished I can’t stop thinking about all the different themes, possible features and hibernating ideas that would make for an interesting game. At the same time all these “nice-to-haves” mix with the experience I took away from 10 months of commercial AirlineSim that tell me something about what a web-game has to look like nowadays to become successful.

I’m pretty sure that, whatever it will end up to be, the next project will once again be some kind of business simulation. It will be a lot more streamlined than AS ever was and there will be a much stricter and better structured “master plan” to everything. There will be a focus on usability and intuitive gameplay from day one and I will put more emphasis on reaching a generally broader audience. At the same time there really mustn’t be the kind of feature-creep I’ve experienced in making AS, meaning that I could spend weeks after weeks adding new (important?) features without getting anywhere in the larger picture, pushing the development costs of the whole project through the clouds. A first playable release of the new project has to be out after a few months’ work and earn money from the start.

So…exciting times coming up! I’m still looking for more ideas and I’m sure there are themes that you have always wished for in a game but never got realized. If that’s the case, feel free to drop me a line! For the AirlineSim fans among you: Rest assured that development of AS will continue as planned at least until 1.5 has been out the door and through it’s first few iterations. After that I’m planning to scale back on AS a bit but to keep supporting and extending it with regular patches.

My iPad impression: Big risk for Apple

by Martin on January 27, 2010

Today, the holy Steve Jobs came down to us once again to present to us his latest prophecy, the long awaited iPad. While the device looks slick as always, I see it as a tremendous risk for Apple unlike any of its other new products of recent years.

Usually, after Apple announces a new gadget, people are excited about the things they saw. But this time the vibes on the comment sections of large tech-sites feel totally different. People are disappointed because the iPad is a weak blend of iPhone and MacBook. It lacks connectivity and storage options big time (no card slots, no USB) and it is not usable as a phone unless using third-party VoIP applications. It brings along the tight restrictions from the iPhone (you can only buy apps and media via iTunes) while offering hardly any advantages of a notebook. Although I probably wouldn’t care, some complain about the absence of a camera and I figure that the comparably short battery life is an issue for people who’d like to use it as an e-reader.

So after all I see only two ways that could lead to a success of the iPad:

  1. The Apple factor: A large portion of people will buy it because it’s a beautiful gadget from Cuppertino and they will ignore the fact that they are forced to use a not-even-that-cheap device exactly the way Apple’s designers want them to.
  2. The iPad is received by consumers as a mobile high-end web and gaming platform.

I can imagine that sitting on a train or in a cafe and having the iPad to surf the web would be a far more comfortable experience than doing the same on an iPhone. But that’s basically the only area in which I see the iPad as a winner. Apple is great at establishing new products – the iPhone being the grandest example – but history shows us that even Apple can fail…and I see the chances of Apple failing with the iPad higher than with any other product in their portfolio.

Christmas Tech: Apple MagicMouse

by Martin on December 27, 2009

Christmas – for a nonbeliever like me anyway – largely consists of giving and receiving presents. And the major percentage of the presents I receive nowadays falls into the “tech” category. So I’ll try to give a brief review of the new items that I’ll have to replace again in two years down the road.

To begin with, my new mouse: The recently released MagicMouse from Apple. I’ve been a happy Microsoft IntelliMouse Explorer user for the last years. In fact I hardly saw the need to replace my mouse. So the reason I put the MagicMouse on my wishlist was primarily due to Apple’s excellent marketing…and the fact that I really enjoy the MacBook’s multi-touch functionality which Apple has now added to a seperate input device for the first time.

Like with every new mouse, the first thing that feels awkward is the size and shape of the new tool. The MagicMouse is no different in this respect as it’s considerably smaller than the Explorer and it will take me a few days to completely adjust. Also, since the total of the mouse’s shell is a single button, it feels strange to do a “click” because the whole thing appears to be moving. At this point I got to say that Apple could have put more emphasis on making the click a little less noisy. Somewhat similar to the multi-touch mouse-pad of the new MacBooks, which is a button too, the click is very loud compared to other mice. The “scratching sound” when moving the mouse over the table surface is comparable to that of the Explorer while any sound when scrolling is obviously nonexistant with multi-touch gestures (a noticable issue of the latest IntelliMouse Explorer).

That said, the most important feature of the MagicMouse of course are the touch gestures. Scrolling in all directions feels extremely natural because all you have to do is slide around with your finger. This is extremely useful for web pages with horizontal scroll bars (why do those exist, anyway?) and appears to be a good replacement for the MightyMouse’s scroll ball which apparently caused quite some trouble after extensive use. A two-finger swipe left or right allows to navigate forward or backward, primarily through your browser history. This is extrememely useful, especially since I learned to love this feature while still working under Windows with an Explorer mouse (which had buttons on the side mapped to these functions) and then missing this functionality under OS X due to bad driver support.

So overall I’m quite happy with the device so far. It’s the first wireless device I ever used as I’m very sceptical about having a mouse dependant on a battery, so it will be interesting to see whether the MagicMouse can change my opinion on those in general. When back in my own place I’ll try to write a few lines about the other important piece of tech I found under the tree this year.

Bloß keine Verantwortung!

by Martin on December 3, 2009

Kurze Arbeitsunterbrechung um mich über einen Artikel der FAZ aufzuregen. Dort wird in Bezug auf das Minarett-Verbot in der Schweiz mit folgender Argumentation gegen Direkte Demokratie geschossen:

Vielleicht bringt das die Anhänger von Volksabstimmungen in unserem Land zum Nachdenken, die sich so gerne auf Mehrheitsmeinungen berufen, wenn es ihnen in den Kram passt, aber betreten schweigen, wenn ihnen die „vox populi“ gegen den Strich geht. Wer empfiehlt, dem Volk aufs Maul zu schauen, der kann sich nicht ohne weiteres die Themen herauspicken. Man kann Volkes Meinung dann auch nicht in aufgeklärt und hinterwäldlerisch einteilen oder nach richtig und falsch sortieren. Die Schweizer müssen jetzt mit einem Ergebnis leben, das für ihr Land politischen und womöglich auch wirtschaftlichen Schaden stiftet. Darin muss ihnen Deutschland nicht nacheifern.

Ich versuche das kurz zu übersetzen:

Die Schweizer haben in einer Sache das Volk befragt und haben jetzt das große Pech, dass ihre mündigen Bürger für das gradestehen müssen, was sie selbst entschieden haben. Gott bewahre sowas bei uns einzuführen! Wäre ja noch schöner, wenn wir nicht Politiker sinn- und belanglos  vor sich hinarbeiten lassen könnten und uns selbst nicht weiter darum kümmern müssten, was dabei raus kommt!

Interessante Auffasung, was die Aufgaben von Staat und Regierung sowie die Mündigkeit des Wahlvolks betrifft…

Na toll, Schweiz!

by Martin on November 30, 2009

Die Schweizer haben überraschend für ein Verbot von Minaretten gestimmt.Während diese Entscheidung in krassem Widerspruch zu den grundlegenden Freiheitsrechten der zivilisierten Welt, aber auch zur eigenen Verfassung der Schweiz steht, macht mich das Abstimmungsergebnis persönlich aus einem ganz anderen Grund sehr traurig: Ich bin überzeugter Verfechter direkter Demokratieformen. Jeder der mich näher kennt hat das vermutlich schon erlebt.

Auf Grund des Ergebnisses aus der Schweiz werde ich es in zukünftigen Diskussionen zum Thema wieder einen Tick schwerer haben, meinen Standpunkt zu verkaufen. Man wird mir entgegen halten, dass es radikale Strömungen in der direkten Demokratie einfacher haben sich durchzusetzen. Und man wird das gestrige Ergebnis als “Beweis” dafür anführen. Genau wie man die vergangenen 60 Jahre der Bundesrepublik als Beweis sehen wird, dass eine parlamentarische Demokratie der schweizerischen überlegen sei. Ansatzweise objektiv betrachtet eignen sich beide Sachverhalte nicht als solcher!

Die direkte Demokratie in ihrer heutigen Form existiert in der Schweiz im Grunde seit Mitte des 19. Jahrhunderts. In diesem Zeitraum waren alle anderen europäischen Nationen an einer vielzahl Kriegen beteiligt, untere anderem den beiden Weltkriegen, während die Schweiz neutral und stabil blieb. Bis heute weist die Schweiz einen überdurchnittlichen Wohlstand auf, Probleme wie beispielsweise die des deutschen Bildungssystems oder der Staatsverschuldung sind weit weniger ausgeprägt als hierzulande. Und selbstverständlich wurde und wird auch die Religionsausübung in keinster Weise eingeschränkt, ist die “Glaubens- und Gewissensfreiheit” doch durch Artikel 15 der Bundesverfassung garantiert. Genau aus diesem Grund erwarte ich auch nicht, dass die gestrige Entscheidung tatsächlich anwendbar ist. Denn wenn ich das System richtig verstehe, so könnte ein Bauherr, welcher ein Minarett errichten wollte, mit Veweis auf Art. 15 auf sein Recht dazu bestehen. Da das Verbot im Konflikt mit diesem Artikel steht, müsste das Volk in einer weiteren Entscheidung die Streichung des selbigen bewirken, um ein Verbot von Minaretten tatsächlich durchzusetzen. Ein Vorgang, der mir höchst unwahrscheinlich erscheint. Wenn dies ein Schweizer liest, so bitte ich darum, auf eventuelle Fehler in dieser Darstellung hinzuweisen.

Und warum taugen die Erfahrungen aus 60 Jahren Bundesrepublik nicht als Beweis für oder wider irgendein demokatischen Systems? Weil wir Glück hatten! Es hat sich in diesem Zeitraum einfach keine Situation ergeben, in der “radikale Strömungen” einen ausreichenden Nährboden gefunden hätten. Aber auf Grund der Anzahl an haarscharf an der Verfassungswidrigkeit vorbei schrammenden Gesetzen der letzten Jahre sollte eigentlich klar sein, dass sich dies schnell ändern könnte. Landet wieder einmal ein Gesetz dieser Art vor dem Bundesverfassungsgericht liegt es in den Händen einer winzigen Personengruppe zu entscheiden, ob es nun als  “richtig” oder “falsch” zu betrachten ist. Warum bei einer solchen Gruppe das Risiko einer Fehlentscheidung geringer sein soll, als bei einer Volksabstimmung, will mir nicht einleuchten.

Was den konkreten Fall in der Schweiz betrifft, so hoffe ich jedenfalls, dass diese ehrlich ausgesprochene und anscheinend in der Mehrheit der Bevölkerung (nur in der Schweiz?) vorherrschende Meinung, auch wenn ich mit ihr definitiv nicht übereinstimme, etwas bewirkt. Und zwar, dass die Gruppe derer, die mit Nein gestimmt haben, nun erstrecht einen Anlass sehen, in diesem Bereich noch mehr für Aufklärung zu sorgen und Gegenmaßnahmen zu ergreifen. Etwas was in Deutschland nicht selten daran scheitert, dass ein Tabu-Thema erst garnicht angesprochen werden darf…aus Angst, die landläufige Meinung könnte nicht “politisch korrekt” sein. Irgendwie verrückt.

Integrating CAS and Wicket

by Martin on November 24, 2009

At AirlineSim we use CAS for user authentication and right now we are in the process of migrating parts of the game to the great web framework Wicket. Yesterday I thought about a way of integrating both in a way that a user is automatically redirected to a login page when he lacks access rights and that he returns to the exact same page after he has completed the login. All should be done in a “Wicket way”. Below you find my approach, please let me know when you find errors or if you can think of ways so solve it in a better way. For demonstration purposes I use simplified code passages. It looks slighty more complex in AirlineSim.

The first step is to check in a custom PageAuthorizationStrategy whether a CAS assertion exists. I’m using the filters provided by the Jasig CAS Client to place the assertion in an AssertionHolder. If no assertion is provided (which means the user is not logged in) I use Wicket’s intercept page mechanism to redirect the user to CAS.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class CASPageAuthorizationStrategy
        extends AbstractPageAuthorizationStrategy
{
    @Override
    protected <T extends Page> boolean isPageAuthorized(Class<T> pageClass)
    {
        Assertion assertion = AssertionHolder.getAssertion();
        if (assertion == null && isLoginRequired(pageClass))
        {
            StringBuffer url = new StringBuffer();
            url.append("https://your.cas.installation/login?service=");
            try
            {
                url.append(URLEncoder.encode(
                    "http://your.cas.clientapp/app/redirectAfterLogin", "UTF-8"));
            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }

            RedirectPage intercept = new RedirectPage(url);
            throw new RestartResponseAtInterceptPageException(intercept);
        }
        return true;
    }
}

As you can see, the code is pretty much straight forward: When the user isn’t logged in and a login is required (”isLoginRequired” just for demonstration purposes), the URL for the redirect to CAS is built. Since I’m using an intercept page, the path in the service parameter always points to “/redirectAfterLogin”, but more about that in a minute. The URL is passed to a new instance of RedirectPage which itself is passed to the RestartResponseAtInterceptPageException. When this exception is thrown, Wicket will “remember” the page the user just tried to call and redirect him to the RedirectPage. The latter will immediately redirect him to CAS for login.

So what about the “/redirectAfterLogin” in the service path? At this location I mounted the following page class:

1
2
3
4
5
6
7
8
9
10
11
public class RedirectAfterLoginPage
        extends WebPage
{
    public RedirectAfterLoginPage()
    {
        super();

        if (!continueToOriginalDestination())
            setResponsePage(getApplication().getHomePage());
    }
}

Its job is very simple. All it does is redirecting the user to the page Wicket “remembered” when the RestartResponseAtInterceptPageException was thrown. Since the user might access this page by accident and there is no markup for it, make sure to provide a response page even if no original destination is available. Otherwise the user will get to see an error page. I used the application’s home page as the default here.

And that’s basically it. Please note that the code snippets above are untested pseude code and will most definitely have to be adjusted to your environment.