In this talk I share our experiences at Liip with agile development in Symfony2. I focus on technical aspects of agility that will be helpful whether you use Scrum, Kanban or some other agile process. Agility is not limited to program code, there are also ways to handle data model changes. I will talk about our take on unit and functional tests with the WebTestCase, about the Doctrine Migrations project and automated deployment.
Additionally, I did a lightning talk about Symfony CMF dynamic routing during this conference.
My first talk in swiss german ever - on popular request :-)
Conference: One Konferenz Zürich, 9.5.2012
Title: Web-Massenware der Zukunft die heute schon eingesetzt werden kann (together with Gerhard Andrey and Christian Stocker)
I presented the PHP content repository as one of the things that should become available more and more easily in the future.
I repost some of my blog posts made @ liip. Please see here for the original post and comments: https://blog.liip.ch/archive/2012/05/08/php-talking-to-magnolia-cms.html
Since we started working on Jackalope, we always claimed it would also provide an integration point with other enterprise systems. Last week, we set out to proof this idea. Grégory Joseph of the Java based Magnolia CMS came to help us on the Magnolia side of things. Magnolia is using the JCR reference implementation Jackrabbit for storing its content. After an interesting exchange on their design decisions and our ideas, we started to hack.
I repost some of my blog posts made @ liip. Please see here for the original post and comments: https://blog.liip.ch/archive/2012/03/28/jackalope-observation-and-import...
Daniel Barsotti and me were reviewing the observation API of PHPCR and decided to just implement getting the observation journal. The journal contains all add, remove and update operations that happened on a PHPCR repository. You can also filter the journal by event type, path, node type and other criteria. This way, PHPCR can become almost a message queue (but just almost, there is no guaranteed delivery of messages).
I repost some of my blog posts made @ liip. Please see here for the original post and comments: https://blog.liip.ch/archive/2012/02/06/doctrine-phpcr-odm-now-handles-v...
The Doctrine PHPCR-ODM allows you to easily map your PHP objects onto content repository nodes. Since last week, the PHPCR-ODM leverages the versioning support of PHPCR in the ODM layer. This gives your application a very simple way to work with versioned content.
Looking for something nice that could be done with the WS2801 strips i bought, I came up with this idea to build a light globe. The arduino drives the strips and has a couple of programs it runs.
The best way to show how this all looks is probably some movies. (Beware, i used my cheap digicam to record, no high quality...). Some still pictures at the bottom.
The globe in action
The other day, i wanted to write a controller that expects an object as an action parameter, with the help of a custom router. Writing the router was as easy as adding a field to the array i return in the match() method. But then sometimes the controller has to send a redirection response. In production mode, everything works fine.
But in debug mode, i got a - very non-telling - error about serializing:
Notice: serialize(): "controller" returned as member variable from __sleep() but does not exist in /home/david/liip/symfony-cmf/cmf-sandbox/vendor/symfony/src/Symfony/Component/HttpKernel/DataCollector/DataCollector.php line 30
Auch dieses Jahr gab es viele interessante Gelegenheiten, Photos zu machen. Hier eine Auswahl der Bilder, die mir am besten gefallen.
I repost some of my blog posts made @ liip. Please see here for the original post and comments: https://blog.liip.ch/archive/2011/12/18/multilanguage-support-for-doctri...
Over the last weeks, Dan, Brian and myself worked on adding translation capabilities to Doctrine PHPCR-ODM. PHPCR-ODM is an object - document mapper for the php content repository (PHPCR). Thanks to the Liip Ecostar process, we got funding to do this during work time.