Ultima Underworld was and continues to be an inspiration as to how and why to make video games. I've played this as a kid, on a 386 PC computer, and was blown away. It featured simulated 3D with angles that were not straight and rooms of different heights. You could jump, use weapons in multiple ways (like jabbing or cutting with swords), there was discoverable magic, NPCs, interaction that went as far as having to learn a new language or play an instrument, numerous puzzles and an amazing story.

But that is not what made it great. You see, I am telling everyone I know that this was one of the games that defined my childhood and today I've read the Wikipedia article for the game and remembered all the history related to it and I realized that I needed to blog about it, too. What made this game great was that there was no need to make the game as good. Released in 1992, it only had to compete with Wolfenstein 3D which was released a few months after, anyway. At the time Civilisation and Dune II, Mortal Kombat and Street Fighter II were also amazing games, but none in the genre of Ultima Underworld. They could have worked less, released sooner and gained more money. But that's not what they did, they did something to be proud of and that is why the game was great.

At the bottom of this post I will place a YouTube video of gameplay. The synthesised sounds (no recorded sounds were used in the game) and music as well as the graphics will probably make you cringe now, but at the time, it was state of the art. Just hearing that music fills me with strong emotion that I can hardly realize from where it comes, but it is deep. Ultima Underworld has left its mark on me, but not only. Look at the litany of games their authors attributed influence to Stygian Abyss: BioShock, Gears of War, Elder Scrolls, Deus Ex, Vampire the Masquerade Bloodlines, Tomb Raider, Morrowind, World of Warcraft.

Amazingly enough, there was only a sequel to the game, Ultima Underworld II. The publishers refused to sponsor a third franchise and the developers ultimately decided to create a "spiritual successor", which was Arx Fatalis, also a great game. Younger people might only know Dark Messiah of Might and Magic, which has nothing to do with Might and Magic except financially, and is actually Arx Fatalis II. You can see even there that storyline and gameplay have suffered when a big corporate game company took the reigns, despite the high budget graphics and sounds.

I have voluntarily removed myself from the gaming scene. I've refused to upgrade my computer to a state where it can play any modern game and the only things I play are web games to pass the time between tasks at work. I am certain that even now there are exceptional people creating exceptional games that push the frontiers of technology, but more than that, the frontiers of imagination. I've heard of some of them: The Witcher, for example, a game made after a successful fantasy book series that features free play and allowing the character to be as bad, good or rotten as he wants, while the game shapes itself after his decisions. Look out for games like these. Even if you don't realize it, they will open your mind and your heart and will influence you to be better than you would otherwise be. They are not only games, but teachers. Love them!

There is a sentence hidden there inside the Ultima Underworld wiki page: the game is non-linear and allows for emergent gameplay. In other words, it let's you guide the story, change the game play, play multiple times with different outcomes. Embrace choice, it will only get better.

[youtube:TpuTbxkaZ94]

Update:
I've pinpointed the issue after a few other investigations. The https:// site was returning a security certificate that was issued for another domain. Why it worked in FireFox anyway and why it didn't work in Chrome, but then it worked after an unauthorized call first, I still don't know, but it is already in the domain of browser internals.

I was trying to access an API on https:// from a page that was hosted on http://. Since the scheme of the call was different from the scheme of the hosted URL, it is interpreted as a cross domain call. You might want to research this concept, called CORS, in order to understand the rest of the post.

The thing is that it didn't work. The server was correctly configured to allow cross domain access, but my jQuery calls did not succeed. In order to access the API I needed to send an Authorization header, as well as request the information as JSON. Investigations on the actual browser calls showed the correct OPTIONS request method, as well as the expected headers, only they appeared as 'Aborted'. It took me a few hours of taking things apart, debugging jQuery, adding and removing options to suddenly see it work! The problem was that after resetting IIS, the problem appeared again! What was going on?

In the end I've identified a way to consistently reproduce the problem, even if at the moment I have no explanation for it. The calls succeed after making a call with no headers (including the Content-Type one). So make a bogus, unauthorized call and the next correct calls will work. Somehow that depends on IIS as well as the Chrome browser. In Firefox it works directly and in Chrome it seems to be consistently reproducible.

and has 1 comment
The tenth book of the Wheel of Time series was by far the least interesting. The action is taking place simultaneously or a bit after the events in Winter's Heart. I had waited to see what is going to happen next only to get a "parallel" book that only showed how everybody is taking their sweet time before doing anything. Of course, we know by now that Rand has finally done what needed done a few books ago, but what about all the not interesting characters? Well, we will get to know that in Crossroads of Twilight.

Having finished it, I embark on reading the last few books and see how the hell it is all going to end. That is the problem with stories based on prophecies. By the time the book gets anywhere, you know how it is going to end.

I had to investigate a situation where a message of "Object moved to here", where "here" was a link, appeared in our ASP.Net application. First of all, we don't have that message in the app, it appears it is an internal message in ASP.Net, more exactly in HttpResponse.Redirect. It is a hardcoded HTML that is displayed as the response status code is set to 302 and the redirect location is set to the given URL. The browser is expected to move to the redirect location anyway, and the displayed message should be only a temporary thing. However, if the URL is empty, the browser does not go anywhere.

In conclusion, if you get to a webpage that has the following content:
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="[url]">here</a>.</h2>
</body></html>
then you are probably trying to Response.Redirect to an empty URL.

and has 1 comment
My blog becomes boring as I fly through the Wheel of Time series and it seems this is all I write about. The truth is that the feeling that started creeping in from books four or five, the "let's get it over with" feeling, has become stronger and undeniable. I don't want to stop reading the series, but I want to finish it soon, so I get to something that is truly interesting.

Winter's Heart is somewhat fractured. It continues where Path of Daggers left it and again it ends without a definite book boundary, just like a simple episode from a series. There is a rather important situation right at the end of the book, but it is underwritten, leaking important knowledge matter-of-factly and barely describing what should have been glorious fights with the One Power.

My impressions: Mat's storyline becomes intriguing, after a bit of utter boredom. Perin's story becomes ridiculous, with choices no sane man would make, not to mention women, and the obnoxious Aiel again getting a foothold in the plot. It has reached a point for me where any mention of Aiel just rubs me the wrong way. Rand is trying to make his enemies unsure of his plans, therefore he acts erratically, but that means he doesn't really do anything, until the end of the book. The girls are all doing whatever they feel like it, without coordinating with the boys, but still assuming they don't need to. The worst are the "evil ones" which seem to have fallen asleep. Fain tries to kill Rand, but not when he has him alone somewhere, only when he can "lure" him into a trap, together with all his friends.

Some ideas do come up. One is that Shai'tan is nothing more than a force of evil, not unlike Sauron, nothing corporeal or even conscious. All the evil in the book is done by people "doing the Great Lord's work" and their minions. The idea that the Dark One is imprisoned and that is why his actions make no sense is moot. Also, it seems that the Chosen are being reincarnated almost as soon as they die, only in other bodies. They call themselves differently, for some reason, but they possess the power and knowledge they had before death. They fear death, also, which make no sense at all. Robert Jordan's talent here is to make the evil side act stupidly, but without letting the reader feel so, and he manages it pretty well. Too bad I am more of a rational person.

I really like the idea that the One Power (which was always two, one male, one female) has an evil equivalent (the True Power - who comes up with these names?). Being of a Western origin, it is likely Robert Jordan will feel the need to unite all of these powers under "one God", so interesting interactions and hybrids might appear later. A tantalizing hint that Moiraine might be alive is also presented, when a reincarnation of Lanfear appears. Now that more annoying characters have popped up, I almost miss her, not to mention Lanfear herself, which is my favourite evil insane female character in the book :)

and has 1 comment
The one word that comes into mind when I think of the book is "frustrating". Having abandoned any semblance of independence between the books, Robert Jordan continues in The Path of Daggers many of the story arches began in A Crown of Swords and I don't know if he ends any. All the characters are acting like proud chickens, lacking any thought. They are emotional, weak, playing games when important issues are at stakes, taking serious offence from irrelevant words. I am sick of people "educating" others via beating, switching, shaming, pompous posturing, power plays and torture. The fate of the world is at stake and each and every one of the heroes of the story act like they still have other options. And while they are disgusted by people doing that very thing, but not seeing it in themselves.

At this point I am left with no other choice than to "watch" the story unfolding like on TV, because I feel no connection with it whatsoever. My wife asked me which of the characters in the book I most identify with. And I couldn't think of any. Even Shai'Tan doesn't make any sense at all. I've already started Winter's Heart and it continues in the same way.

and has 0 comments
The seventh book of the Wheel of Time series is a direct continuation of the sixth. I was saying in a previous post that book six, Lord of Chaos, was long and it doesn't even have a complete ending; A Crown of Swords overlaps Lord of Chaos a little, then opens up some other doors and doesn't close them either. Either this is the pattern (pun not intended) of the next books, or this is actually a weave (ok, now I was doing it on purpose :) ) of at least three books that are strongly coupled to each other.

A Crown of Swords is back to a size closer to the average of the other books, but since it is so connected to the books before and after, it doesn't really matter. There is a lot happening and some of it is captivating. I can't really empathize with most of the characters, though, except maybe Mat, and he is very present in this book. A new evil type of darkspawn appears, along with an advanced type of Myrddraal. The girls are hunting ter'angreal, the Seanchan are stirring again and a new battle against Forsaken is close. Also an Aes Sedai hero is approaching Rand and completely dissing him. Fun stuff!

If I would have written an article two years ago (wait a minute, I did!) it would have been a cold enumeration of rules and my outsider opinion about it.

If I would have written an article about Scrum two months ago, it would have probably been an insider rant, explaining how just following the rules of Scrum leads to blind bureaucracy and to a lot of waste of time.

Well, now I am writing about Scrum as I understood it from a personal viewpoint, because I've had this epiphany: Scrum (or any other development process) is a personal process first and foremost. To use a metaphor, so that I can move it out of the way and talk shop, it is like driving a car on a straight road. You are the engine (strong and reliable, hopefully), the road is the development process and your speed is your development speed. It is so easy to do everything fast and furious, it's a straight road after all, but what if there is a fog? Then you would have to slow down, for danger that you wouldn't see a sudden obstacle.

To get real now, the fog is the lack of foreknowledge about what you are going to do. And I don't mean project vision, or strategic planning, I am talking about your personal schedule, of how well you know what you are going to do. Scrum is trying to achieve this by enforcing a time table (the sprints) and a schedule (the sprint planning) and a recurrent update mechanism (the daily meetings), but it is only the beginning. If you plan your sprint superficially, it is like adding fog to the road in front of you. If you (and I mean YOU!) do not update your schedule as you go, including documentation, estimated time, time spent and all useful metrics, you add fog to the road behind you. If you are surrounded by uncertainty, you cannot plan anything. You don't know where you are, where you are going and how fast you are going to get there.

After 6 months of badly implemented Scrum, I've experimented with using a simple text file to mark when I start a job and when I finish it and any breaks in between, updating the actual work time and estimated time in the Scrum tool. We are using a clearly defined specification document for each feature, including requirements, acceptance tests, implementation details, code reviews, definition of done, test plan, updated as we go. I've discovered that all this huge amount of information, instead of slowing me down, lifts the fog and allows me to push the pedal to the metal and go as fast as I can. I know when I am doing something, why, and who is doing everything else and why. At the end of the day I don't have to rack my brains to remember what I did, I just cut and paste the task names and times from my text file to an email and the Scrum master just goes over the list and we are free to talk about what really mattered in those tasks: new issues, dependencies, implementation details. The result is visibility of what we are doing and not less important, I get to go home early.

Of course, I am writing this enthusiastic post after a single day of well done and 6 months of poorly done, but I have a great feeling about this, something akin to fog being lifted from my eyes.

A Microsoft patch for ASP.Net released on the 29th of December 2011 adds a new functionality that rejects POST http requests with more than 1000 keys and any JSON http request with more than 1000 members. That is pretty huge, and if you have encountered this exception:
Operation is not valid due to the current state of the object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Operation is not valid due to the current state of the object.

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
[InvalidOperationException: Operation is not valid due to the current state of the object.]
System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2692302
System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +61
System.Web.HttpRequest.FillInFormCollection() +148

[HttpException (0x80004005): The URL-encoded form data is not valid.]
System.Web.HttpRequest.FillInFormCollection() +206
System.Web.HttpRequest.get_Form() +68
System.Web.HttpRequest.get_HasForm() +8735447
System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97
System.Web.UI.Page.DeterminePostBackMode() +63
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +133


then your site has been affected by this patch.

Well, you probably know that something is wrong with the design of a page that sends 1000 POST values, but still, let's assume you are in a situation where you cannot change the design of the application and you just want the site to work. Never fear, use this:

<configuration xmlns=”http://schemas.microsoft.com/.NetConfiguration/v2.0>
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
<add key="aspnet:MaxJsonDeserializerMembers" value="5000" />
</appSettings>
</configuration>


More details:
Knowledge base article about it
The security advisor for the vulnerability fixed
The entire MS11-100 security update bulletin

Update 3rd of March 2016: I've opened this blog post on the latest versions of Internet Explorer, Firefox and Chrome and the bug is not present anymore. You should consider this blog post obsolete

The CSS standard allows selecting an element with a certain CSS class, using the dot notation (.myClass), but it also allows an element to have more than one CSS class, separated by space (class="myClass anotherClass"). Now, sometimes we would like to select an element that has two simultaneous classes and the CSS syntax for this is to put two class selectors one after the other, with nothing to separate them (.myClass.anotherClass). This blog entry is about how you should avoid using this, at least for now, as it seems to be one of the buggiest parts of the CSS implementation in the current browsers.

First of all, Internet Explorer just fails with this. Up to version 8 simultaneous class selectors just failed in a random way. I was surprised a few days ago to see that Chrome and Firefox also have issues with this. Even if the selector did appear to work, it did not register in the css rule lists for either Firebug or the Chrome developer tools, when used with CSS3 content selectors. Remove the double class selector and they would magically appear.

The bug can be reproduced in this code:
<style type="text/css">
.a.b span:before {
content:"before ";
}

.b span:after {
content:" after";
}
</style>
<div class="a b">
<span>Test</span>
</div>

and here is the result:
Test


In Chrome and Firefox the span element will appear with an after rule, but not a before rule, even if they are both applied.

and has 0 comments

Lord of Chaos was a long book to read. In size, it was as long as Shadow Rising, the longest book in the series so far, but it felt more packed. After all, Rand and Egwene can use portals and they go where the action goes, the Tower is divided, the Aiel are divided, a force of channelling men is created, Cairhien and Tear soldiers fight along Rand, there is action in Ebou Dar, Tear, Cairhien, Salidar, Andor, Two Rivers, Amadicia, The Forsaken are executing a plan of the Dark Lord and so on and so on.

There is a problem with consistency again, at least as I see it. If this was a strategy game, imagine more players playing in the same team, but each of them doing whatever they feel like. They are all friends, they even have one central character they can rally with, but they continue to do things their way. If the other team would have even a modicum of coordination, they would easily win. Also, the series has succumbed to levelitis, the disease that causes all main characters in a story to level up continuously, until it becomes unmaintainable. Rand and Eqwene can Travel or enter Tel'aran'rhiod in the flesh, Elayne can make ter'angreal, Nynaeve can heal stilling and gentling, Mat has the memories of countless heroes and has a talisman against saidar, Perrin is a lord, Loial can fight, Min can read auras and fight with knives, etc. It is getting so grand, that I fear for the books to come.

Even so, I've enjoyed the book and at the end I could barely stop reading to see where all the tension accumulated in the last hundred pages would explode, and how. The grandness and action packing of the book also led to a kind of split, where the stories started now have not ended yet and I must continue to read the series to see what is going to happen. The name of the book is also strange, as the Lord of Chaos is somehow related to the Dark One, but we don't really learn who he is; only hints are left here and there. Finally, Shai'tan seems to be more than just the cardboard evil destroyer of life and gains some complexity.

Sigh! There are 14 books in the series, I have just started the 7th and they seem to be growing in size as I go along... this is going to take a while.

and has 2 comments

I am already inside the story and it is getting harder and harder to analyse individual books. All I can say is that, again, there are a lot of incredibly condescending and arrogant people, mostly women, which are presented as indomitable based on looks or appearance or prestige, yet with not a shred of usefulness. I was reading this book and I was finding myself daydreaming of what I would say to such an annoying individual. What I find even more disturbing is that a lot of times the superiority of one's opinion was demonstrated via violence. Educational violence, mind you, switching, bottom beatings or pinches, meaningless and hard chores, but still violence and hardly acceptable to me.

Rand and Mat go together in The Fires of Heaven, but their contact is almost not existent and Mat is always trying to get away. What happened to their long time friendship? It evaporated in Jordan's writings. Perrin has saved the Two Rivers, but then married and stayed there, as if the world was saved and there was nothing to be done about it. Eqwene is with Rand as well, but more Aes Sedai and more arrogant by the minute, her relationship with Rand abandoned since subjected to the conscriptionary methods of both Aes Sedai and Wise Ones. A horrid character, if you ask me. Morraine is even more mysterious and useless as in the previous books, except for the end, where she does something heroic, but kind of dumb. Rand is getting "hard", but still suffers the people around him as he could do nothing about them. A prisoner of his own small village upbringing, he seems a sad sorry character, as remote from heroism as a dung beetle is from a professional dancer.

Interestingly enough, I found the Elayne and Nynaeve story arch a lot more satisfying. Complex, reasonable and thrilling. That until they voluntarily return to the Aes Sedai, where they have to again suffer all the humiliations an Accepted is supposed to suffer to gain "character". A new female Forsaken appears, Moghedien, but not nearly as interesting as Lanfear, who is present in this book, but terribly inconsistent. The ending of the book also annoyed the hell out of me, since I believe her outburst was completely out of character.

All and all, as interesting and captivating as the others in the Wheel of Time series, but suffering from a kind of character sublimation, in which the story is being carried by people that don't act like themselves. Book 6 is on the way.

and has 0 comments
All this opposition to these new American laws that are being discussed SOPA and PIPA has become a kind of spam that covers the real issue of what these laws are all about. Certainly there is nothing in the title that says anything remotely useful. Here is a TED talk lasting only 13 minutes that explains what is what:

>

Also, you might be interested in one of our own Romanian comics, Pidjin, who are explaining it nicely in graphical form. They are very funny and inspired in general, but the SOPA bit was brilliant.

and has 0 comments
It seems that Robert Jordan is balancing the odd books of the Wheel of Time series series with the even ones. The first and the third books were kind of black and white, little grey in between, all good characters fighting the evil. Now, the second and the fourth seem to be more ambivalent. Does that mean that the fifth will be again a bipolar epic battle? I'm ready to find out! [grin]

In The Shadow Rising there are four different main stories that have little to do with one another, all happening simultaneously. There is the Rand arch, going to Rhuidean to fulfil the prophecies, accompanied by Mat, Eqwene, Moraine and the Aiel; there is Perrin, going back to Two Rivers to protect it from Ordeith, Whitecloaks and hordes of Trollocs; Elayne and Nynaeve are hunting Black Ajah; finally, the White Tower itself has some major problems.

The book was certainly entertaining, although not particularly deep. A lot of complex characters are relegated to doing cliché work, like Thom, for example. A large part of the book is focused on Perrin, while Mat is all but ignored. My favourite character Lanfear appears from time to time, too. Rand does weird things, making us wonder if he has lost his mind or just has a plan, but neither his companion nor the readers know what that might be. I liked the Egeanin bit of the girls story, but I can't tell you more for fear of spoiling it. Some really flashy and important battles are being carried out by different characters, although they are more literary show than substance, as battles go.

All in all, a reasonable continuation of the series. I think I am safe by now in saying that Wheel of Time is addressed to adolescents and will probably not evolve to something further to the end of the saga. Still fun, though.

and has 0 comments

I've previously written about Pioneer One, the show that is produced almost entirely from donations and is distributed free on the Internet. Its first season contains 6 episodes and I have just finished watching it. As I was saying before, the series is cheap as dirt, but people have managed to use an intriguing story and ingenuity to make a decent production that I enjoyed watching.

Not only I love the idea of these "free" movies, where people actually make the effort to pay only if they liked them (and are that kind of people), but I see it as a seed for greater things. On their site, the people at Pioneer One are promising a second season, this time financed by sponsors that would have liked the first. It is an interesting hybrid that is being born: a crowd-sourced first season, that people must like or it wouldn't happen in the first place, and a more classical method of financing the rest, but based on that first bit of work. No one will escalate it to intergalactic space wars with lots of special effects. Like a film production with a soul.

I am looking forward to what they will do next, both heroes of the series and makers, heroes in their own way.

Update February 2016: Well, They have released a "webisode", which means they didn't quite manage to get the sponsors or something else happened. Just in case they do anything, you might want to subscribe to the Pioneer One YouTube channel.