2014 retrospective and 2015 goals

It’s been quite a while since I last wrote an entry in this blog. What the hell, I haven’t written a single blog post in 2014! And this is a shame. A clear resolution for 2015 is to try to write a bit more here.

Anyway, sorry for another (hopefully not) boring retrospective post. But it’s been a very complex and intense year for me and I really want to write about it.

I started the year still at Hailo. Nice project, lots of potential, but I always felt like an outsider in there. Yes, I made some friends, I had some highlights fixing things here and there but I never really had the chance to make a difference. I even got promoted to Technical Lead but it really never felt a promotion so it was time for me to let the project go and so I did at the beginning of the summer.

Decision made, it was interviews time. And I realised 2 very important and depressing things:

– There are lots of interesting projects in London but a good amount of them are in early stages and unfortunately don’t have much budget / stability. The startup scene is relatively young and the situation is improving every day but sometimes you have to discard nice projects and teams.

– PHP is not used in many new projects in London, specially if they are or aim to be significantly big. We could talk a lot about the reasons, I honestly feel that most of the projects can have a big % of code written in nice PHP and still be successful but the situation is what it is.

Plus, I wanted to do a bit of a career shift in 2 aspects.

I think I have been doing some sort of devops forever, I honestly think I am not so bad at it and it is definitely something I want to do on my daily basis.

And I must confess I am a bit tired of PHP. Tired of stupid discussions in the community and internals, tired of ugly legacy projects and tired of the limitations of the language (which is part of its beauty at the same time). Yes, there are legacy projects and crappy code in all languages, there are nice projects written in PHP but the reality is that the PHP community is on average sometimes several years behind others. PHP is catching up, it has improved a lot thanks to Symfony2 and the Facebook guys releasing HHVM and Hack (making Zend finally care about performance) but it will take years for everybody to catch up.

And of course, these 2 things made it difficult to find something appealing. Plus, bad timing on my side, lesson learnt, never change jobs in June guys!

Anyway, after MANY interviews and doubts I decided to join Busuu because it is a nice platform to work on with lots of potential. Unfortunately, the expectations were never met, and I soon started looking for a B plan.

At the same time, my wife was struggling to find a job, I was not particularly happy at work, it started affecting our relationship so we started to think about the possibility of going back to Spain in 2015.

And then I got contacted by Guillaume, the CTO of Another Place Productions. We met in Old St, had some pints and he explained me their plans for the video games studio. It took me a while to decide, specially because I did not want to choose wrong again. But I finally accepted their offer and I must say I cannot be happier about it. I am building the platform from scratch, doing some devops work (Ansible and the AWS tools, my new best friends) and backend code (mainly with Play Framework so far).

I have learnt many things this year but the most important ones would be (and of course, as any advice, take them with a pinch of salt):

– Try to work in an industry that really excites you (in my case, video games). It will help a lot.
– Think about what you really want to do and fight for it. Sounds simple, but it is not.
– Life is too short to stay in a place where you feel you are not learning or you cannot make a difference. And it is never totally your or their fault, but it is unlikely to change in the long term.
– If something smells in the interviews, it will become very fishy after a couple of weeks. Always be honest and transparent. Both when you are the candidate and when you are the interviewer.

It has been also an intense years when it comes to speaking at conferences / events.

The year started with the classic lightning talks in the PHP London Meetup. No slides, 5 minutes, a new format for me so I gave it a try. The title was “Don’t use PHP” and it was basically a list of things you should never do with PHP with a bit of humour. People seemed to enjoy it, even the pub waiter!

I had 2 big highlights in February, I got the chance to speak at SunshinePHP in Miami and at PHPUk in London.

SunshinePHP was a very nice experience for me. Think about it, a little catalan guy taking a plane from London to the US because they accepted his talk about Redis! A very well organised conference, lots of international speakers I did not know and a very good atmosphere throughout the days I stayed there. Thank you Pablo, Álvaro and Raúl for all your help and the nice sightseeing! The talk went fine, but apparently I started assuming that everybody knew what Redis was about so perhaps I should have started with more introductory slides. Another lesson learnt!

And PHPUk was also a blast. The best organisation I have ever seen and again, lots of big names in the schedule. I got the chance to talk about Scaling with Symfony and people seemed to like it. Things to improve, speak a bit slower!

In May, I got a very interesting proposal by @jablanco from WeDevelopers inviting me to participate in their next podcast, talking about Redis. Thank you José for inviting me, I really enjoyed it.

I did another talk about Redis in the Symfony London meetup. It was the third time I showed most of the slides so I did not have to prepare it too much. Again, people liked it but again I spoke too fast :(.

And finally, in November I got the opportunity to talk about “Big Data, Great! Now what?” at SymfonyCon in Madrid. A very good opportunity to meet with lots of people and catch up! The talk went fine and hopefully this time I spoke a bit slower! :)

I have been accepted again to PHPUk and this edition is a very important one, their 10th anniversary. I feel very honoured to be in the schedule and I hope to deliver a good talk about “Modern Software Architectures”. And will do my best to speak slow!

This post is already too long, so let’s review my goals for 2014 and establish new ones for 2015:

– Launch my personal project. Done! We finally launch Video Games Quiz and Movies Quiz in Facebook with my friends at Undercoders. And we are launching a third one early 2015

– Give a talk in a non-PHP event. Fail! In my defense, I have not submitted any talks, but this is not an excuse. I will try to start with some London meetup group and take it from there!

– Improve my knowledge in Cassandra, Go, Erlang, RabbitMQ, NSQ. Meh! I have definitely improved in some of them, learnt new things like Ansible and Play Framework and will possibly not use some of them in the near future, like NSQ.

– Study Algorithms and other Coursera stuff. I completed Algorithms I with all exercises and did the first couple of weeks of Algorithms II. I also took courses in Machine Learning with Octave and R and started but had to un-enroll from Scala and Cryptography. Coursera is a very nice platform and I strongly recommend everybody having a look to it.

– Take things easier. Miserably failed! Although by the end of the year I have started to embrace this philosophy

Goals for 2015:

– Give a talk in some non-PHP meetup / event
– Keep improving my technical skills
– 3M DAU in our incoming game in Another Place Productions
– Take things easy :)

And a final question. I will possibly not post much more about PHP / Symfony2, would you be interested in blog posts about Ansible, AWS, Devops, Play Framework, Golang?

Posted in Miscellaneous | 5 Comments

Resumen 2013 y objetivos 2014

2012 fue un año muy intenso pero 2013 tampoco se ha quedado atrás

La gran decisión

Empecé el año todavía en SocialPoint. Probablemente la aplicación más grande de Symfony y uno de los proyectos más importantes de Europa sin ninguna duda. Rodeado de buenos amigos, excelentes ingenieros, pero algo cansado del ritmo frenético de los meses anteriores. Y ya llevaba unos meses dándole vueltas a la posibilidad de marcharme fuera.

Y el 22 de Enero llegó el gran día. Me levanté a las 5AM, me fui al aeropuerto y me planté en la parada de metro de St Paul en Londres para hacer la entrevista final con BrightTalk. El 21 había nevado y hubo un ligero retraso en el vuelo y el tren. A las 11 llegaba a las oficinas de BrightTalk donde me tuvieron casi 5h de entrevistas de todo tipo: técnicas, personales, manejo de conflictos… y conocí a los que serían mis futuros compañeros. Completamente agotado, llegué a casa a eso de la 1AM.

Yo no las tenías todas, pero el gran Marcos Quesada no tenía dudas. La aventura de SocialPoint terminaba para mí y empezaba mi aventura en el extranjero. Al cabo de 3 días llegó la oferta y tras darle MUCHAS MUCHAS MUCHAS vueltas y consultarlo con la almohada y mi mujer, tomamos la gran decisión.

Todavía recuerdo el día de despedida de SocialPoint. Sólo pude decirles con la voz entrecortada GRACIAS a todo el equipo. Me habían apoyado desde el primer hasta el último día y la verdad es que tuve que hacer muchísimos esfuerzos para no llorar aquel día. Almenos no delante de ellos…

8 meses fuera…

Ya escribí un post al respecto aquí. Es muy difícil expresar con palabras el torrente de emociones y experiencias que supone trabajar en un país diferente a donde naciste. Todo pasa súper rápido y todo es muy intenso.

Me gustaría destacar el tema de las diferencias culturales. Hay que entender que estamos fuera y las cosas se hacen diferente, las comunicaciones entre personas son diferentes, los piques también y hay que jugar al mismo juego que ellos. Me ha costado un poco entender esto y tengo mucho que agradecer a mi compañera Johanna Cherry por hacerme ver muchas cosas que percibía de manera incorrecta.

A día de hoy, empezamos a estar integrados. Hemos conocido a un montón de gente y la verdad es que no vemos muy claro si vamos a volver a medio plazo. De momento, seguimos en Hailo y veremos dónde nos lleva el viento el año que viene.

Cogiendo el gusto a las charlas…

En enero di una charla en Betabeers Barcelona sobre Buenas Prácticas en proyectos tecnológicos. Una charla algo diferente, poco técnica, claramente influenciada por Carlos Buenosvinos. Aunque apenas pudimos trabajar juntos unos meses en Emagister, siempre ha sido una gran fuente de inspiración para mí. Igual que Christian Soronellas. Ojalá algún día volvamos a coincidir en algún proyecto.

Y en Junio, llegó deSymfony. Mi charla tenía un título bastante ambicioso. Escalabilidad y alto rendimiento con Symfony2. El auditorio de la universidad de Madrid estaba muy lleno. Y me supo mal por el gran Vicent Soria ya que su charla era super interesante y seguro que él me robó algo de audiencia y yo le robé a él otro buen pico de gente. Si escucháis la charla, veréis que estaba MUY nervioso al principio. Pero salió bastante bien. Quizás la mejor charla hasta la fecha. Gracias deSymfony por dejarme el micro de nuevo para contar mis tonterietas.

No contento con esto, le eché bemoles y envié propuesta a PHP London. Era el mes de Agosto y pensé… no vendrá ni Dios. Redis everywhere fue el título. Al final, casi 100 personas y el grandísimo Derick Rethans en primera fila. El mes anterior había venido Rasmus… casi nada. El contenido de la charla creo que es muy correcto pero claramente tengo que mejorar mi inglés. Por suerte, Londres es muy tolerante en este sentido :). 5300 visualizaciones hasta la fecha, not bad. Hasta antirez ha visto las slides!

Intenté presentar tanto en Symfony London como en la SymfonyCon pero mis propuestas fueron rechazadas. Habrá que mejorar para volverlo a intentar la próxima vez.

Y me han aceptado en SunshinePHP y en PHPUK. Así que en Febrero estaré dando la brasa por ahí con mi inglés. A ver cómo sale!

Revisando objetivos de 2013

– Seguir mejorando en Symfony2 <- MEH... ya no hago Symfony salvo proyectos personales así que lo dejamos en estable.
- Presentar en algún evento fuera de España <- DONE!
- Sacarme las certificaciones de MySQL <- Me saqué la MYSQL5-DEV I. La acaban de cambiar. Y creo que paso de volver a hacerla
- Sacarme la certificación de Symfony <- Con el cambio de certificación, me la dieron aprobada. Poco digno quizás jajaja
- Aprender algo de Python y Erlang <- Erlang psche y aprendiendo Go
- Lo de Front-End… lo doy por imposible… bueno va aprender Twitter Bootstrap :) <- Proyecto personal en HTML5/CSS3 coming soon!

Objetivos 2014

– Lanzar el proyecto personal que llevo liado hace meses. Queda muy poco!
– Dar alguna charla en un evento que no sea solo PHP. Más difícil todavía!
– Mejorar en Cassandra, Go, Erlang, RabbitMQ, NSQ
– Estudiar Algoritmos. Hice el Algorithms I de Coursera pero tengo que repetir, que soy muy malo
– Tomarme las cosas con más calma :)

Y vosotros… ¿cómo os ha ido el año? ¿Habéis cumplido los objetivos? ¿Retos para el año que viene?

Posted in Miscellaneous | 1 Comment

4 meses en Londres – Experiencias

Este post no va de tecnología, o por lo menos no va a haber código. Sin embargo, voy a intentar resumir algunas experiencias que he tenido en mis primeros 4 meses en Londres. Tal vez con eso consiga animar (o incluso desanimar, y quizás ahorraros algo de sufrimiento) a todos aquellos que os estéis planteando dar el salto.

Todo viene de unos tweets cruzados con los grandes @asiermarques y @pgodel así que ya sabéis a quién culpar!

Ya os adelanto que creo que he tenido bastante suerte comparado con muchos compañeros españoles, así que quizás mi visión sea algo más optimista que la cruda realidad, pero intentaré ser realista.

Y si os gusta, os parece interesante, tenéis dudas concretas, etc… decídmelo por Twitter o en los comentarios del post y haré más posts al respecto. Y si no es así, pues no habrá muchos más posts como este :)

El idioma: fundamental

Tuve la gran suerte de que mis padres me llevaron al Instituto Americano de Barcelona desde los 5 años. En aquel momento me parecía un coñazo, era los sábados por la mañana y yo prefería jugar. Jamás he podido agradecerles lo suficiente el montón de dinero que se gastaron en que supiera hablar algo de inglés.

Para que os hagáis una idea de mi nivel antes de venir, y compararlo con el que podáis tener, os diré que en su día en COU (muchos ya no sabéis qué era eso :)) me saqué el 1st Certificate con una A y allá por 2002 me saqué el Advanced con una B. Desde entonces, he intentado leer comics y ver películas y series en V.O. subtitulada. También por suerte, en el mundillo Internet es bastante frecuente tener compañeros de otros países y siempre practicas algo más de inglés que en otros trabajos, aunque como sabéis, no demasiado.

Debo decir que la verdad es que en Londres en especial la gente es bastante tolerante con los acentos (diablos, hasta hay gente que le parece interesante / sexy, aunque los franceses nos ganan en eso) y más o menos te puedes hacer entender y conseguir alimento sin demasiado esfuerzo (en la mayoría de bares hay mínimo un español atendiendo). Pero el problema suele ser entender sus acentos, sobretodo si son de naciones anglo-parlantes. Y es que entender a un escocés, a un neozelandés o el “precioso” acento Cockney es toda una odisea por más que hayamos estudiado años y años.

El proceso suele ser el siguiente: 2-3 entrevistas por Skype (salvo que estés por aquí de viaje y puedas arreglarlo para ir) y siempre hay una entrevista final presencial. Personalmente, me sigue costando horrores entender a la gente por teléfono / Skype comparado con el cara a cara, así que sumadle complejidad a todo esto.

Por tanto, si no te ves capaz de tener una conversación fluida, no solo técnicamente sino en general, te recomendaría que hicieras un intensivo de inglés orientado a hacer entrevistas o tendrás MUY complicado conseguir trabajo, por muy bueno que seas. Y es que aparte de ser bueno técnicamente, se valora también que encajes con el equipo y sobretodo que te puedas comunicar. Lo que ellos llaman “to be fluent”.

Venid con trabajo

Londres es una ciudad muy cara y es bastante complicado conseguir alojamiento decente sin un contrato de trabajo. Bueno, es complicado de todas maneras, pero sin contrato más :).

Mucha gente, especialmente chavales jóvenes de otros sectores profesionales sin oportunidades en España vienen engañados pensando que encontrar trabajo es súper fácil. Se cogen sus 5mil euros de ahorros y piensan “mal me irá si en 3 meses no encuentro nada”. Y bueno, muchas veces no encuentran nada de lo suyo y acaban trabajando en hostelería con horarios muy duros y el salario mínimo. Y normalmente, los ahorros han volado. Y entonces, entran en la rueda de que viven al día, están agotados y dejan de buscar trabajo de su sector. No solo eso, sino que tampoco aprendes inglés con un trabajo así, lo cual limita tus posibilidades de encontrar lo que buscas.

Y los ingleses encantados, tienen gente muy currante, licenciada, preparada y contentos de tener el salario mínimo. Más de un inepto de los que tenemos en la clase política debería pasearse por los restaurantes y bares del centro de Londres y caérsele la cara de vergüenza de ver a toda una generación desperdiciada por culpa de su pésima gestión y del cortijo que tienen montado. Es un tema que me cabrea y me da muchísima pena. Vamos, se me caen los huevos al suelo cada vez que hablo con algún chaval con carrera, master y 4 idiomas sirviéndome sushi preparado.

En fin, basta de irme por las ramas. Por suerte, en nuestro sector hay mucho trabajo y los desarrolladores buenos van buscados, pero tampoco os penséis que el proceso es súper rápido ni que va a ser aterrizar y tener algo. Intentad por favor venir con algo desde allí, aunque no sea la mejor empresa del mundo. Una vez aquí todo es muchísimo más fácil.

Presupuesto

Como he dicho, Londres es muy caro. Por suerte, los sueldos son más altos (y el IRPF más bajo) que en España, pero antes de venir haced cálculos de qué sueldo necesitáis para el nivel de vida que queréis.

La vivienda es más o menos el doble que en Barcelona y vivir sin compartir te puede salir tranquilamente por 1600-2000 pounds, por supuesto todo relativo a la distancia al centro o a una parada de metro bien comunicada con el centro.

El transporte suele salir por unos 80-100 pounds al mes, de nuevo depende de las zonas.

En Inglaterra existe el NHS, que es “parecido” a la Seguridad Social. Hay historias para todo, desde gente que le han atendido súper bien a gente bastante descontenta. Por suerte, y toco madera, aún no he tenido que ir aún así que no os puedo decir. Las mutuas suelen ser bastante caras y ir por ejemplo al dentista también.

La comida, depende mucho de lo que os guste comer, podríamos decir que es un 20% más caro que en España en promedio.

Y el resto de cosas que puedas comprar, especialmente si son marcas, pues más o menos, incluso diría que algo más barato (debido al cambio euro vs pound que no está actualizado, sino de cuando el pound estaba más alto). Mención especial a las cosas frikis, los videojuegos y no entiendo por qué, los zapatos, que son entre un 30 y un 50% más baratos. El paraíso de las mujeres y los nerds como yo.

Tras hablarlo con bastante gente, supongo que dependerá de las pretensiones de cada uno, pero los 2000 primeros pounds son para vivir y a partir de ahí resto de gastos. Por supuesto, depende de muchísimos factores, pero es lo que suele decir la mayoría de gente que está por aquí.

¿La gente es mucho más buena?

Resumiendo mucho, diría que el nivel medio es similar a España, incluso diría que algo peor.

Lo que pasa es que hay muchos proyectos con dinero, mucha gente buena (simplemente porque hay mucha gente y es un tema estadístico) y en general, a la gente le suenan más cosas como las Best Practices, hacer APIs, testing, etc… que en España. Vamos que el que es bueno en España, aquí no desentona y el que es normalito allí, aquí va a encontrar un trabajo digno pero tampoco va a destacar. Y es que aquí compites con todo el mundo, y hay muchos países donde en vez de doblar cada maldita serie (y volverla a doblar al catalán por si acaso) la gente ve la tele en VO. Y eso hace que hablen MUCHO mejor que nosotros. Y eso siempre ayuda a encontrar una mejor posición.

Lo que sí que hay es un mucho mejor ecosistema, muchísimos meetups de cualquier tecnología que se os ocurra y por ejemplo, puedes ir a una PHP London y hablar con gente como Derick Rethans o Rasmus Lerdorf. Pero también te puedes encontrar con que el speaker sea yo!

Y al final, la mayoría de empresas grandes tienen sede aquí. Por tanto, puedes aspirar a trabajar en Facebook, Skype, etc… o almenos a conocer a sus ingenieros, cosa que en España es totalmente imposible. Y tener empresas de este tipo, hace que el nivel medio suba.

Forma de trabajar

Se trabaja diferente que en España y en general se tiene más respeto / consideración a los desarrolladores. Pero no os penséis que todo se hace mucho mejor que allí y que todo el mundo es buenísimo. Sencillamente, no es así.

Quizás la gente sea algo más fría e individualista a la hora de trabajar. Ojo, el pair programming y pedir code reviews es habitual y se habla a menudo, pero quizás la relación es algo menos personal. El hecho de que la mayoría hablemos en un idioma común que no es el materno contribuye a ello. Eso a mí me gusta pero seguro que hay mucha gente que discrepa.

El horario suele ser mejor que en España pero se trabaja bastante más intenso. Pocos cafelitos y menos de 1 hora para comer suele ser la norma. Y a mí me parece genial, pero quizás a mucha gente no. Cuestión de gustos. Y se intenta hacer Scrum o cuanto menos Agile de verdad. No estos apaños españoles que ni son Agile ni nada de nada.

Un tema que me gusta es que aquí no se eluden los problemas. La gente suele hablar claro y al grano (con respeto, sin duda) y si algo no se ha hecho bien, se dice y se intenta corregir. Parece un buen sistema, ¿verdad? En España la gente suele estar más callada y si a alguien le corriges se suele ofender. Aquí la gente se lo toma más constructiva o deportivamente. Y el resultado final suele ser mejor.

Y como ejemplo, me gustaría hablar del día que comuniqué que me iba de BrightTalk a Hailo tras solo 2 meses. Esperaba una reacción “Spanish style” y la verdad es que aunque debían estar cagándose en mí, aluciné de lo deportivamente que se lo tomaron. Me desearon la mejor de las suertes, entendieron que Hailo era una empresa mucho más acorde a lo que buscaba, se disculparon de que la cosa no hubiera cuajado, tomaron nota de todo mi feedback positivo y negativo y en general reconocieron muchos de sus (para mí) errores o cosas a mejorar. Y me agradecieron todo lo bueno que les aporté en el poco tiempo que estuve (con una lista y todo).

En todo esto, quizás he tenido suerte con este tema en los dos sitios que he estado. Pero así ha sido.

Intentadlo, pero solo si os apetece

Animo a todo el mundo a que intente dar el salto. Es súper enriquecedor no solo a nivel profesional sino a nivel personal. Pero no es un camino de rosas y te tiene que apetecer. Y si tienes pareja, le tiene que apetecer también. Si no lo veis claro, esperad a verlo claro del todo o descartad la idea ya que también hay momentos duros.

Lo dicho, vaya tostón, esperando vuestro feedback y comentarios al respecto! Pensad que todo esto es mi visión y seguramente está muy sesgada por las experiencias que he tenido, que seguramente han sido mejores que las de muchos compañeros ex-pats.

Posted in Miscellaneous | 11 Comments

Symfony2 versus Go: Round 1 – Hello world (static pages)

In my new job at Hailo we are introducing Go as the main language in the new architecture and because of that I have started playing with it. Besides that, there has been a lot of comments and opinions in both the Symfony2 and the PHP community regarding the TechEmpower framework benchmarks where Symfony2 appears at the bottom of the list for most of the tests.

Needless to say, PHP is and will always be slower than a compiled new-generation language. If it was faster… something would be absolutely wrong… but is this speed difference valuable? Most people will talk about the amount of servers you could save… and this is absolutely true. However, engineers able to develop applications in languages as Go or Scala are definitely more expensive and scarce so this is a cost and a risk to be taken into account as well.

Apart from that, comparing Symfony2 with Go is an absolute unfair and somehow even stupid comparison. Symfony2 is a full-stack PHP framework and because of that, it runs inside an existing web server as a module (being Apache, Nginx/PHP-FPM, etc) while with Go, we create a web-server within the code. So, it is comparing apples with bananas, but still, people like benchmarks, so there we go.

My whole idea for these series is to be able to somehow benchmark the difference if we decide to switch part of the application from PHP to Go (for instance, some slow API, some heavy calculation endpoint, etc…) and one of the easiest ways to do it without changing a lot of things is to use Apache mod_proxy extension to redirect some HTTP calls to a different port where Go would be listening. Of course, in a production environment, this would be done in some HTTP Load Balancer on top of our application, that might be Apache, Nginx, or other available options.

In our experiment, we will end up with these 2 urls: http://localhost/hello-php and http://localhost/hello-go. There will be Apache serving both but for the second one we will proxy the Request to another port where Go is listening. And this can be easily done with these lines in our VirtualHost configuration:

    ProxyPreserveHost on
    ProxyPass /hello-go http://localhost:8080/hello

And to build a simple hello world in Go, that listens on port 8080:

package main 
 
import (
    "net/http"
    "fmt"
)
 
func hello(w http.ResponseWriter, r *http.Request) {
      w.Header().Set("Content-Type", "text/html")
      fmt.Fprint(w, "Hello world, from Go!")
}  
 
func main() {
    http.HandleFunc("/hello", hello)
    http.ListenAndServe(":8080", nil)
}

And a Hello world in Symfony2 is something like this:

<?php
 
namespace Ricardclau\SymfonyVsGoBundle\Controller;
 
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;
 
class DefaultController extends Controller
{
    /**
     * @Route("/hello-php")
     */
    public function indexAction()
    {
        return new Response('Hello world, from PHP!');
    }
}

And if we use Apache Benchmark tool to benchmark the difference vs both calls we will get that our Symfony2 application is able to serve about 230 req/s and our Go endpoint can serve about 6300 req/s!.

So, for this particular case, without databases and not heavy business logic, Go is about 30 times faster than Symfony2. Pretty amazing, isn´t it? Let´s switch to Go? Well, let´s think about it a little bit.

If we were in a production environment, with a heavy traffic website, would we be serving static pages with PHP? Absolutely not! We would put Varnish or some other reverse proxy cache layer in front of our application! So, this difference is absolutely useless in real world applications! Of course, if you are confident with Go, you can develop your website entirely in Go and save some CPU cycles (and perhaps, even the Varnish setup) but again, if you are a CEO or the average Joe CTO who need to hire developers it is more likely that you can get 20 engineers with proper skills in PHP / Apache / Varnish than in Go.

To me, in this first experiment, the conclusion would be that for this case, switching to faster languages in absolutely worthless… but, what do you think about these numbers? In the following chapter of the series we will compare both stacks with database “select” queries and applications with intensive writing POST HTTP requests, so stay tuned for more crazy and perhaps stupid benchmarks!

Posted in PHP, Symfony2 | 4 Comments

APC Settings: stat and shm_size

Most of you already know that APC is really important to boost PHP performance. It will probably be replaced in the next months / years by Zend Optimizer+ but meanwhile it is important to know how to properly tweak this amazing PHP extension.

If we have a look at http://php.net/manual/en/apc.configuration.php we will see in the first couple of lines that both stat and shm_size are the most important directives but most people seem to not know about them, and this is why I am writing this post. Yes, most sysadmins don’t even know that these settings exist and the big difference you can make playing with them.

shm_size: This is about how much memory will be reserved for APC. Please take into account that this memory is occupied both by your userland variables and by the opcode cache. So, the more PHP files your application has, the more memory you need. Thanks God, well thanks Rasmus, there is a PHP script to inspect how much memory we are actually using. You can grab it at http://svn.php.net/viewvc/pecl/apc/trunk/apc.php?view=markup. And of course, in modern big PHP applications, with lots of libraries, dependencies, frameworks, etc.. it should be set at least at 64M and probably at 128M. Just inspect it in your production servers and you will find the most appropiate value.

stat: This setting is a really cool one. By default, every time we require a file in PHP, if it is stored in APC, it looks at the filesystem stat to see if the file has changed to load a new version in memory. Of course, this is really inefficient and it is much better to set apc.stat to Off. This way you can literally rm your application folder and all files cached in APC will still work! Of course, this also helps doing deploys even in big traffic moments. The only drawback is that you need to wipe APC (via Apache reload or similar) after every deploy so that the new code actually is installed. But the benefits are far more interesting that this minor drawback! And I honestly hope you are no longer editing remote files with Vim to quick fix Friday afternoon bugs :)

So, quite a short post, but I think it is worth it, provided there are already quite a bunch of companies where I had to fix this!

Posted in PHP | 2 Comments