GLORP and “Conflicting values in rows”

Note to self: if GLORP keeps on insisting that your UPDATEs to a certain object really can’t be accepted due to ”Conflicting values in rows”, please start by looking into the following thing first:

Maybe you just changed the :1 part of a 1:n relationship without removing the changed object from the :n part of the relationship.

If that is not enough of an explanation, take this example: If you have an Order object with OrderItems, always make sure you not only change the #order instance variable of an item when you move it from one order to another, but also remove it from the Order’s #orderItems before you commit your transaction. GLORP will be a little upset otherwise.

Only after you’ve made sure that this is not the problem (I mean, *absolutely* sure), you can start developing another completely unorganized and fruitless plan for guessing about the causes ;-)

T-Mobile Travel & Surf: manchmal fühlt man sich…

…als zahlender Kunde schon ziemlich heftig auf den Arm genommen.

Im Urlaub (Kroatien war es dieses Jahr) habe ich ein Travel&Surf-Paket vom Magenta-Meister, das 7 Tage langen Auslands-Surf-Spass mit UMTS und Flatrate verspricht, gebucht, obwohl es in unserer Unterkunft und im näheren Umfeld keinerlei UMTS-Empfang gab. Immerhin hat Edge sehr gut funktioniert, um zum Lesen der Mails und für die täglichen Nachrichten, ein bisschen Navigieren und Ausflugstipps und Wettervorhersage stöbern reicht es ja auch aus.

Interessant wird es dann, wenn am 5. Tag (der Pass gilt für 7 Tage) eine SMS kommt, die mir mitteilt, dass mein UMTS-Volumen erschöpft sei, und ich ab sofort nur noch mit verringerter Geschwindigkeit surfen könne.

Nun ist das im Grunde nicht schlimm, denn es gab an meinem Standort sowieso keine schnellere Verbindung, und die Vertragsbedingungen sagen ganz klar, dass nach 100 MB gedrosselt wird. Für mich war der Service also vor und nach der SMS genau gleich.

Und doch: offenbar zählt die Telekom hier nicht mit, wieviel man per UMTS surft, sondern es gilt der komplette Datenverbrauch. Die ersten 100 MB dürfen per UMTS oder EDGE versurft werden, danach nur noch per EDGE. Selbst bei nochmaligem Studium der Bedingungen auf der T-Mobile-Seite ist mir nicht gelungen, das so herauszulesen:

Was passiert nach Verbrauch des Volumens oder Ablauf der Gültigkeit meines Travel & Surf Passes und welche Kosten entstehen maximal beim Daten-Eurotarif?<
Keine Sorge, es entstehen in keinem Fall zusätzlichen Kosten. Je nach Pass wird Ihre Datenverbindung automatisch getrennt oder Sie surfen mit dem WeekPass mit einer reduzierten Geschwindigkeit weiter (Bandbreitenbeschränkung). Hier entstehen Ihnen ebenfalls keine weiteren Kosten. Nach Verbrauch des Passes werden Sie automatisch wieder auf die kostenlose Internetseite geleitet, wo Sie bei Bedarf einen weiteren Pass kaufen können.

Also irgendwie lese ich das so, dass nach einem Verbrauch von 100 MB per UMTS die Bandbreite gedrosselt wird, und nicht, wenn 100 MB genutzt wurden, egal wie schnell. Aber wer hier Begriffe wie “Raubritterei”, “Beutelschneider” oder ähnliches im Hinterkopf hat, liegt sicher ganz falsch. Sicher war das ein Einzelfall, und ausserdem lag ein unglücklicher technischer Defekt in einem der Vermittlungsknoten beim Roamingpartner T-Mobile Hrvatska vor. Das Abbuchen der Option hat übrigens super funktioniert…

Ganz frisch aus der Spamosphäre…

Es gibt einige wenige gute Gründe, warum man sehr froh sein kann, dass online-Übersetzungsdienste bisher noch nicht gut funktionieren. Einen fand ich heute in meiner Inbox mit einer sehr gut gewählten Absenderadresse (service@verifiedbyvisa.de) :

Hallo Gast Visa Europe,

Ihre Kreditkarte wurde ausgesetzt, weil wir ein Problem festgestellt, auf Ihrem Konto .

Wir haben zu bestimmen,dass jemand Ihre Karte ohne Ihre Erlaubnis verwendet haben. Für Ihren Schutz haben wir Ihre Kreditkarte aufgehangen. Um diese Suspension aufzuheben [Klicken Sie hier] und folgen Sie den Staat zur Aktualisierung der Informationen in Ihrer Kreditkarte.

Vermerk: Wenn diese nicht vollständig ist , werden wir gezwungen sein, Ihre Karte aussetzen

Wir bedanken uns fur Ihre Zusammenarbeit in dieser Angelegenheit.

Vielleicht sollten wir uns wünschen, dass die Computerlinguistik noch lange braucht, um gute Übersetzungen zu berechnen. Das erleichtert dem E-Mailnutzer das Spamfiltern doch enorm…

How to completely miss the point in discussions about a programming language (like Smalltalk)

Sometimes I encounter things on the web that make me think what’s wrong with people. Some just seem to have to much time to insist on some mostly irrelevant point they dislike and use it to judge a whole technology by it.

Take this little example:

Someone, let’s call him Sebastian Sastre ;-) , blogs about the top ten reasons why he chose Smalltalk to implement one of his projects and why he’s absolutely happy about his decision. Shortly after that, somebody links to the story on reddit and there people start to discuss in great lengths about why Smalltalk is completely, totally dangerous and just about to sink the world because it doesn’t implement mathematically correct operator precedence.

I agree that the fact that Smalltalk will incorrectly calculate 2+3*5 as 25 instead of 17 is irritating and strange. No doubt about that.

People I introduce to Smalltalk in my courses shake their heads about that, because they are busy soaking up all that’s new about Smalltalk and its environment and not ready to swallow that pill also.

But once they see how clear and concise the “everything is an object” princible and the message precedence rules in Smalltalk are, they simply take a note to rather add a pair of brackets too much than too little and accept it as a Smalltalk weirdness. Later I ask them to explain how #ifTrue: works, and those who get it start being fascinated by Smalltalk and objects, you can literally see it in their eyes. At the end of the course, nobody says “all good and well, but I cannot accept that Smalltalk can’t calculate”.

In the end, most Software bugs have other reasons than the fact that Smalltalk has no operator precedence, and even if so, this kind of error is so easy to find that it’s not worth talking about.

The funny thing about this whole reddit thread (or at least of most of it) is that it concentrates on some fact about Smalltalk that is such a minor drawback of conciseness and can be overcome so easily by placing brackets around mathematical expressions (which in my opinion improves readybility anyways). It’s somewhat frightening to imagine important management decisions being made on the basis of Statements like “But if it can’t even calculate a simple term, how could it possibly run our business? And don’t forget it’s not typed!” ;-)

Bist du noch up-to-date in der IT?

Nur, wenn Du mit Sätzen wie diesem was anfangen kannst:

Dafür propagiert Gamma die Open Services for Lifecycle Collaboration (OSLC), eine maßgeblich von IBM betriebene Spezifikation zur Interaktion von ALM-Werkzeugen (Application Lifecycle Management) mit Change-Management-Systemen. Daraus soll eine einfachere Werkzeugintegration unterschiedlicher Tool-Hersteller entstehen.

Eben. Und genau das habe ich mir schon immer gewünscht ;-)

Das Zitat ist übrigens ein Fundstück aus einer Zusammenfassung der OOP-Konferenz auf heise developer.

How to find out if you made progress

Shawn Blanc relates to a nice description of how you should feel when reading code that you’ve written months or years ago:

If your old work doesn’t shame you, you’re not growing.

It’s nice to look back and feel that you’ve made progress. When you look at old work, it should suck glaringly and you should cringe painfully. But there should also be some germ within it that you’re not ashamed of—some spark of talent or inspiration that connects to what you do now.

The good news for me: I feel the shame from time to time. The bad news: sometimes the code doesn’t have to be much older than a day. Of course it just means I’m learning fast ;-)

We knew it all the time: Web Services won’t heal the world!

I never really liked the big Web Services. All the XML-burdened complexity combined with lots of tools from the big vendors that had extremely long names and the purpose of which could never be understood unless you already were lost somewhere in the mud of XML-tides.

When I read today that the WS-I initiative officially stopped existing on heise online(German), I was really surprised, because it would mean there still is some sanity in the IT industry somewhere ;-)

I especially like this part of a blog post by Simon Phipps that was linked to in the above-mentioned article:

Whatever other origins it had, the whole movement was, as far as my own experience recalls, transmitted around the industry by a senior analyst from a large analyst firm visiting all the key players and asking them about their “web services strategy”.  As a consequence they all assumed Web Services were a key strategy for their competitors and put huge effort into devising a strategy of their own

This guy seems to really understand how technology trends are born in our industry ;-)

Maybe this also explains why some companies were in a lemming-like “We need to rewrite everything in Java/.Net/Whatever” mode that also cost loads of money and only rarely really led to better systems.

Comment Spam and Humanity

The ratio between reader comments and spam comments on my blog is something around 1:500 or so. Fortunately, the comment spam filter on wordpress is very good.

I really found this one very nice:

HELP! I’m currently being held prisoner by the Russian mafia [deleted link] and being forced to post spam comments on blogs and forum! If you don’t approve this they will kill me. [deleted link]
They’re coming back now.  [deleted link]
Please send help!

This guy really has a sense of humor ;-)

Unfortunately, he (or she) forgot to add an address to the comment, because I’d like to send the police ;-)
So today I not only killed a spam comment, but also a victim of the russian mafia ;-)