ElePHPant Santa

During the last weeks we’ve read a lot about the community around the language PHP. And it seems to have influenced a lot of people.

And usually all the ideas about the community evolve around abstract ideas like learning or encouragement. Usually it’s all about non-monetary things.

But sometimes that’s not enough. And in those times the bonds of the community are strong enough to collect money to make things possible for fellow PHP-Coders that otherwise would not work. Whether that’s collecting money to bring a community member to the community or to collect money for the bereaved of a community member. People that can and want to, give a small amount. And these small amounts from a community add up. And make things possible.

And it’s one thing to reach out to the community to tell good stories. But it’s a completely different thing to reach out in bad times. To reach out and ask for help. But exactly that is it, what makes up a great community. That people dare to reach out in bad times and ask for help.

Yesterday I’ve seen this tweet by Cal Evans.

Go, follow the link and have a read.

Let’s stand together and make this christmas an unforgetable one not only for a kid but also for its parents. Because we can!

The story behind our open source efforts

Chances are that you’ve never heard of my company Spatie. We specialize in creating Laravel applications for our clients. Our team is rather small: we consist of only 6 developers and one manager. On first glance we are just a web agency like there are so many others. But there’s one thing that sets our company apart: we have an open source first policy. We try to create and contribute to open source as much as possible.

Currently we have around 170 open source repositories on GitHub. Our packages have been downloaded nearly 8 million times. They are being downloaded 800 000 times each month. Git awards is a site that ranks GitHub organisations based on the amount of stars their repos have. This past year we managed to take the #3 spot on Git Awards’ worldwide PHP developers list. And yeah, I know that the amount of stars is not an important metric, but it’s still a nice achievement for a smallish team.

This all did not happen overnight. Read on to learn the story behind our open source efforts.

The first package

When I got started to work for Spatie, somewhere around 2007, I dared to write my own framework. The projects I was working on at that time were very small. Submitting a simple form was the most advanced thing these sites should do.

After a few years our projects got a bit more advanced. I realised that writing and maintaining my own framework wasn’t going to cut it anymore. I heard about this fancy thing called Zend Framework 1 and starting using that.

Let’s skip ahead a few more years. In 2012 and 2013 I felt that the PHP ecosystem was pretty stale and I considered switching to Ruby and the Rails framework. But then I bumped into Laravel 4.0. I was immediately impressed by the expressive syntax and the big focus on developer happiness. I used it for a couple of projects and the more I learned about it, the more I loved using it.

At that time a guy called Jeffrey Way started his next project Laracasts: a video tutorial site dedicated to Laravel. Realising that his videos could speed up my learning process immensely I immediately bought a lifetime subscription.

On the 4th of March in 2014 Jeffrey published a video titled “Continuous Integration With Travis“. My mind was blown. Travis and the integration with GitHub looked so cool that I wanted to use it. A couple of months before he made the Travis video Jeffrey made a miniseries on package development. Those videos sparked the thought in my mind that I could create a package of my own.

In a project at the time we needed to automatically create screenshots of a website. With the things I learned in the Laracasts-videos I started working on my first package Browsershot. In essence it was just a simple wrapper around PhantomJS (the current version uses Headless Chrome and Puppeteer).

It was pretty exciting working in the open. I was thrilled every time the download counter got up and was incredibly happy that other people started writing about it.

More packages!

In the Zend Framework days I made used a custom-built application template, called Blender, to kickstart all client projects. It was a sort of mini-cms. Beside the traditional CMS-functions Blender could do a lot of cool things: pull in data from Analytics to show graphs about the usage of the site, handle uploaded files, subscribe users to a MailChimp list, …

To power new projects I needed a Laravel powered version of Blender and started creating it from scratch. I soon realised that some of the things I was porting to Laravel could be useful for other developers as well and decided to export these functionalities to external packages.

In quick succession packages like laravel-newsletter, laravel-medialibrary and laravel-analytics were made.

I started to enjoy package development more and more. The positive feedback that I got early on from package users was very encouraging. I always considered coding purely as work, but because it was so much fun creating code that others could use as well I started coding in my free time as well.

Besides working on packages I also polished the aformentioned application template called Blender and open sourced that too.

Currently every new package that we create gets born inside a client project. In almost every project we find some functionality that can be extracted to it’s own package.

The benefits of creating packages

There are many benefits of creating packages that makes time working on open source code well spent.

A lot can be learned while creating a package. Each package needs to be carefully crafted. It provides a clear and understandable syntax. Like Laravel, I want that all our packages put a great emphasis on developer hapiness. They should be easy to use. They should have great documentation. They should have clear tests. Thinking about how other people will use your code will make you a better developer.

The issues reported and the PRs submitted by the users of our packages provided another chance of learning. People can point to mistakes that are in our packages and can propose interesting new features that we didn’t think about.

Sometimes, as a package gains some traction, you get quality code for free. Our laravel-fractal package is a developer friendly wrapper around The League’s Fractal package. I coded up the basic functionality to I needed myself and tagged that 1.0.0. In the next weeks I almost daily got a pull request adding another great feature to the package. And now it supports almost everything League’s Fractal can do. I think 90% of the code of that package was written by the community.

Of course we’re also dogfooding ourselves. Our own packages get used on most projects. If we discover a bug in a package used in a project we can very quickly fix that and distribute that fix through the power of Composer to our other projects.

There are also commercial benefits. The past year we’ve landed some cool projects because of our open source work. In most cases these new clients were already using our stuff. Even though attracting clients isn’t the primary goal of our open source efforts, it sure is a nice side effect.

The positive feedback from package users also gave me enough confidence to start a blog and start speaking publicly. The past years I’ve spoken at several local users groups (and I’m co-organizing the one in my home town) and a lot of conferences world wide. The past few years I had the pleasure of giving talks in Washington, Amsterdam, Tokyo, New Delhi, New York, Istanbul and of course my hometown Antwerp. At all those occasions I got to meet a lot of awesome fellow developers, including Andreas, who runs this site. That all probably wouldn’t have happened if I stayed in my little bubble. Working on open source helped getting to connect to the community. That sounds a bit corny, but that doesn’t make it less true.

Making time to work on open source

People often ask if it isn’t very time-consuming to create packages. The truth is that it indeed takes a lot of time. Creating the code for the package itself, writing tests, writing documentation and getting the word out all takes a fair amount of time.

And that’s just the start. When a first stable release gets tagged the work is not over. Maintaining a package, responding to issues, reviewing PR’s takes a lot of time (and dedication) too. At the time of this writing we’ve responded to over 3 000 issues and reviewed more a lot of PRs.

We do long-term planning at Spatie, but we also have a weekly short-term planning meeting. When scheduling out to the coming week we only plan four days. So we have one work day we can be a bit flexible with. Do not imagine that day as like a fixed day, that time is mostly spread out in that week.

In that “fifth” day everybody in our company is allowed to work on open source stuff or their own projects (which, if possible, will be opensourced as well). For our employees this has a nice benifit that they can keep things interesting by switching between working on client projects and open sourcy stuff.

Personally I do enjoy working on packages in my free time as well. So a few times a week I spend some time in the evening to continue improving the released packages and create new stuff.

Meet the team

Because I blog, tweet and try to speak at conferences a lot I’ve become the public face of the company’s open source efforts. But you should know that I’m not doing it all by myself. I’ve got a great team behind me that does a lot of the work.

Since the start of Spatie I was the sole back-end developer at our company. That changed mid 2015 when Seb joined our team.He loves working on the more lower level PHP and JavaScript stuff. He’s the primary author of the regex, schema-org, phpunit-snapshot-assertions and many many more packages. And our dashboard and JavaScript code wouldn’t be as good if it weren’t for him. Be sure to bookmark his blog.

Last year we had a great intern, Alex, who has meanwhile joined our team. He’s helping out maintaining laravel-permission, which has gotten quite popular. He’s currenlty doing some kick-ass work on some non-released packages / projects that I can’t talk about yet.

A couple of months ago we hired Harish, our first remote employee. He’s helping out with issue across all our repos and laid the foundation of our dns package.

Brent, our latest hire, likes to focus on performance. His passion surely reflects on the opensource work he’s been doing. He created the laravel-binary-uuid package, he pushed me (in a friendly way) to add support for responsive images to our medialibrary. Currently he’s busy creating a very cool async package. He also has a cool blog.

And last but not least there’s Willem, who is the founder of Spatie. He’s responsible for the good looks of our dashboard, our dns lookup service, the various demo pages of our packages, the copy of our Patreon page and much much more.

I’m really happy that the every member of our team enjoys working on open source. Hopefully they all will keep working for Spatie in the foreseeable future. I do hope that if somebody would leave us for greener pastures, that they’ll bring the open source spirit to their new endeavours.

Top 10 of most popular packages

When taking amount of downloads into consideration these are our 10 most popular packages:

  1. laravel-backup
  2. laravel-fractal
  3. db-dumper
  4. laravel-permission
  5. pdf-to-image
  6. laravel-medialibrary
  7. fractalistic
  8. laravel-newsletter
  9. laravel-glide
  10. laravel-tail

Some of these packages, like db-dumper, probably get a big download boost because there are required by other packages.

Not so popular packages

There are some packages, that we ourselves use in every single project, that I expected to be more popular. I hope by mentioning them here they’ll get a little attention. If you decide to give the ones mentioned below a shot, I hope that you’ll enjoy using them as much as we do.

The first one in this category is laravel-uptime-monitor. This package can check the uptime of multiple sites. It will notify you when your site is down (and when it comes back up). You can also be notified a few days before an SSL certificate on one of your sites expires. Under the hood, the package leverages Laravel native notifications, so it’s easy to use Slack, Telegram or your preferred notification provider.

Secondly, there’s laravel-translatable. This one can make your Eloquent models hold translations. Unlike Dimitris Savvopoulos’ excellent translatable package, ours does not need separate translation tables to store translations. Our package stores the translations as json in a column of the table. It’s very easy to work with, there are no extra queries needed to fetch translations. We got the idea to store translations as json in a column from Mohamed Said (who now enjoys fame as Laravel employee #1 ?).

Even though you saw laravel-medialibrary int the top 10 above, I think this one deserves to be a few places higher. The package can associate all kind of media files (images, PDFs, …) with Eloquent models. It can generate thumbnails, and can store files on external filesystem and generate URLs to the files. It’s very easy to work with and it has excellent documentation. Our team is already hard at work in creating v7 which will add support for zipping assets on the fly, responsive images, client side components and much more.

How can you show appreciation for our efforts

Maybe I should have mentioned it before, but our packages are not entirely free. There’s a special license on them: Postcardware. If any of our stuff makes it into your production environment, we’d hight appreciate you sending us a postcard. This is our address:

Spatie bvba
Samberstraat 69D
2060 Antwerp
Belgium

Every week the postman delivers some postcards to us. For my team and I it’s nice to know that our stuff is being used all over the globe. We’ve gotten postcards from all continents. We even got one from Vanuatu which, for us, is litteraly on the other side of the globe. You can take a look at our postcard collection as well. They all are published on our website.

Another way you can show your appreciation is by becoming one of our patreons. Like mentioned on our Patreon page your donation will help us to dedicate even more time to maintain and create new open source code.

The future

We don’t have a fixed roadmap for new packages. It depends a bit on the client projects we’re handling. If there is something there that can be solved in a generic way, we’ll create a package.

There’s been a time when I though that, because we’d already solved a lot of common problems, the package output of our team was going to diminish a bit. But it’s quite the opposite. Almost every member of our team has some good package ideas.

One of the bigger things we’re working on now as a team is the aforementioned new upcoming version of the medialibrary. You can expect that one to drop somewhere Q1 2018.

In closing

Creating and working on open source packages continues to be a truly fun experience. On a technical level I’ve learned lots of things that I wouldn’t have learned when working solely on client projects. Like you’ve probably read between the lines, it also brings me great joy that my co-workers enjoy and appreciate the time given to work on our open source body of work.

I hope you’ve enjoyed the story behind our open source efforts. The big conclusion is that there are only winners in this story. If you are in a position in your company to advocate or to actively work on open source, I highly recommend you do so.

If you haven’t used our packages before, take a look at the list on our company website. Probably we’ve made some things that could be useful to you.

And last but not least I wish you happy holidays and a splendid 2018!

Believe in Better

“Try and leave this world a little better than you found it and when your turn comes to die, you can die happy in feeling that at any rate you have not wasted your time but have done your best.” – Lord Baden-Powell

Feature detection

Back in the day, when the browserwars were about certain programs created to Navigate or Explore The InterNet, we used to do things in something that was not yet called the frontend: we detected if a certain script was running against a certain type of browser. Scripts like this were extremely recognisable, as they were using certain booleans named isNS or isIE. Over the years, thanks to the progressive understanding of an ever-growing flock of developers, we changed this habit to the much better one of feature detection. These days were glorious, and the enlightenment was real. Little did we know that we still had to invent CSS 2, discover Zengarden, and to survive DHTML and XHTML.

In hindsight, it was in much the same way we evolved from mobile first to content first, by focusing not on the perceived, but on the actual job at hand. Personally, this kind of thinking is what I love these days about concepts like BDD or DDD – we try to actually understand the things the way they are, or at least get as close as possible to how they appear to be in the specific concepts we try to conquer, and we agree that most of the time we are only able to approximate. We challenge ourselves, and by being open and constructive, sharing knowledge and talking to each other, we improve our understanding, much like the allegory of the cave by Plato. Albeit a cube or a cilinder we see, whatever truth we understand, we let it be questioned, and we let those questions lead us to rethink everything we have ever known. We listen to people, not only to respond, but first and foremost to understand. They create opportunities for us, for free (as in beer), and they bring us challenges we might never have known without them. We embrace those, and thank these messengers, for they have brightened our days like only they could have. And we keep challenging our peers, only to be challenging ourselves.

This ever-evolving of our understanding, changing good practices for even better practices, is what seems to be driving most of the engineers and developers around me that I love to work with, and surely want to learn from. They don’t shy away from saying they don’t really understand something, but they share their trials and errors. They don’t see it as a failure, but they make an opportunity out of every single error they conceive through the years. They write long blogposts and prepare interesting talks, travel miles and miles to share their little knowledge and have an open conversation with anyone who does not like to have one. And lo and behold, we bring them our amazing comments, only to be getting even more interesting conversations ourselves.

It’s always on, this challenging of our thinking, our implementations and our code. Sometimes it even surprises us. Our community teaches us how to handle this at user groups and conferences around the world, and as we grow, we become better at it. We distance ourselves emotionally from the code we produce the moment we push it, and consider it legacy the moment we write it, because we know we can always improve. By doing so, becoming better developers is exactly what we keep doing – all day, every day. Even more, as what holds for our coding practices, also holds for our soft skills. We grow. If we talk about a new colleague, we don’t consider booleans like hasGenderX, gotEducationY, programsLanguageZ. We detect features, we test for skills. And if we miss them, we help them train. Because by training them, we train ourselves. And the PHP community keeps improving itself like that in a way many should envy us for. There’s still a lot of work to be done, but I sincerely believe we are able to do this. We should be!


It's the ability to fly that counts

Scary

Ah, the PHP community. That scary big herd of elephpants. I do not remember much from my first PHP conference. But I do remember the feeling: being lonely and scared. I was there to improve my skills, and somehow I had to meet new people, I had to be social. It was an interesting conference though, and afterwards I was – like so many – full of ideas and hope to bring better code to my glorious applications. But I only talked to a few people, and the one picture I shot those days was a picture from the second floor looking over the crowd. Peaceful. But per definition crowded. I still long for those moments alone every single conference, silent moments in which I can keep to myself. By now however, that’s mostly to be able to go back into the crowd recharged. I still consider talking to people some necessary evil, but it comes with such nice benefits.

It was scary to see how many of those people around me already knew each other. And for that reason alone the PHP community will always be terrifying to jump into. Especially if you are bad with names, terrible on smalltalk or if you keep thinking you have nothing to contribute technically. I felt completely lost the first time. After a few years however, I started realising that what made this so terrifying, was also the reason you have to love the PHPamily. They connect. They fight. Against each other, or side by side. They use PHP each and every day, and use it to build the web, that crazy unstoppable internet, and that premise bonds them. They create and find problems, solve them, share solutions and build on each others shoulders. They call each other giants for the smallest contributions, and they call each other names for the biggest ones. They love too much. And that’s your cue: you only have to love to be welcomed.

Challenge

So it’s very easy to see how each and every one of us is important in this big jellypudding. The PHP community needs you. Even the hastiest of blogposts or the most crazy solutions. They need the challenge, we need the challenge. We have to be able to reconsider every single rejected RFC, and to redesign our PSRs. Bring the opinions over from other communities, and share their knowledge with us. Those communities will have their own ways we might want to learn from. But also learn when to listen instead of talk. Stop making waves when the water needs to calm down. And once it calmed down, throw the next stone. To splash or to skim.

Help us to stay positive. One of the most powerful things one can do is to always stay positive. Feel the beat, care about the lifesign. Acknowledging that something is done a certain way as only one way of many, is only the beginning of a journey that will never end. Find ways to improve our sets of tools and techniques on how to solve the problems we encounter, and share them. Never ever settle down on what you think might be the best way to do something – it might be, on that day, in that certain situation, with your current knowledge and understanding, but tomorrow’s another day. Take contributions to your code and style seriously, and never dismiss even the seemingly most stupid kind of ideas. Find yourself challenged to argument, constructively, on your stance, and consider anyone you might encounter with other ideas than your own an enrichment for the cause of writing the best code you can ever write.

Go for the garbage, and expose it. But make sure to be part of the team that can clear the garbage too. Never settle for the arguments, but look for the solution. Improve the quality, lift the entire world. Write tests, talk to us, love. And if you don’t know where to start, improve your code with some of the tools at phpqa.io. Make sure to thank those project managers, and wish all of them happy holidays. Gleichfalls!

The value of the PHPamily while moving abroad

This year I took quite a big step. I quit my wonderful job in The Netherlands and moved to the UK. It was time to go for adventure and live a few years abroad. Including the hunt for a new job. I’ve now finished the hunt, but to be honest, I expected it would be different, not to say easier. Let me explain why.

Of course I used people in the PHPamily to start exploring options. From WeCamp in the Netherlands I knew people around Manchester and there I heard about the conference PHP North West. This helped me getting started to get in touch with companies.

‘Everyone is looking for developers’ you hear everywhere. And it is true, but not as in ‘walk in the company, drink a coffee (or, as being in UK, a tea), get an offer, sign it and start’. That would be too easy: it’s not the internet bubble time anymore. However, I maybe had expected something like that. It’s always those assumptions…

It might have to do with a different approach to meetups. In The Netherlands I am used to meetups hosted by companies: they sponsor the venue, put a few beers in the fridge and make sure there is some (fast)food. Within the (Dutch) community, people can get to know different companies that way. And if you like the company and are looking for a new job: you walk in, get a coffee, talk a bit, get an offer and end up with a desk (well, almost).

In my new community it is different. I could find a lot of meetups around Manchester, but they don’t seem to be hosted by companies (or is it my search skills?). When I asked about it, I was told that because of the aggressive recruiting the hosting companies would apply, the organisers did not like being hosted. And with that the attendees too, I can imagine. It’s such a pity this happens. From the organisers and attendees point of view, you can get a free venue, free or cheap drinks and food and see different locations. From the companies point of view, it costs next to nothing, but you get ‘exposure’ in the community and probably your own employees learn something from it. Just don’t ask all attendees every time if they want to sign up with you. If you’re ‘cool’, they come by themselves. And for me personally, it could have been an easy way to see a few companies from the inside, before going into the official processes of applying.

During the job hunting a lot of companies asked to do an assignment. Every company has its own, one more advanced than the other. However, nobody mentioned anything about my GitHub profile (yes, it is in my CV). It can be a very good proof of what you a capable of.
Not that my GitHub profile is very impressive, but there are some of my own projects and some contributions to other projects. It can give a potential new employer an idea about tech-stack, code style and knowledge: A few tests in a project already show that you know they exist.

Think about this when you are looking for people or joining an interview: do you look at their GitHub profile, do you ask questions about it? I think it can save both employer and applicant a lot of time. Time that can be invested in e.g. open source projects on GitHub.
I do acknowledge: the code on its own is worthless. You need to know a certain background on it. We all remember some kind of legacy code of which we think “What the hell was this developer thinking?”. I think in most cases it made perfectly sense at the time of writing. With the code on a platform like GitHub it works the same: there is a reasoning behind it. Talking about it as a potential new colleague, employee or manager can be very useful, being a starting point in an interview about why certain choices were made in the code.

I shouldn’t complain. Within 2 months I found a job (and it could have been faster, but having time for personal projects is also nice, you know).

Is the above just a rant about the problems I came across while living abroad and looking for a job in another culture? No. It’s a lesson. For me personally. And maybe for others who are thinking about doing the same (go, do it!).
It was also a confirmation that the community is worth a lot and I maybe should’ve used it better. I looked through the list of all contributors of 24 Days in December. I recognised a lot of names. Some I spoke, some I saw, some I attended talks of (Thanks for that!): but really ‘knowing’ them, is not the case. It might be a missed opportunity.

So that was this year. What’s next? I don’t know yet. Introducing a new tradition of having meetups at companies? It might be possible at my new employer, at least we have the space for it.

Hope to see you soon!

Comparison, Motivation, Specialization … Serendipity

My year in conferences:
First was WeCamp2017 (Harderwijk, The Netherlands) – August
Then came PHPNW17 (Manchester, UK) – September
And to finish the year SymfonyCon2017 (Clij-Napoca, Romania) – November

Comparison

It was the beginning of 2017, exactly on January 2, 2017. I was in my job place reading my morning feed on twitter and one tweet about WeCamp2016 grabbed my attention: 1 island, 25 programmers, 5 days, 6 coaches, pirates, beers, games… Everything just seemed like it would be crazy and a lot of fun, and that’s how it was, as well as enriching on a personal level.
After sending an email, adding and waiting on the announcement mailing list for early tickets, I was one of the first to buy my geeks holiday in De Kluut.
From WeCamp I wanted to know and compare if what I was doing in my job was the right thing to do, if there was a lot of difference between colleagues from other parts of the world, in short, if there was a better job. I ended up discovering that what I had to improve was not my abilities as a programmer but not being afraid to speak in public and less in English. And so it was, my coach Steven knew how to see that fear in me and trusted me (suggesting / forcing me) for the final presentation of the project. Despite the initial nerves, the presentation was perfect.

“Challenge fulfilled!”

WeCamp2017

Motivation

The last day at WeCamp, after the best presentation on WeCamp history hehe there was a raffle and I was one of the lucky ones who won an entry for the PHPNW Conference 2017 in Manchester. And there I was, with the support of my company.
It was a privilege to see Rasmus Lerdorf on the stage talking about PHP as well as some of the coaches who had been with us at WeCamp.
Nowadays, saying that you develop in PHP is not very common, it sounds old-fashioned. From this conference I discovered a motivation in the knowledge that this language was still relevant, that PHP7 is moving in the right direction and that there is a large community that continues to advance.

“Charged batteries and free spinners for my co-workers!!”

PHP North West Conference 2017

Specialization

Back to my work and my dear Symfony, I decided to rely again on my luck and fill out a form for a scholarship to SymfonyCon 2017. I was golden again, they answered my email to say that i had been one of the lucky ones, so I started proceedings to get back my company’s support with the flights and accommodation for the conference. The company did not hesitate and did everything in their power to ensure I would enjoy the experience.
Going into this conference I was already aware of how it works and how you should attend the talks that motivate you the most. With only luck (more or less) on my side, I left fully satisfied with the conference.
Symfony is my daily work tool so I did not learn anything that I had not seen in the blogs and tweets that I usually follow. Watching ‘the Symfony leader’ and all of his troop so close was an experience. From this experience I discovered that specialization really makes you more valuable on a professional level.

“And above all, I got my Symfony mug :)”

Symfony Mug from SymfonyCon2017

Final serendipity

You get a real taste of being in conferences, even more so when the tickets are free! Next year I do not know if there will be more, less or none of them or if I will end up being one of the speakers. Who knows? Why not?

“We all know something, we all have something to tell, we all have something to learn, we all have something to share.”

Thanks to Andreas for giving me a day inside this enriching idea.

My year in the PHP Community

This is a personal recap of my path to become part of the PHP community in 2017.

How did that happen?

It all started with my first acceptance at a real conference in September 2016. I spoke at Code.Talks in Hamburg, Germany about the history of a framework my colleagues and I developed over the last two years. The primary intent of that talk was to give an idea why we intentionally ignored current framework approaches and built one upon practical thinking about the problems we needed to solve. However, when I attended the first sessions of the conference I realized that most talks were technically very deep. I became uncertain about my talk. During the speaker dinner Raimo Radczewski got in touch with me because we both were supposed to give talks about the same topic – CQRS. His talk was scheduled directly before mine, so he was really kind and send all his attendees to my room, which was quite filled with about 350 people. The next day I read the feedbacks to my talk in the conference’s mobile app. My fear confirmed and most of the feedback was quite negative about missing technical depth and proof of statements I made. There was also positive feedback, so it wasn’t a complete miss. Even though I really enjoyed this conference I concluded that I am not yet ready to speak at big conferences, that I need to learn how to present technical details and how to express my ideas in a better way. In order to do so I signed a mission for myself.

The mission

I already was a regular speaker at our local PHP user group in Dresden (PHPUGDD) and like many user groups out there, we also lacked speakers and topics to fill a whole year with interesting meetups. I also found that the user groups were quite disconnected, so the idea grow to visit all PHP user groups in Germany to make connections, practice speaking in front of smaller, but equally critical audiences and to see what we may can improve in our local user group. As I already was in touch with Stephan Hochdörfer I thought the Frankfurt/Main PHP user group (PHPUGFFM) would be a good start for this journey. (And it was!)

I also was uncertain about the outcome of all this and if/how my company is supporting my private mission. So I decided to bear all the expenses myself, to do a review at the end of the year and then to decide what kind of deal I have to make with my company or myself.

Tackling more technical details by digging deeper when researching and creating talks was on the roadmap, too. I decided to reactivate my blog and started collecting ideas to write and speak about.

January 19th @ PHPUGFFM, DE

DRS 🛫 FRA. I had three hours to prepare my slides in the hotel room before Stephan picked me up for a short snack and took me to the meetup location. I was very busy the weeks before at work so I only had a lot of changes in mind that still needed to find their way into the slides. I intended to talk about the same framework as I did at Code.Talks, but with focus on the implementation. So I ended up adding a lot of code to it in a tiny hotel room in Frankfurt.
We entered the meetup location and I was warmly welcomed by Andreas Heigl and Sebastian Feldmann. I didn’t know at that time, but both will play a key role in my mission later on. Andreas, who is also organizing PHPUGFFM, gave a nice intro about the user group (the presumably oldest one in Germany) and started a short introduction round through all attendees. I was giving the last talk that evening and spoke for about an hour. Because I spoke about the details of code I wrote myself, I was very confident what I am talking about and had a good feeling when answering intense questions in the Q/A round. The evening ended up with some good discussions and a good sleep.

Fun fact: This meetup was also the first time that I met Marco Pivetta without knowing it was him. A couple of days later I saw this thread on Twitter and it took me a while to realize that it was one of my slides and that Marco was calling it “creative”. If you know Marco, it’s kind of a compliment. 🙂

FRA 🛬 DRS

March 14th @ PHPUG Dresden, DE

Stephan immediately returned the favour and flew over to our next meetup in Dresden. I am pretty sure he would have come regardless of my previous visit in Frankfurt, but I keep telling myself that his talk in Dresden was a payoff of my mission’s first milestone. 🙂

April 4th @ PHPUG Berlin, DE

Still thrilled by the past two meetup experiences I couldn’t wait to schedule my next milestone and got in touch with Christoph Lühr who is organizing the PHP user group in Berlin (BEPHPUG) and submitted a talk for their next meetup. Again I was talking about our framework with focus on implementation, but with revised slides. This user group only has three slots of 20-30 minutes and all talks must be given in english. So I needed to trim my 60 minutes talk down to 20 minutes and had to do it in english – for the first time ever. That really pushed me far out of my comfort zone. Even though I write and read a lot of english texts, speaking is a different thing. But I recalled my mission which included me getting out of my comfort zone – and told myself: Let’s do this!

DRS 🚘 BER. I was a bit early at the meetup location when one of the organizers asked me if I was speaking and wanted to check the projector. There was a very short user group and no host intro. I was first to speak this evening so I did my best to not overrun the 30 minutes talk slot and opened the Q/A round after 25 minutes. No questions. I ended my talk with “Thank you for listening.”. Half the audience stood up and started chatting with each other. I felt a bit like “Why am I doing this here?”. In the break I reached out to Frank Sons who is organizer of the PHP user group in Hamburg (PHPUGHH). He was accidentally in town for a client and helped out to fill the meetup slots. I took the chance to ask for a talk in Hamburg later this year. I also met Tomáš Votruba and Ondrej Machulda. Tomáš is one of the organizers of the PHP user group meetups in Prague, Czech Republic (Péhápkaři) and he was touring around PHP user groups as well.

BER 🚘 DRS. On my way home from Berlin I reflected this meetup with the strange feeling that most attendees were not really interested or engaged in having a social event among friends to learn something. They were like watching TV – to be entertained instead of being involved. The three other speakers got almost the same reactions. That was definitely not what I expected from a town like Berlin. On the other hand I was quite happy that I mastered my first english talk without bigger struggle. In fact I found it comfortable and more fluent to not switch between technical terms in English, German sentence structure and half-German-half-English (we say “denglisch”) words. From a German point of view English also offers to build shorter sentences to the point. That especially helps if your day-to-day vocabulary is a little bit rusty.

April 26th @ PHPUG Dresden, DE

Tomáš Votruba checked in and gave a talk about code quality tools at our local meetup. Another connection that paid off!
We also had Vladimir Reznichenko, author of the PhpStorm Plugin “PHP Inspections (EA Extended)” and Ondřej Mirtes, author of PHPStan, in the house. It was one of our meetups with the highest number of attendees.

PHP Developer Day 2017 – Kick off

April was also the month the PHP USERGROUP DRESDEN e.V. effectively started to organize the annual PHP Developer Day. Since we founded a legal club in 2016, we decided to lift this event as a community with no primary company in the background like there was in the previous two years. So we came together and made a plan, scheduled tasks, prepared speaker invitations and listed potential sponsors. Our main goal was to double the number of attendees and to create an event our speakers and our attendees will feel comfortable at and will recommend or visit again. I immediately had a lot of fun doing this and felt the big opportunity to move something, to do something useful inside the sphere of our local PHP community.

May 19th/20th/21st @ PHPkonf Istanbul, TK

In the first week of May I got an e-mail from Andreas Heigl telling me that a speaker canceled for PHPkonf in Istanbul and that they desperately needed someone who can talk about CQRS and Event Sourcing. Surprised I was heavily struggling with that offer for four reasons: First, I didn’t want to go to big conferences. Second, travelling to a foreign country always costs me quite an effort to do it. Third, the conference was on my wife’s birthday. And fourth, I was a bit afraid of the political situation during the elections in Turkey. Then I saw this line-up and immediately knew I would regret it, if I would not say “I’m in.”. So I did and literally two hours later Emir Karşıyakalı contacted me and handed me over a hotel and a flight booking. All my concerns were overwhelmed by the excitement and the challenge to bring up a talk about CQRS and Event Sourcing in just two weeks.

I took a week off of work to research and prepare my talk and slides.

DRS 🚘 TXL, TXL 🛫 IST. I was told that there will be a shuttle picking me up at the airport. No sign, no shuttle. I went outside the airport building to have a look if it is waiting outside. No sign, no shuttle. I went back in and realized that security checks are not located before you get to the gates, but straight at the entrance of the building. So unpacking all my equipment again, going through security check, back to the arrival exit. Right there I saw Andreas waiting as well. After texting Emir we were picked up some time later and got to the hotel in the center of the city. At check-in we met Juliette Reinders Folmer, Elena Kolevska and Nikita Popov who warmly welcomed us and we decided to have dinner together somewhere in the city. It was such a nice evening full of empathy, curiosity and awesome Turkish meal. I didn’t feel like a stranger even though only Andreas and I have met once before. (And needless to mention my imposter syndrome caused by one of the PHP 7 heroes (Nikita Popov) enjoying his meal right next to me.)

Rasmus Lerdorf joined us the next morning. He was giving the keynote to kick off the conference. Meeting two people that defined my work life for quite a time in two days is not bad, right? A couple of minutes before the keynote, Emir told Rasmus that there will be a simultaneous translation of the talks and we should speak slow to give the translator the chance to keep up. Rasmus immediately joined the circle of speakers in front of the main stage and gave some advice how to handle this situation. In the loveliest and most positive temporal meaning: This was a picture of daddy teaching his kids, that I will never forget.

My talk was one of the last slots, so I had the opportunity to see a bunch of very known speakers and good sessions before I entered the stage. Seeing others talking always calms me down, because you realize there is no such thing like a perfect presentation. There is always someone double-clicking the clicker, rushing too fast through slides, losing thread after an interruptive question or struggling to find the right words in a foreign language. You also get a good feeling for the audience. Are they engaged? How difficult are their questions and do they appreciate the effort put into the event, the topics and the sessions. So if you are new to speaking or plan to speak at a conference, try to get a slot after some other talks. It will reduce your nervousness. Even though I heavily suffer from imposter syndrome and inner flurry, telling myself we are all developers, coincidentally sitting in the same room to learn something new, helps me to slow down my mind and speech when I am up for speaking.

After the conference everyone (speakers and attendees) were invited to a diner in a restaurant nearby with a beautiful view over the bay of Istanbul. I was listening to first-job tales by Rasmus, Rafael and some others. Most of the time I was just listening, inhaling the spirit of that very evening. And I was glad that I jumped over my shadow and managed to take that opportunity.

On the next morning I originally planned to leave early to the airport to avoid stress by rushing through a foreign country and airport. Just to be sure I won’t miss my flight. There is one thing I really don’t like about travelling: Scheduled travelling. However, as I was waiting in the lobby of the hotel Emir rushed in and asked if I wanted to join the breakfast and sightseeing tour and promised we’ll be back in time to catch my flight. I tempted to say no, but again there was that feeling of future regret letting me say “OK.”. Andreas, Rob Allen and me, squeezed in Emir’s car, drove off to the asian side of Istanbul to have breakfast in a traditional tea house with a diversity and mass of Börek from another store nearby. Some more speakers joined us.
Turkish tea glasses have no handle and they are filled up to the edge with very hot tea. No one was able to drink it before it cooled down. As good developers we tried to improve the situation by pitching a better solution (handles) to the waiter. That funny moment expressed the spirit of the whole weekend.

IST 🛬 TXL, TXL 🚘 DRS.

May 31st @ Péhápkaři, Prague, CZ

Tomáš Votruba invited me to speak at their next meetup in Prague. A couple of days before I released a new version of one of my open source projects and decided to speak about its usage. Two of my fellow user group organizers joined and we had a great meetup and social in Prague. That was the second time the whole speaker exchange idea worked out pretty well.

June 8th @ PHPUG Dresden, DE

Sebastian Feldmann and I were on schedule for our next local meetup. Sebastian introduced us to his open source PHP backup utility (PHPBU) and he was great fun to watch speaking. After the meetup Sebastian and I were going same direction to the public transport and his hotel. I remember that we were chatting about technical stuff at the tram station for like hours before tiredness told us to go to sleep. Third strike for connecting to other user groups.

July 26th @ PHPUG Munich, DE

DRS 🛫 MUC. The main office of my company is located in Munich. Now and then I am travelling for work to Munich and because I was on my mission I sent a message to Mathias Burger if I can give a talk at the PHP user group in Munich and pitched my framework talk. He replied very quickly and confirmed me on the schedule. There was a very warm welcome and a comfortable atmosphere when I entered the meetup location. Everyone was supposed to put on a name sticker to simplify the social communication, a lot of food and drinks for free and a tough number of 70 attendees! Luckily Sebastian Feldmann – a familiar face – was there, too. Again I had the last slot of the evening and assumed the audience already got a bit tired because it was around 10:30pm when I started the presentation.

I opened the Q/A round after 45 minutes and I was blown away by about 20 raised-up hands all asking intense questions and giving a lot of positive feedback regarding my work. About one hour later I was able to grab me a drink. Now I was the one being tired.

As my brain was cooling down, Lars Röttig came over. He is one of Magento CE’s core developers and told me that they also try to apply CQRS within Magento as part of a huge refactoring and if I may can help out. I was flattered. We’re still in contact from time to time, but a real coding session didn’t happen yet – unfortunately. But it will eventually and I am looking forward to it. If you are in Munich and there is a meetup at the same time. Go there, I can totally recommend it!

MUC 🛬 DRS

August 22nd to 26th @ WeCamp, NL

Occasionally I read about something called “WeCamp” on Twitter, but never had the time to follow up on the links. When I met Juliette and Stefan Koopmanschap in Istanbul I learned that Stefan is running this “WeCamp” and that it is a 5 day event with tech people left on an island, building teams with a coach, working on “something” and having loads of fun. Now they got me and I decided to buy a ticket. If I’m not mistaken, it was the first ticket sold this year, because I remember refreshing the website every 10 seconds to see the order button becoming active. 🙂

DRS 🚘 NL, NL 🚤 De Kluut

Dropped off on the island, after a short introduction to everyone, we moved into our tippis. A bit later the team compositions and their coaches were announced. Stefan explained the intention of the whole event. Juliette was my coach and together with Marieke Bednarczyk, Thijs Hulshof and Michael Harris we started a brain storming session right away. This special place made it very easy to feel comfortable and productive, even though most of us didn’t know each other. Anyway, I don’t want to spoiler to much about this event, you need to be there. But let me say a few more words about the take-aways.

All of the coaches were very well known people from the PHP community and I was very happy to meet them all in person, to get the chance to talk to each of them during these 5 days. On a regular conference you probably don’t get the opportunity to find a quiet spot and have a face-to-face chat with Michelangelo van Dam, Chris Hartjes, Jeroen van der Gulik, Jeremy Coates, Steven de Vries and of course Juliette, when you barely know them.

After a while I also realized that this event is not about tech, not about computer skills – no it was about people. How do I behave in a foreign team? How do I solve conflicts or different points of view about something? How do we agree on a mission together? What do we want to learn and how do we accomplish that? How can I serve the team best? What speed do we go? These were some of the questions I came across on that island. The welcoming atmosphere, the community spirit and the absence of real world problems gave me space to think about it – without the need for a quick answer. And that was an experience that changed me – in a very positive way. It changed how I think about my job and the definition of the term “team”.

The moment I won’t forget about WeCamp is: Juliette, Michelangelo and me, sitting in the main tippi around midnight, a crackling campfire in the back, playing cards on a low table, Juliette served some scotch, Michelangelo offered a cigar and we were sharing stories. I am very thankful to all who made this event possible!

Before we left the island, Stefan called all the teams to the main tent and started a lottery for Enfys and a ticket for the PHP North West conference (PHPNW) in Manchester, UK. I was lucky and won the latter, happy to see a lot of the WeCamp people again in just a couple of weeks.

De Kluut 🚤 NL, NL 🚘 DRS

September 22nd @ PHP Developer Day Dresden, DE

The last 4 weeks before our own little conference were really stressful, but in a positive way. We were very late with all the print media, still had to answer a lot of sponsorship e-mails and we were checking our first ticket sale ever like every 5 minutes. But we managed to finish all tasks the day before the day. The last ticket was sold at the entrance and we were able to double the number of attendees compared to the previous year. So we achieved our main goal: Reaching more people!

I was giving the keynote with the main intent to provide some initial information about our user group, the speakers and to point out the importance of diversity and community spirit. But I must admit that I was not prepared well and forgot to talk about some important points. I actually don’t know if it was too much excitement or just fatigue or both.

Anyway, the whole day was a huge success for everyone who was there. The vast majority of feedback was absolutely positive, by speakers, attendees, sponsors and the organization team. Our speakers did an amazing job and provided fun and intense material. The day past way to fast for my taste.

On the next day we met most of the speakers for a brunch in the old town of Dresden. We went for a short sightseeing tour and talked about projects, tech and travelling. Later Marco and I were going to his hotel and ordered some drinks in the lobby. We were discussing Event Sourcing implementation approaches and async PHP. And I wished we could have those chats more often, because it is mind blowing to brainstorm with Marco.

On Sunday, two days after the conference, I was completely wasted and unable to get off my couch. But there was a big satisfaction in me and I already started to imagine next year’s PHP Developer Day.

September 29th – October 1st @ PHP North West, Manchester, UK

DRS 🛫 FRA, FRA 🛫 MAN. Next stop: Manchester!
I was a bit late with my flight booking and had to spend more money than I liked. Still, I didn’t have a hotel yet. I knew some of the WeCamp people would be in Manchester, so I asked for a recommendation in the WeCamp slack. Michael, who was on my WeCamp team, responded quickly and offered me to stay at his flat during the conference. This is how community works! I hope one day I can return the favour.

Stephan and I checked in at the conference centre (we were on the same flight), Michelangelo welcomed us, sitting alone at the front desk waiting for his workshop to begin. After a while we also met Derick Rethans who took us on a detour through the city to a nice pub where we had some “interesting” beer flavours. At Friday evening there supposed to be a Hackaton and I was eager to attend it. That evening was the first time I realized that this event is all about socializing. Almost no one was actually hacking. There was a bar area and a courtyard with heaters and pavilions where attendees and speakers spent time to talk and relax. This was such a pleasant atmosphere. I was very happy to see Juliette again, who joined us after her workshop.

There was an unconf track on Saturday that I submitted a talk for. I was lucky and was scheduled for 3pm. Juliette’s talk preceded mine, so I had the chance to see her speaking for the first time. I love her passion for community driven projects!

Looking back I didn’t attend so many sessions, but I do remember a lot of very good discussions with new people, like Dan Ackroyd author of the PHP Imagick extension and Mark Baker, the man behind the Diversity ElePHPant initiative that I was backing at kickstarter. I needed to shake his hand and say “Thank you for all this. It is so very important!”. He is such a polite and inspiring person carrying a huge version of Enfys (literally and metaphorically).

During the closing keynote by Jeremy Coats and his organizer team a sudden twist turned the whole audience into a big ball of emotions. He announced that after 10 years of PHP North West they need a break and that this was the last PHPNW, for now. I was totally feeling his conflict – having an awesome event but all the hard, exhausting work to get there. And everyone else was, too. I was so glad in that moment that I had the chance to enjoy this conference and salute to Jeremy and the organizers.

After the conference I attended my first WurstCon! 🌭

MAN 🛫 MUC, MUC 🛫 DRS.

October 7th not @ SoCraTesDay Berlin, DE

My good friend Raimo, who I first met at the Code.Talks in Hamburg 2016 and had lunch with in April 2017, organized the first edition of the SoCraTes day in Berlin and even though it is not a PHP community event, I was eager to attend. I even had a ticket already. But when the day came, after heavy travelling to Manchester and in behalf of my job the weeks before, I was completely exhausted and my body conked out. Heartbroken I had to cancel this event. 🙁

October 28th @ unkonf Mannheim, DE

DRS 🚘 Mannheim. It was half past 10pm when I arrived at the hotel. Stephan told me that Michelangelo stayed at the same hotel, so I asked him, if he was still up for a coffee. Dumb question. This fellow is always up for a coffee. Far after midnight we found us still chatting in the hotel bar, drinking coffee.

The unkonf is kind of a bar camp with a session planning at the beginning. But before Stephan started the voting and to distribute rooms, Michelangelo gave his keynote about “Community and me”. He told us his very personal story of how he faced the ups and downs in his youth and the turning point where he decided to start a new life. I had goosebumps all the time during his talk. It was a hammer to the face, a reminder of how privileged we are to be part of a tech culture, having all these possibilities to choose our own paths.

The unkonf talks were amazingly diverse in topics and of high quality. All speakers delivered great content in a very relaxing atmosphere. The day was over very quickly. Andreas spontaneously offered a GPG signing session after all sessions were over to build a circle of trust. It was fun to see a crowd of geeks staring at their laptops and waiting for key servers to catch up with synchronization.

We convinced Stephan to join us for dinner in the city. Even though he was tired and started to get sick, he was in. He drove us back to the hotel, where he gave a private #Disco talk to Michelangelo and me. He really was pulling through that day!

Mannheim 🚘 DRS.

November 2nd – 5th @ PHP Central Europe, PL

DRS 🚘 Warsaw. Dariusz Grzesista and his team organized a sightseeing day in Warsaw one day before the conference. An impressive city with a lot of history. Our last stop that day was a city museum. There I met Alain Schlesser for the first time and we had great discussions about coding and architecture.

Warsaw 🚘 Rawa Mazowiecka.
The venue was a huge spa resort in the middle of nowhere. One really could have get lost in the endless hallways inside the hotel, if there weren’t number signs on the walls.

Again I was able to meet Andreas Heigl, who gave his first keynote ever in front of a thousand people, Michelangelo van Dam and Derick Rethans. I was also lucky to meet Mariusz Gil, Michael Bodnarchuk, Arnout Boks, Ivo Lukač, Mihail Irintchev, Nikola Poša and many more. We had a constant spot at the bar where we met during the conference days.

Andreas’ keynote was about how to get the most out of a tech conference and was really inspiring and intended to help especially people who attend a conference for the first time or are too shy to join a discussion with speakers or other attendees. Remember the pacman rule?!

PHP CE is a conference that starts travelling through Europe in the next years. I really like that idea. Our user group and PHP CE started a PHPartnership just before PHP Developer Day and Dariusz proposed to let the PHP CE conference happen in Dresden in 2019 which would be a big deal and great opportunity for our local community and the city. Anyway, we still have a way to go from 180 attendees to over a thousand in less than two years. But I want to make that happen!

Rawa Mazowiecka 🚘 DRS.

November 21st @ PHPUGMS, DE

DRS 🚘 Münster. Benjamin Cremer invited me to speak in Münster. Usually they only have one talk per meetup, but since I had a long way over to Münster, they allowed me to give two talks. This user group is special: They are about 20-25 people who attend the meetups regularly, but those attendees do understand how to ask the hell out of you.

It was nice to have the last remote event this year in such a small and charming round. At the end of the meetup we talked about an extension to my presented piece of software in detail. So when I got home I started working on it and it was done in three days. Community driven development!

Münster 🚘 DRS.

November 24th @ PHPUGDD, DE

Our second last meetup in 2017 took place in my company’s office. I was giving the user group and host intro. We had a first-time speaker with Frank Jogeleit talking about API Platform. He did a great job. Because we were lacking a lightning talk I decided to shortly present my experience at PHP CE in Poland, talked about our goals for the next PHP Developer Day in 2018 and ended with a call for volunteers. Two people stood up and offered their help. That was amazing!

I was also happy to see new faces in the audience and our crowd becoming more diverse – a goal we were working on for the past year and will keep working on in the future.

December 19th @ PHPUGDD, DE

Looking back to my initial mission statement, I kind of failed being focused on the target. For example I didn’t manage to visit the user group in Hamburg, which is definitely on top of my list for next year. I also failed to resist speaking at conferences. But hey, circumstances lead to chances. You have to take it or leave it, right? I am very happy to end my community year in my hometown with a local user group meetup giving a short talk about the news in PHP 7.2. It makes me looking forward to an amazing year 2018 among old and new PHPriends.

Summing it up

I had an incredible amazing year and made a whole bunch of new friends which I know will have positive influence to my life and career in the long term! I learned a lot – personally and technically – and had loads of fun.

Being on the road that often of course has implications at home and at work. I learned that a planning meeting (sounds weird, I know) with my wife once a week helps to avoid misunderstandings and stressful moments when suddenly a reminder pops up in the calendar. I also created the habit to take one more day off after a conference before I get back to work. That helps to gain new energy, get some sleep and decide what topics/technologies that I have seen I like to follow up on and maybe introduce to the company.

Like I said at the beginning, I not only wanted to recap my last year but also sum up my expenses and make conclusions on how to deal with a community life in the future. So I did the math:

🚘 I drove ca. 5.800 km by car to attend community events.
🛬 I flew ca. 7.700 km by airplane to get to conferences and meetups.
💸 I spent ca. 7.400 € for community activities (not all listed here).
🇪🇺 I travelled to 5 different countries.
🏖 I spent 90% of my vacation days in community activity.
👫 I gained two new colleagues out of community connections.
🌈 I gave away 7 Enfys (Diversity ElePHPants) to great people I met.
🍹 I drank massively less alcohol and more water during the whole year. (A very good thing!)
🍔 I ate way more fast food than usual. (Not a good thing!)
📝 I managed to write 6 blog posts of which 2 are already published (this one not included).
🐣 I increased the number of Twitter accounts I actively manage (with others) from 1 to 4.

Now I have a way better idea of what I can or have to put on my company’s table for negotiations and I’m curious about the outcome. I also have a better feeling for planning with my family, thinks that work or not work out.

After all, I am very grateful for the countless take-aways I was able to collect on this trip, unable to put them all in words here. So let me say “Thank you PHP community!”.

Special thanks goes to

  • My wife and kid, for allowing me to follow my mission in the past year. I know it wasn’t always easy.
  • Andreas Heigl, who constantly and subtly is attracting me out of my comfort zone. (Like with this post.) You are my wizard!
  • Stephan Hochdörfer, who is always dancing the extra mile to make things actually happen.
  • Juliette Reinders Folmer, for starting a special friendship from minute one, being so nice and keeping me on track regarding my visions.
  • Michelangelo van Dam, who is the best partner in crèma you can have, whatever may come. Thank you for sharing your thoughts, spirit and knowledge in the way you do.
  • Sebastian Feldmann, for being around wherever I need you!
  • Michael Harris, who helped me out with a stay in his Manchester flat during PHPNW and who is such a nice person.
  • Marieke Bednarczyk, for calming me down once in a while with her great blog posts about mindfulness.
  • Mark Baker, for helping out when it comes to increase diversity and bringing Enfys to life.
  • My PHP USERGROUP DRESDEN fellows, for supporting every stupid idea I come up with.
  • All the names of great people I forgot to mention but I was lucky to meet on my journey.

Thank you!

Make a Difference

Believe it or not, I never wanted to be a software developer. Although I was introduced to personal computers at a young age, I did not enjoy writing software. At the age of eleven, I wrote my first applications in BASIC. While many of my peers were excited to be able to draw pixels on the screen or interact with users via text prompts, I did not enjoy it one bit. If you ever had to write an application in BASIC, you may have felt the same way. My feelings regarding software development aside, I was able to leverage this early introduction into an advantage in the ensuing computer revolution. I held a number of technical jobs such as Network Administrator and Database Administrator and eventually, despite my best efforts to avoid it, I became a software developer. I used some soon to be dead and even some already dead programming languages. Just as before, I didn’t enjoy the experience and did everything possible to maneuver out of development and into another role.

My attitude towards software development change dramatically ten years ago. As a last resort, I took a PHP development job. To my great fortune, I worked with an amazing and talented group of developers that challenged me a pushed me to become a great developer. The path was not a simple, quick, or easy one. Beyond the concepts like Object Oriented Programming, I needed an understanding basic tools like version control, debugging, and testing. Like many others that are attracted to the low entry barrier of PHP, I was a noob hackers are trying to build applications with PHP. Without the prodding and guidance of those coworkers and many other individuals, I would never have become the developer I am today.

Regardless of our skill level when we began using PHP, all of us were helped along the way by numerous community members. We’ve found the answer to some great dilemma from a community resource like a community site, blog, podcast, tutorial, IRC chat room, user group, or mentor. We all rely on the same resources in one way or another to perform our day to day jobs and develop our skill set. Within the past few years, I have learned that the community we rely on isn’t some magical place that appears out of the ether to answer our questions and write blogs. It is a community of passionate developers putting their hearts and souls into helping us be better developers. It’s also a community you can join. Regardless of your experience or skill level, you have something to offer. There is no shortage of need for contributors to the PHP community. Here are a few helpful hints to help start you on your journey:

Answer Questions

Everyone has a question at one time or another. There are enough questions out there that you are likely to find one to answer. There are a few different avenues for you to start answering developmer questions. Try and find one that feels comfortable for you.

Mailing Lists

PHP has a number of official mailing lists for developers to ask questions. This webpage has a list of them: http://php.net/mailing-lists.php. As with all mailing lists, you may need to adjust your settings to not be inundated with a barrage of email. If you are old school and prefer NNTP over email for lists, you’re in luck.There is a news server and site for that: news.php.net.

IRC

There is no official IRC channel for PHP. However, there are many channels dedicated to PHP. #php is the general PHP room to get started. There are also rooms dedicated to more specific topics. Here’s the official PHP Help page which touches on the topic: php.net/support.php#irc

Community Sites

Sites like Quora and Stack Overflow are filled with questions ranging from beginner to expert. Find a question you can answer and submit. It’s just that easy. Quora tends to be less critical of submissions from new submitters. If you aren’t prepared for random criticism of your answers, you may want to start with Quora to get started.

User Groups

User groups are fantastic ways to meet fellow developers and learn about topics related to development. It’s also a fantastic way to help other developers. As a founder of a user group, I know that most organizers are open to any help you can offer. That is especially true for presentations. User group organizers are always looking for presenters. You may not feel qualified to present to a group. That’s just not the case. Being an expert isn’t even required. Give a presentation based on “Here’s what I learned trying to figure out ??? for the first time.” We all need to keep up on emerging frameworks, libraries, and methodologies. Presenting on what you found trying to use one of them is really helpful.

If you need help finding a user group in your community, there’s a website for that: php.ug. If you can’t find a user group in your community on the site, you may be able to find one on Meetup, a site that many user groups utilize. If there is no PHP group in your community, you may be able to find kindred spirits in other developer user groups. Starting a PHP user group in your own community is something else you may want to consider. There is a page with resources for anyone starting or running a user group here: wiki.php.net/usergroups.

Be A Mentor

Being a mentor is something anyone can do regardless of skill level. There is always someone more noob than you. Find a more junior developer at work and help them build their skills. Become involved in local or internet based mentor programs. Local schools and community groups are always looking for mentors in technical fields to help student and disadvantaged populations. There are also peer to peer mentoring platforms in the Internet where you can lend a hand. Each method has a different time commitment associated with it. Find one that fits into your schedule.

Make a Difference

The greatest advantage we have as PHP developers is our community. My experience is that the PHP community is welcoming, energetic, and whole lot of fun. Do yourself a favor and take the next step in your evolution as a software developer. Become a contributor! Make a difference!

Kid friendly PHP

If I were to sit down and count how many meetups and conferences I missed in my life after I became a mother, I would probably end up crying. When those little guys are born we put all our passions on hold and they become the whole world to us. After a year or two when we snap out of it and start craving our life back we face the fact that it is gone. Forever. And we unlocked a higher, more difficult level of life.

You’re supposed to do everything you did before and more, but now with your permanent plus one. Go shopping, go to the toilet, take a shower. And it’s ok, you get used to those things after a while. But what happens when you want to go to a meetup? At a conference out of town or out of your country? What happens then? Well, the lucky ones can leave the kid with the co-parent if they have one and they’re free in those days, or maybe with the grandparents, if they live nearby. But what about single parents with no close family around?

Guys, seriously. How can we talk about diversity, inclusiveness and women in tech if even the biggest and richest conferences don’t provide daycare? What am I supposed to do with my 100%-dependent-on-me child when I want to invest in my career at a conference? There are simple solutions out there, but we need the good will to do it.

A few tips for conference organisers

The space

Every event, especially longer events should have a kids’ corner. If the venue itself doesn’t provide it (which it should), the organisers should set it up. If it’s a profitable event, they can invest a little bit of money and buy some toys they can re-use every year. If it’s not they can start a media campaign for toys donation.

The accidents insurance

This is a very small amount and most parents will be happy to pay it.

The food

Provide free water and a microwave for heating up baby food. Toddlers are usually fussy eaters, but there are some universal constants like pizza for example that almost any toddler would be happy with. It would be nice to have more variety, vegan and vegetarian options, but I think that most parents would be happy to bring food and snacks themselves if you provide the rest. Just make sure you notify them about the options so they can plan ahead.
Maybe one day, when kids’ areas are the norm we will come back to this point and talk about it in more details, but let’s take it slowly, one problem at a time.

The nannies

If the event can afford it – it should definitely include daycare in the ticket price for all parents who’ll come with their kids. That would be the noble thing to do. If not they could try and get a sponsor for it. If that doesn’t work either, then get one professional caretaker, calculate the costs and split it between the parents (who would need to register the kid up front, obviously). Since one caretaker is not enough, they could go ahead and give free conference tickets to a few computer science students who would spend a few hours helping with the kids and would then have the rest of the conference free, to see the talks they’re interested in or just go, network and talk to developers about the “real world out there”.

You see, everybody wins in this scenario: the conference – cause it gets a good name and more audience, the parents – cause they get to attend the conference, the kids – cause they get to socialise and hang out with other kids, the students/volunteers – cause they get to go to the conference for free, the hired nanny – cause she gets work… It sounds perfect, right? So why isn’t it done more? This article by Tara Tiger Brown was written in 2012 and it’s sad to see how little has changed since.

I created this repo where everyone can add resources and tips to make life easier for conference organisers and indirectly for us, parents.

Kids’ corners should be the norm already; banks, hospitals, restaurants… basically everywhere you need to spend more than 15 minutes. Let’s make some noise and make this happen! We are a community and we should take care of each other. This time around let’s send some love to all the hardworking, loving parents out there and help make their lives easier, at least a little bit 🙂 Tweet with the hashtag #kidscornerseverywhere to your favourite conference, your local event, offer to help… Heck, maybe even volunteer to be Elsa, IronMen or Santa for an hour. Why not? And who knows, you might end up having a lot more fun than on the event 😉

Big thanks to Anna Filina for the review and ideas.

Do Different

In internet years and in the programming industry, many might consider me a dinosaur. I’m in my mid-forties, and have been programming professionally for almost 20 years. In fact, I’ve been working for the same company for over twelve years; who does that?

Here’s the secret: I pace myself.

9 to 5 is enough

I see a lot of blog posts from people much younger than myself about the horrible expectations of startup culture, and, really, technology firms in general. Expectations that you put in 60 to 80 hours a week, because if you’re not fully committed to the organization’s success, you’re a dead weight. They all talk about the toll on mental health.

To be honest, when I started at Zend, I felt the same pressure, but, interestingly, it was pressure I exerted on myself. There was always so much work to do, and, with Zend Framework in its nascent stages, I found the only way I could juggle both my actual work duties (which, at the time, were actually around the Zend websites!) and my OSS contributions and collaboration on ZF was to put in extra time. I’d work my regular hours, and then work an hour or two after the family went to bed, and while we had downtime on the weekends.

And once I was transitioned to the Zend Framework team, it was just habit.

Eventually, Zeev became my boss, and he put a stop to it. “You’re of no use if you’re burnt out.” He basically forbade me to put in more than 40 hours a week.

My life turned around. But why?

It turns out that if you do not treat time as a commodity, you squander it. I quickly discovered that limiting my hours forced me to prioritize what I was doing, so that I could do it in the time I had alotted. There was no more “this will only take an hour or two; I’ll finish after dinner.” Instead it became, “Can I finish this today? No? Put it on tomorrow’s list.”

And with that focus, I found that I was doing the tasks that were necessary, and that I actually ended up doing more in less time.

Sure, it’s great to be passionate about your work. But passion isn’t focus, and without focus, you won’t ship anything.

What about learning?

The technology industry is terribly unforgiving. You’re expected to not only know what each new shiny emerging technology is, but have opinions about it. Constant learning is valued.

Interestingly, my father has always told me, “The day I stop learning is when it’s time to die.” I’ve always lived by that mantra.

So, how do you pull off constant learning in your normal work week?

You carve out time from your day and dedicate it to learning. Even 30 minutes a day is enough to dive into something. Remember what I said about constraints? If you put constraints on your learning time, you tend to be more focused in what you want to accomplish, and spend your time more wisely.

Thirty minutes may not seem like a lot. But in that amount of time, I was able to build my first Node middleware, my first web component, my first React component, a script to mine data from GitHub, a chatbot in coffeescript. Thirty minutes is enough time to decide whether you want to continue with a technology, or move on.

What about after work?

Without work consuming my free time, I found I suddenly had a lot of it. What was I supposed to do if I wasn’t working?

I’ve brewed beer off and on for over 20 years; with more free time, I started brewing again. I took the time to better understand the craft, and to document how I brew, as well as examine the results so I can improve, and brew beer I actually want to drink.

When I was in my twenties, I used a bicycle as my primary mode of transportation. I missed it, so I acquired a new bike, and started biking local trails regularly, when the weather permitted.

Also in my twenties, I trained in both T’ai Chi Chuan and Aikido; these past few years, I discovered I missed moving my body as I sat at my desk day in and day out. Around 18 months ago, I started training in Hapkido, which taught me new ways to move.

We were finally able to buy a house six years ago, and with a house comes both maintenance as well as a desire to make it your own. This past summer, we tore out our aging and rotting patio deck and built a new one. Ourselves. And passed the city building inspection!

Consistently, I come back to work each week refreshed and ready to tackle my projects. Consistently, I find I have new ideas and approaches to try as I start the day.

Those extracurricular projects force your brain to work in different ways, and lead you to solutions you would not have come to with your eyes glued to your monitor.

Fin

I love what I do for a living. Professional problem solving? I’m in! Working with people from around the world? Hold my coffee! Helping people help other people with technology I maintain? Sublime!

But, believe it or not, folks, 9 to 5 is not the sign of a lazy or unenthusiastic developer. It may be a sign of somebody who knows that the value of their craft is how they work within constraints, including the most unforgiving constraint of all: time.

What will you do different this year?

My Journey Into The PHP Community

Today I’m taking a moment to reflect on my experience so far as a software developer and the communities that helped me develop myself in many ways. To admit from the start, this was not the journey I planned to take on, yet it never ceases to amaze me how drastically it changed me and my life overall.

I was walking on an unrelated path as a classical ballet dancer and a pianist mainly practising Bach and Rachmaninoff every morning and night, getting ready for the end of year recitals and somehow also managing to score top notes on all my classes. Sadly due to an accident I suddenly had to give up on my career as a ballet dancer after 12 years. At that time my mother, who was in the first team to install computers into banks and hotels in our home town took me with her while she was working. I spent a lot of time in her workplace where I enjoyed reading her BASIC and COBOL notes and playing with her collection of games on floppy disks.

Eventually I accepted the fact that I had to switch careers and aspired to explore science in all its branches that interested me. Maths, physics and computer science always amazed me so I started building a collection of papers on certain theories and researches in different areas of physics, collected computer science books and wrote my very first working code, an image gallery that served my collection of satellite images and other awesome pieces of astrophotography from a local folder.

Later on, I won a scholarship to study software engineering at a local university. We started with learning Scheme and C, yet the pace of the programme was extremely slow. In the same year I had to leave the school and I had to continue studying auto-didactically and I kind of had to forge my own path at that point.

When you are working on something on your own, or you are on a journey towards a goal, you are prone to making a lot of mistakes. You might fear facing problems that you won’t be able to solve by yourself. You may think that you will never reach to the point you aim for.

The period of time when I decided to take on programming as a profession and picked up a new language to learn, crossed the time I discovered Stack Overflow and specially The PHP Room a.k.a Room-11. (o/) The people in that chat room were (and always are) working on their own projects and after some time I started to get involved in projects of some of the members.

One of these projects was a chatbot they were writing called Jeeves. I sent my first PR to that project and then many others followed, which was a scary thing to do for me, because I had never publicly shared my code nor had I interacted with people on GitHub before and I was afraid of making mistakes. But many regulars in the chat room helped me and talked me through the process and basically just “forced” me at some point to send in the PR saying that it is okay to make mistakes.

After that I started feeling more confident. I kept hanging around in there and followed up with the developments of php-src and amphp libraries. I also got to contribute to different projects all the while learning from the people around me. Not only from people working on projects written in PHP, but also from people actually working on the PHP source code (php-src). I even ended up submitting two PRs to php-src!

Thanks a ton to Chris, Pieter, Gordon, Niklas, Bob, Aaron, Paul, Joe, Nikita and all other R11 regulars for everything they made me learn over the past few years :-)

This year I also went to my first PHP conference (PHPKonf). When I arrived at the conference I really didn’t know what to expect or what was expected from me. But while attending the conference I met Juliette, I got to take her quiz with familiar faces and over the speakers dinner I enjoyed getting to know people from the community having nice discussions ranging from different cultures to the past and future of PHP. Learning from the talks aside, I had the chance to enjoy exploring notable parts of the city along with Andreas, Rob, Patrik, Holger, Rafael, Tiscilla, Emir and Rasmus and eventually came to realization that sharing is an indulging part of a community. Thanks to everyone who made this event such a great experience.

After the conference I kept in touch with Juliette and connected with @Mark_Baker, who recently invited me to PHP Benelux on a PHPDiversity scholarship. (Thank you both!) I hope I can make it there :-)

I’m very grateful to be connected with all members of the PHP community I met so far that I would otherwise never get to know.

To all those who take part in such communities either online or at events, who share the knowledge and experience and who contribute, I wish you all a happy and productive year!