A season of giving… and accepting

About giving…

Traditionally, at least in Western cultures, December is a month of holidays and celebration. Often these festivities involve gifts, whether they are put under the Christmas tree by a white bearded man and his reindeers, delivered in a burlap sack by another white bearded man from Spain or exchanged at a family dinner. But as we hopefully have learned, not all those gifts have to be large, expensive or material to make an impact. Sometimes the most joy can be found in sharing moments with family and loved ones, having dinner together, bringing up old memories and creating new ones. All it requires is accepting their presence and sharing yours.

Also in our PHP and open source communities we put a lot of emphasis on giving or giving back. In December there is 24 Pull Requests, there’s Hacktoberfest in October, and there are hackathons and code sprints throughout the year. This is not without a reason: a lot of open source projects deal with a lack of capacity or (financial) resources for maintenance. However, a focus on giving might also be a barrier for people to enter the ecosystem. For newcomers, the expectation to give back can be paralyzing: What projects do I need to help on? Should I open-source parts of my own code? Do I need to (be willing to) speak at meetups to attend one?

… and accepting what’s given

Maybe it’s better to focus on making full use of what the community has to offer first. Once you accept the things others gave to the community, giving back will often follow naturally.

For example, the next time you need a logger, event dispatcher, dependency injection container or router, please don’t create your own. There are numerous implementations of these available on Packagist. Unless you really have a revolutionary approach, the world probably doesn’t need another one, whether closed or open source. Overcoming NIH syndrome helps the open source community focus efforts on the few implementations that really matter. For a healthy ecosystem, maintenance effort and usage have to be in balance. A well-maintained package that nobody uses is just as bad as a popular package that suffers from a lack of contributions.

Once you start using more components that are already out there, opportunities for giving back will arise spontaneously. If you run into a problem, report an issue. Or sharpen the details on a bug report sent by someone else. Maybe you can try to fix the problem and contribute it as a pull request. If that does not succeed, you might be able to help the maintainer by writing a failing test to reproduce the problem. Perhaps, based on your own needs, you develop a new feature that you can contribute back. Also remember that not all contributions have to be code. If you find something unclear or unexpected when using a package, that might be an excellent opportunity for a documentation improvement. And if some open source project ends up saving you a lot of time, why not thank the author by sending them a postcard or ‘thank you’ tweet, or supporting their work on Patreon?

I experienced this effect myself last week. Just using a package for a few hours led to two opportunities for pull requests that, albeit small, will hopefully save others some time.

Beyond code

But the community has more to offer that you can take advantage of than just code. Go visit a meeting of a PHP User Group near you! Just by being there and talking to fellow developers you give back your knowledge, experience and ideas. Maybe you will get inspired to give a talk yourself sometime, or help out with organizing a next edition. Meet new people at conferences. Read blog posts, listen to podcasts, and realize that you too have experiences that are worth writing and speaking about. All it requires is accepting the presence of others (whether online or offline) and sharing yours.

Fin

Yes, the community needs more involvement and contributions. But first and foremost, don’t forget to accept all the great resources people in the community are already giving away to you. If you do so, the opportunities to give something back will come naturally. And remember: no contribution or gift is ever too small to make an impact.

May you give and receive lots of joy this December!

The Community Got Me To Where I am Today

Once upon a time, I was called a hobbit at a conference and it served as my introduction to the greater PHP community.

Since then, it’s been a whirlwind of ups, downs, short jokes, open source contributions, conference talks and more. However, let’s go back to the beginning and see how the community helped me get to where I am today. I will skip briefly to the ending, not so much a TL;DR but more of a “wow” factor. It’s to hopefully drive the point of my story home quickly. The point is this: if I ever get married the attendance list will look like a who’s who of the PHP community.

I started programming at the age of 26. Before that, I was a bartender as well as a guitar instructor. A lot of people don’t know I have a genetic condition which requires me to take steroids daily to stay alive, it’s great /s. Neither of my two jobs gave me health insurance (America!) so I looked for an avenue to get insurance and out of bartending. I read a post on Reddit from a programmer about being able to work from home, make good money and I didn’t need a college degree. I tried college a few times and neither time it worked out for me. A google search led me to Codecademy which in turn pointed me to Treehouse. I did the HTML, CSS and JS tracks (tracks back then weren’t what they are today). Immediately following the JS track, the very next video started down PHP so we could build a cart. PHP was something I had never heard of before this video. My mother at one point thought it was PCP, a hallucinogenic. I quickly learned the power of the include, require, dynamic date values and thought I was cool. Who knew the cool shit I would learn next.

It wasn’t until I was accepted into an internship program that I saw the power of the PHP community. The office we were at was about 45 minutes north of Atlanta but we trekked down on a cold night for AtlantaPHP. It was there I met Chris Spruck, the start of one awesome friendship which continues to this day. As I kept returning to AtlantaPHP, I kept meeting more people. I had the honor of meeting Ben Ramsey (who I thought was Ben Edmunds… a story for that wedding I suppose), Phil Sturgeon (who to this day we talk APIs and bicycles), Davey Shafik (a great advocate for diversity and mental health), Cal Evans (who hasn’t he had a hand in guiding?), and more. These people would be instrumental one way or another. Through this small community, I tapped into the larger community with Twitter. I followed everyone I could even if I had no business following them. I was in awe, it was like a kid in the candy shop. Brilliant people talking about concepts I’d never heard before. Things like HATEOAS, DI, CI, CD, HTTP, and 123s! Through this community, I got my first real job offer and led me to the next set of brilliant people, the Germans: Arne Blankets, Stefan Priebsch, and Sebastian Bergmann. It was through these guys I learned the power of PHP, the brilliance of OOP and I learned how to write a unit test.

At this point, you must be wondering where the hobbit thing comes to play so here it is. With this big kid job, I got a big kid conference ticket to Sunshine PHP. My first conference and I was unashamedly star struck. Through Twitter and IRC, I had a loose idea of some people I’d see there from Cal to Joe Ferguson to Phil and a few others. But one person I met who would ultimately change my life in more than one way was Jacques Woodcock. After a weekend with him at Sunshine, and through Twitter; he saw something in me and offered me a job to work with him and Elizabeth Smith, who is brilliant and I am not overstating that. While that only lasted 4 months, it opened more doors for me to speak at Nashville PHP (my future home), as well as Upstate PHP, Nomad PHP Lightning Talks, and more. But before most of that happened, I was called a hobbit in less than fun terms by Samantha Quinones. It shocked me and kind of popped my excitement. At the urging or some, a blog post later appeared detailing what was an incredible conference experience minus this one thing. Within an hour tweets and emails came in from people I didn’t even know offering support. People went out of their way to make me feel welcome. Samantha herself immediately reached out and apologized. Samantha and I even joke about it today, along with the majority of the community. But it was that incident that really showed me the PHP community cares.

In my short time in the community, we’ve had plenty of GoFundMe’s for elephpants and developers who need some help in between jobs or when tragedy strikes. When one of us loses a job we are quick to tweet out recommendations and words of support so that they are never without work for long. We respond to calls to action like when two conference organizers bit off more than they could chew and Cal put up the signal and helped them raise the money they needed. One of those organizers was me, by the way. This community has taken me across the country for conferences and helped me build meaningful relationships with people I would have never had met if I wasn’t writing code. This community was there when I moved to Nashville and I was immediately welcomed at NashvillePHP. However, one of the best memories I have of the PHP community being incredible isn’t at a PHP conference, but it was going up to NYC for 24 hours to see Ben Edmunds and his fiancé for their wedding party. What started as a day of drinking and bantering almost turned into Phil Sturgeon and I getting into a fight with a hot dog cart vendor and finished with me sleeping on Ben’s couch. These are the friendships I could never replace and the memories I wouldn’t be able to create without this community. It’s because of these friendships and connections I was able to coordinate getting David Stanley and Ben Edmunds to Nashville for my birthday and putting on a panel discussion for our user group that included Nicolas Grekas, Fabien Potencier, Ryan Weaver (as shoeless as you’d expect), Jacques Woodcock, Rachel Weaver and more.

I can’t possibly list all the friendships, acts of kindness and more that have happened during my short (hehe) time in the PHP Community, but I can tell you this: I am forever grateful and indebted to the people in this community who took a chance on me and forever grateful for the amazing friendships I have today. These people are the ones who see my tweets about anxiety or depression and reach out, celebrate successes together and make life better. The ones who will offer me help when I need it, and ask for my help even though I never know what I’m actually supposed to do.

As I look back at where I today, working on a team of people way more brilliant than I am (people like Jonathan H. Wage, Pablo Godel, Dan Revel, Jonathon Suggs, Cody Covey and so many more. I definitely married up in this case). I wouldn’t be on this team if it wasn’t for the community and the doors people opened for me. And because of people opening those doors, it’s my turn and my mission to open as many doors as I can for newer developers.

This community is so much more than framework flamewars (Laravel vs Symfony anyone? We all know the real answer is Kohana), debating if braces belong on the next line or not (they do), whether you should use Vim vs eMacs (PHPStorm, duh), or what conference is the best (Southeast PHP was pretty baller). Its identity for people, it’s a community that may or may not exist IRL for some but it absolutely exists online. Whether you know it or not, being a part of the community helps people far and way in ways. Some people live in remote areas where they may be the only programmer and our online community gives them belonging. People who were lost may have found happiness and solace in our community. It’s a resource for others to get that jump start in life they need. It’s friendship at the most basic level.

Attend your local user group and introduce yourself to someone new, just like someone did when you were new. If you don’t have a user group, roll up those sleeves and get one started. All you need is one more person. If you can’t for time reasons, or life is in the way, join NomadPHP, it’s a wonderful resource. Join us on Twitter and use the hashtag #phpc, introduce yourself and be prepared for something awesome.

We can’t wait to meet you.

Reflections on 12 Years in the PHP Community

I’m going to take some time to reflect on my introduction to the PHP community and how that’s affected my life.

I started programming and shipped my first web site when I was around 11 years old. I started with QBasic, then HTML, eventually making my way to Perl. I was homeschooled, so was able to begin working at 15 years old at a local computer repair / networking company near my hometown in Alabama. I started down the path of working in IT for awhile, with various small programming projects on the side. My first corporate job was at a robotic automotive manufacturing plant, I was hired to do IT support there but eventually saw the need for reporting and data visualization of the production processes. This evolved into my first job as a software developer and was also the first time I wrote a line of PHP code. Back in the PHP 4 days.

Another robotics engineer at the company hosted an NFL site/forum that was written in PHP so he introduced me to it there. We eventually built an app for reporting the plant’s various data using PHP, MySQL, Python, VB, C#, and lots and lots of duct tape. Thinking back on that app, it was some of the worst code I’ve ever written; SQL queries directly in views, no idea about APIs, security issues at every turn, but it solved a huge business need and was one of the most exciting projects I’ve ever worked on since it combined the digital and physical worlds in a very tangible way.

What really stuck with me most from this experience was the accesibility and flexibilty of PHP. I gained experience with many different languages, learned much better design patterns and best practices, but the experience of being able to create something so useful, so easily, with PHP really left an impression on me and it became my language of choice for web development.

I became involved with CodeIgniter a few years later. I ended up moving to Jacksonville, Florida for a web development job that was mostly in PHP and Javascript. Which was a pretty transformative experience for this Alabama boy. Moving to a new city sparked my love for travel and it led to my entry to the PHP community.

It was there that I started using CodeIgniter for several of our projects, which lead to getting involved on the CodeIgniter forums, #phpc, meetups, and eventually open source development. I still remember one of the first meetups I went to, Cal Evans was in Jacksonville promoting his employer at the time, Adobe, and trying to convince us all to start developing in Flex. I wonder how many people’s first exposure to the PHP community was from Cal Evans. That’s a damn scary thought…

I spoke at my first conference a few years later. Which was directly tied to my open source development and the friends I made there. I met Phil Sturgeon on the CodeIgniter forums, we started collaborating on open source software together, and built a friendship. Phil was organizing a conference in New York City and invited me to come speak. It’s really amazing how something as small as a forum post can evolve in to speaking at a conference and a long term friendship. Actually now that I think about it, I met two of my co-founders on that same forum and it turned in to us building multiple companies together over the years.

This community is one of the most inviting development communities I’ve ever been a part of and it has greatly improved my life. It started with a horribly written piece of duct tape software, a move, a forum, and then a meetup. Here I am now, 12 years in to using PHP, and it has given me the opportunity to do so many things. I’ve moved around the United States. I’ve met some of my best friends at conferences, on forums, and via open source projects. I’ve had the chance to speak at conferences around the world. I’ve met some of the smartest and kindest people I know. Been exposed to so many cultures and ideas. Worked on some really awesome projects with amazing people. Everyday I’m thankful for the opportunities presented and how much the community we’ve all built is a part of that.

In closing I want to implore you to do what you can to strengthen the community and add a bit of yourself to it. That might take the form of going out of your way to answer the newbie questions on forums, IRC, or slacks. It might take the form of giving talks at meetups and conference. Or it could be something as simple as going out of your way to show someone something new that helps them level up just a bit.

I hope that in another 12 years I’ve helped a few other people have the same great experience with you all as I have. This is our community, let’s appreciate it and contribute to it’s growth. As the year wraps up, use it as a good excuse to reflect back on your experience as well. I hope you had a great year.

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!