Aktuelle Aktivitäten
Kanban-Training im Februar 2010
21. Dez
Im Februar gebe ich ein zweitägiges Kanban-Training in deutscher Sprache. Kanban ist ein leichtgewichtiges Prozess-Framework für die Entwicklung von Software. Es überträgt die Kanban-Prinzipien, die ursprünglich im Umfeld von Lean Production entstanden sind, auf die Softwareentwicklung.
Anmeldung und Organisation übernimmt SIGS-DATACOM, auf deren Website Sie weitere Informationen über dieses Training finden können.
Ich freue mich, Sie in Köln zu sehen – das Training wird sehr spannend werden!
This blog is now iPhone-ready!
20. Dez
Today, I upgraded to Wordpress 2.9 and the WPtouch plugin. Now, the users of Apple’s iPhone and other mobile clients can browse this blog more easily. Have fun!
Welcome back, Uncle Bob! [OOP 2010]
09. Nov
At the OOP 2010 conference, Robert C. Martin will give a keynote about polyglot programming, called “The Polyglot Craftsman”.
Hey, Uncle Bob is back at OOP,! For me this is very special because it was him who brought me to object oriented design/programming and to my first OOP conference, ever. And this was back in 1992 when I was a enthusiastic software developer, coding in C. Java did not exist in those days, design patterns were not published, there was no TDD – well, it was just the old days of poorly maintainable code!
Bob, when I came into your workshop about object oriented design at OOP, you started with a very simple example in C++ (at least, I thought it was): a car with an engine. You said something like this:
Bob: “OK, guys, lets define an accelerate() method on the car – what would be inside the body of this method?”. And my head started thinking. Somebody else: “The car should tell the carburator to increase the fuel to air ratio. And it should also tell the automatic transmission to shift one gear up!”
Bob: “OK, so Car::accelerate() calls Carburator::increaseFuelToAirRatio(), followed by Transmission::shiftUp(). Question to all of you: Is this a good design or a bad design?”
And poor me, inexperienced in OOD, could say neither yes nor no: “In fact, I don’t know!”.
Bob, you suddenly shouted “Of course, it is a BAD design, very bad design!”
Me: “Oh, why this?”
Bob: “What if you have a Diesel engine, without carburator? And: What if your car has an electric engine, without transmission?”
Me: “Hmmm… well, I guess, I would have to change the design significantly. Something like Thyristor::increaseElectricCurrent().”
Bob: “Exactly! So, how about introducing a neutral abstraction above all this? How about Engine::increasePower()? And with an intelligent Engine class that knows how to increase the power purely by itself? With nobody telling it how to do that?”
Me: “Aha!”
And so 1992 was the year when I became enthusiastic about object oriented design. Thanks a lot, Bob – I am really looking forward to see you again at this OOP. I guess, you won’t remember me but this is not a problem.
Understanding social media
13. Sep
At the moment, there is a lot of buzz around social media like Twitter. Keyword is “democratizing information”. Social media users are forming new communities with their own rules and “social speak”. There are even web sites like Klout that calculate how much influence you have in social media (when I test my Twitter user account, it says that it has not indexed my tweets, yet).
This is an interesting phenomenon that I am trying to study and understand. Maybe, it is possible to generate something entirely new.
Viele externe Entwickler = schneller alternde Software?
02. Sep
Sowas passiert Ihnen in Ihrem Projekt hoffentlich nie:
Kunde: “Wir verstehen unser Framework nicht mehr. Es ist total verstrickt!”
Berater: “Aber Ihr habt doch gesagt, es sei erst zwei Jahre jung.”
Kunde: “Ja, und?”
Berater: “Sowas passiert doch sonst nur mit viel älterer Software!”
Kunde: “Nein, hier waren viele Externe vom Dienstleister XY dabei, da altert das Framework schneller!”
Berater: “Oh!???”
Null-Constraint bei MySQL entfernen
30. Aug
Bevor ich die Syntax vergesse:
ALTER TABLE my_table MODIFY some_column varchar(255) NULL;
Released OpenID plugin V0.2 for Grails
22. Aug
Today, I released version 0.2 of the OpenID plugin for Grails (really easy to use plugin by original author Marcel Overdijk). The changes I made today:
- Fixed a bug that caused a MissingPropertyException when user typed an OpenID that did not have a valid provider address
- Fixed a bug that caused a NullPointerException when user’s OpenID contained syntactical errors
- Simplified code in the controller so that it is now independent of the configured URL mapping
You can find more information about the plugin on the plugin’s Wiki page.
SplendiCon ist online
26. Jul
Consultants, insbesondere die aus der IT, träumen von einem eigenen Produkt. So auch ich. Den Kunden zeigen, was man kann. Zeigen, was gute Softwarearchitektur ist. Frei über eine Lösung sprechen können, ohne den NDA eines Kunden zu verletzen. All das ist der Vorteil eines eigenen Produkts.
SplendiCon ist ein solches Produkt. Ich habe es vorige Woche online geschaltet. Es ist ein System, mit dem Sie Ihre eigene Konferenz organisieren können. Autoren/Sprecher/faszinierende Personen einladen, Beiträge in SplendiCon hochzuladen, mit einer Kurzbeschreibung und einer Datei. Qualifizierte Experten als Reviewer für diese Beiträge gewinnen und deren Ergebnisse einsammeln. Konflikte zwischen diesen Ergebnissen erkennen und in einer Programmkonferenz lösen. Zum Schluss das Konferenzprogramm, das verabschiedet wurde, downloaden.
Es hat Freude gemacht, dieses System in Groovy auf Basis von Grails zu entwickeln. Es läuft auf Tomcat, davor übernimmt Apache 2 die Rolle des Reverse Proxy, managt die SSL-Verbindungen und zeichnet die Webzugriffe im Logbuch auf. MySQL ist die verlässliche Datenbank im Backend. Linux als bewährtes Serversystem werkelt oberhalb der Silizium-Ebene und macht die Kraft der AMD-Prozessoren zugreifbar. SplendiCon spricht mit Paypal, dem Bezahldienst, sobald jemand eine Lizenz für eine Konferenz kauft.
Das Ganze performt sehr schön – ich bin gespannt, wie es weitergeht, sobald die Userzahlen steigen.
SplendiCon wird unterstützt von einem User Forum, in dem die Benutzer Fragen stellen und Antworten bekommen. Auch ein Bugtracker ist online, er nimmt Fehlermeldungen und neue Anforderungen auf.
Ich lade alle, die sich mit der Organisation von Konferenzen befassen, herzlich auf die SplendiCon-Plattform ein. Surfen Sie vorbei: http://www.splendicon.net oder melden Sie sich auf Twitter: @splendicon .
Grails Paypal Plugin V0.4 released
18. Jul
Today, I released the Grails Paypal Plugin again, the new release number: V0.4.
New features:
- The plugin now supports purchases with multiple items (using whatever shopping cart you like). Thanks to Matt Stine for the code!
- The plugin now records the information about the buyer that is supplied by Paypal after each transaction. This information includes name, address and email address, for example.
Bugs fixed:
- In some rare situations when an Apache reverse proxy was running as a front end for the Tomcat engine, the plugin could not redirect back to the original URI in case of an invalid payment. I replaced the URI by an absolute URL, now it works. Users of the plugin: Please change the parameter originalURI to originalURL and supply an absolute URL when you use the Paypal button tag, like this:
<paypal:button ... originalURL="${createLink(absolute: true, controller: controller, action: action, params: params)}" />
For users of Paypal Plugin V0.3: The schema has changed, the database needs to be migrated!
You can find the plugin homepage here.
Grails Paypal plugin 0.3 released
22. Jun
The Grails plugins project has accepted me as a committer. I am working on the Paypal plugin for Grails because I need it for a production site.
Today, I released V0.3 of the Paypal plugin. You can install it as usual with
- grails install-plugin paypal
A description of the plugin is available at:
The main changes in release 0.3:
Bugfix:
- The plugin now gives a proper response to Paypal when Paypal sends an IPN. Before, the plugin did not send a response so that Paypal repeated the IPN message several times.
New feature:
- Analogous to the parameters ‘returnController’ and ’returnAction’, we now have ‘cancelController’ and ‘cancelAction’. You can specify a controller and an action to process the cancellation of a payment.
More changes are on the way. Matt Stine has written code that allows you to purchase an entire shopping cart full of items instead of a single item as the plugin can do today. The new code is still under test.
Cheers,
Matthias


