Connectivity for the (occasional) road warrior

When you have a virtual machine that connects both to the host directly and to the network via bridging, you can run into troubles with DNS resolution if you use DHCP on both network interfaces. Since the solution is somewhat cryptically hidden in the DHCP client manual, here’s a walkthrough.

DomniklStatsdBundle: Monitoring mit statsd in Symfony2-Projekten

Während mit klassischen Monitoringlösungen wie Nagios Systemdaten überwacht werden können, eignet sich die Kombination aus statsd und Graphite hervorragend für effektives Monitoring von Businessprozessen in Webanwendungen. Auch für Symfony2-Projekte wäre so eine Lösung praktisch – eine Variante stellt der Artikel vor. Weiterlesen

Webstatistik mit Piwik: Fragen und Antworten aus der Praxis

Während des Webinars „Webstatistik mit Piwik“ (die Aufzeichnung stellen wir in Kürze zur Verfügung!) wurden einige Fragen gestellt, die ich an dieser Stelle noch einmal zusammenfassen möchte. Dabei dürften einige der Fragen auch für diejenigen interessant sein, die nicht am Webinar haben teilnehmen können, aber doch planen, Piwik künftig in eigenen Projekten zu verwenden – oder dies bereits tun. Unter anderem gehe ich auf Fragen nach dem Segmentierungs-Feature ein und zeige, wie man seine Piwik-Installation auf etwaige Lastspitzen vorbereiten kann. Weiterlesen

Guzzling web services out of the box…

Guzzle has come to a certain fame recently as the framework powering Amazon Web Services new SDK2 for PHP. But what exactly is Guzzle? Guzzle is a framework for building RESTful web service clients. As such it is obviously a very potent HTTP-client library, that presents us with an easy way to send subtly crafted HTTP requests of all flavours to a server and deal with the resulting responses.

But Guzzle is still more than that. Based on a service description file written in JSON – similar to a WSDL-file from the SOAP world – Guzzle builds entire web service clients from scratch and as such relieves us from tedious and repetitive tasks in their implementation.

Development Environments with Vagrant and Puppet


Setting up the infrastructure for new projects can be quite a pain in the ***. Even after the initial setup is done, adding new developers to the team requires a lot of time. Besides explaining the project to the new team member, the project’s development environment has to be installed on the new developer’s computer. This includes setting up virtual machines, web- and database-servers, updating libraries etc.

Many IT companies use the same technologies repeatedly which leaves them with multiple development environments that look very similar but have been set up separately. This problem can be solved by using a configuration management software and a smart tool for handling virtual machines.


Mayflower and Symfony2

Two weeks ago, I had the chance to attend Symfony Live 2012 in Berlin. At first, I tried to get a ticket by submitting several proposals for talks. This didn’t work out but the organizers were very kind and invited me to attend the conference for free!

A couple of days later, I read about the Symfony2 Framework Certification. I had passed some certifications before (namely Zend Certified Engineer PHP5.3, Oracle Certified Professional (OCP), MySQL 5 Developer, and Scrum Product Owner Certification) and thought this might be a good chance to deepen my Symfony2 knowledge. Mayflower’s reaction to my wish was very positive. In they end, Mayflower covered the certification fee and gave me the chance to be the company’s first Symfony2 Certified Developer.

ACLs and Symfony2

Like most larger PHP frameworks, Symfony2 contains a component that handles all kinds of security topics. Its main two capabilities are authentication and authorization. While making it easy to implement these concepts, the component separates them and executes one after the other. In the first step, the framework determines who the current user is or whether he is who he claims to be respectively (Authentication). Secondly, it evaluates whether he is allowed to perform a certain operation (Authorization).

This article focuses on authorization or – more accurately – Symfony2’s Access Control Lists (ACLs) and how they support the implementation of complex access right models.

Image similarity search with LIRE

Content-based image similarity search — determining the images in a database visually similar to a search image on the basis of pixel data alone — is a hot topic. Applications are numerous. Just recently, has introduced a visual product similarity search for some products, and google has introduced a search-by-image feature.

In addition to hands-on applications, there is a lot of research on the topic. The abilities of university maintained image search engines grow constantly. Unfortunately, implementing current techniques requires a bunch of specialist knowledge and some mathematical sophistication. Fortunately, however, there are effective simple techniques for which there exist open source libraries.

One such library for JAVA is the LIRE API. In this short article, I demonstrate how to implement a basic linear content-based visual image similarity search using this library. Weiterlesen