Wow… more than one year since my last post. Time flies, especially if your company got aquired and you experience suddenly very exciting adventures. What a year!
Anyway, back to business - I’ll increase slowly my public appearance and therefore I am happy to announce these two upcoming events:
1. I am attending next week a MASS Technology Leadership Council Breakfast Seminar in Cambridge, MA where I’ll speak about “the Secrets to Achieving Unprecedented Rates of Growth and Innovation” at KAYAK
2. I got another chance to visit beautiful Hamburg - always worth a visit where I’ll run two Sessions (in German) at the Devcon Hamburg.
Once again - Agile Development with PHP and an interesting session about our Caching/Sharding/Distributing Strategies @ swoodoo.com when getting hammered by TV traffic.
Your choice - Boston or Hamburg
dann würde ich auch auf der deutschen Webseite buchen….
Well… now I feel a LOT better…..
(This is no joke… here you see how germany worries about environment and radiation protection)
After my discussion with Arno about the right way to develop software I’ve decided that it would be a good chance to meet him in person while visiting PHP Con in Barcelona. And besides that, Barcelona and the PHP Folks there is always good for a visit.
Therefore there is - once again - another chance to enjoy my talks called ‘Refactor it! A practical journey into the test-driven world’ and ‘Agile Development with PHP in Practice’ . I did run both topics already quite often but obviously there is still a need for it. If you are new to agile development or interested in refactoring your old (shitty?) sourcecode - come in and join.
And if you are interested in the topic of the discussion with Arno - feel free to contact me. I will organize a meeting with where we will discuss the whole item over a few bottles of red wine. After receiving so many comments it would be nice if we get a few more opinions together.
After Barcelona Summer is definitly gone and it’s - as every year - time for the international PHP Conference in Karlsruhe. This time Thorsten and me will run a half-day Workshop called “Unittest for Dummies” which will address unit testing beginners. If you are not already into TDD you should definitly consider to come. Furthermore there will be a session about how swoodoo managed to withstand the massive amount of requests due to (*yeah*…) the big success. I’ve titled it “caching, sharding, distributing - Scaling best practices” - so you might get an idea about the contents.
That’s it - live from the “Oktoberfest” in munich
so hat es Benjamin Franklin ausgesprochen und dem ist nichts hinzuzufügen.
Eigentlich hatte ich mir fest vorgenommen vor der Wahl ein schönes Posting zu machen und darzulegen warum ich es für wichtig halte zu wählen und dieses Mal das Häkchen bei den “Piraten” zu setzen. Der Alltag und die viele Arbeit machen mir einen Strich durch die Rechnung - aber zum Glück gibt es andere die da etwas mehr Einsatz zeigen.
Daher möchte ich euch auf Tobi’s Posting hinweisen - dem schliesse ich mich schlicht an. Es mag besser formulierte Gründe geben, rationellere Beiträge und Diskussionen, doch für mich bringt Tobi die entscheidenden Dinge sehr schön auf den Punkt. Es ist wichtig die Dinge zu ändern - die Piraten sind die einzig vernünftige, frische, unverbrauchte und nicht korrumpierte Möglichkeit die sich uns bietet.
Und weil ich schon mit Dichtung begonnen habe schliesse ich dieses kurze “early-morning-pre-coffee” Posting mit einem weiteren Zitat, diesmal von Voltaire:
„Ich mag verdammen, was du sagst, aber ich werde mein Leben dafür einsetzen, dass du es sagen darfst.“
When I first saw the posting about ‘bad’ code in OXID over at phpterror I wondered if I could ignore this - but now I’ve realized that this article was published on Planet-PHP and even more - other people start to copy the content of the article.
As I am the guy who introduced the disliked functionality many years ago ( actually years before ZF popped up) I feel the need for a statement to put the things into the right order. Please note that I did work for OXID in the past (years ago) but I do not nowadays.
Arno criticised the way modules == classes are instantiated in OXID eShop. Actually I do believe that exactly this feature is the most coolest in OXID and should be implemented in more OSS.
Let’s start with the “why the fuck did the guy implement this”?
If you do run a website out there you know how important it is to keep it up-to-date with the latest patches due to security reasons. Now imagine - we are in eCommerce area. You deal with payments, credit card data and sensitive information about what people ordered from your shop. Not only Creditcard data is sensitive - imagine it would leak that you ordered the extra-big-boobs doll? You see - especially in this area you need to make absolutly sure that your servers and the software is safe.
Unfortunately you can’t start an eCommerce business out-of-the-box. You need to adopt the software to your needs and processes. Think of payment, ERP, delivery notifications, link to your stock, uploads to price-comparison sites etc. Some of the functionality you might need to develop yourself - for other stuff you might find already existing modules out there.
Therefore you need to change code, and/or install external modules which modify the functionality. In former days you simply edited the source code (as we are talking about OSS) and made manually sure that the modules you install are compatible. Don’t forget - each of them will work with the out-of-the-box shop - but they still should work after you added your changes and - also need to work after you installed some other external modules which might overwrite/change the same classes/functionality which your new module also want to change.
You end up with a highly customized shop, many changes, a lot of work to dig through the sourcecode of the installed modules to make sure that they don’t harm themself and… you lost the possibility to automatically appply patches/releases. Upon each patch or new release you need to manually redo/check your changes.
This sucks. It sucks a lot. And this is exactly why I’ve introduced the criticised module functionality.
So what did I do?
As Arno already copy&pasted the source I won’t repeat it here. But let me explain the main idea behind the concept.
As OXID is fully OOP you can change all the functionality by inheriting your class from any base class you might want to change. You add your changes and - et voila - you still can overwrite the bases classes with new releases/patches and your changes will work. This is called object oriented programming.
Let’s assume you want to change the method “getPrice” in the class “oxarticle”. You simply overwrite oxArticle::getPrice and… it would work if the system would know that your class exists. Therefore you need to register your class and let the OXID Framework know about it so that it automatically will instantiate your class instead of oxArticle each time the object is needed.
So far, so good, so what?
What happens if you install some other module ( e.g. from here) which will change the same method in same class? It would screw your changes and you would end up with manual changes again. To avoid this, the OXID Framework supports “chaining” of inheritance… and the order is set in the config. So you can define that the modules oxArticle implementation is executed before your class or after.
I do believe that by overriding the classes you do get the most flexible option to change everything without loosing the functionality to update the shop whenever you want. For sure this could be solved differently. Events or Hooks would have been a way to go - but this would involve a lot of additional coding == lines of code and therefore introduce new vectors for bugs. And - it is by far not as flexible as overriding the class. Nowadays it could be solved also with Reflection. But this is a bit too “magic” in my opinion. Therefore I still believe that the way I’ve chosen is the best way to solve the problem and - most likely - I would do it again today.
Last but not least - I would like to comment the show me your 94% Unit Test coverage! posting. I’ve contacted OXID already one year ago about this and I fully agree with Arno here. It sucks to advertise with some test-driven-development features and then keep the tests for yourself. OXID has to change this. Now.
Today I had a good skype discussion about the issue with Arno - I really like his style even though we both do not agree - and the result for me was that I’ve decided to submit a few proposals to the PHP Conference in Barcelona to get the chance to meet Arno and discuss the whole issue over a bottle of spanish Rioja. Or two. Or…
Folks, it’s Paaaaaaaaaaarty Time!
We like to invite you to the PHP 5.3 release party which is an event to
celebrate the 5.3 release, happening Friday, the 17th of July in Munich.
The release party offers a chance to come together with other php
enthusiasts and enjoy that php is alive and kicking. And of course people
in favour of a decent barbecue, together with some beer and other drinks
The happening will take place at Waldwirtschaft beer garden, at any weather. We will meet at 19:00 o’clock - open end. The location is famous for its huge beer garden (2500 available seats, a childrens playground) and its typical Bavarian but also international food. On sunny weather you even may enjoy live-music and listen to the sounds of Jazz, Blues, Swing or Dixi.
Catering will be provided and as a special delicacy you may enjoy a suckling pig!
For any questions please visit IRC channel: #phprp on irc.uni-erlangen.de.
The PHP 5.3. BBQ release party is sponsored by:
Supporters for the PHP 5.3 BBQ release party are:
I hope to see you there!
Update: edited sponsor list
Nein kein Apfelkuchen, sondern CakePHP. Und zwar bei Tripsbytips. Sind echt nette Jungs und auch ein cooles Projekt. Natürlich mit Facebook Widgets. Und Community. Eben allem was heutzutage Spaß macht.
Wer also nun Bock auf einen guten Arbeitsplatz in der Hauptstadt hat, und auch PHP sowie JQuery, CSS drauf hat der sollte sich die Stellenanzeige mal komplett ansehen.
This one reminds me on my past - after seeing it, I feel very happy that I do not do any contracting work any more. I still don’t know if I should laugh or cry. It might be old - but nevertheless worth to watch it.
(English - with German subtitles)
via Guido Muehlwitz
IPC in Berlin is still in progress and I feel a bit wasted after too much alcohol during the last two days. I think I need a holiday to recover.
For the ones interested - yesterday I had my talk about Architecture in Web Development - and here are the slides. Seems like slideshare ruined the layout when converting - sorry - you have to live with that. The slides probably won’t be of much help if you did not attend the talk. Anyway - here we go: