Two weeks ago, there was WordCamp Europe. It took place in Belgrade, Serbia, and for me it was the fifteenth WordCamp in total, my second WordCamp Europe, and my third time giving a workshop. This time, I had the honor to do that with my friends Carl Alexander and Giuseppe Mazzapica.

Wednesday: Arrival Day

Belgrade has, so far, been my longest travel for a WordCamp. As usual, I went there one day before the first official day.


My alarm clock went off at 5:30 AM. I took the train to Dusseldorf, from there by plane to Vienna, with the next and last stop being Belgrade. It was not without a 40 minutes delay, though, because the plane was late from a previous flight.

Cloud landscape as seen from plane
On top of all the cloud services. 😀

At the airport I was awaited by a taxi driver. Together with a fellow WordCamper from Germany, I boarded the taxi, and the driver brought us, one after the other, to our desired destinations.

Kafeterija and Manufaktura

I met several of my colleagues at co(ffee|-working) shop called Kafeterija. We had some iced coffee, juice, and diverse discussions about software, tooling and other nerdy things.

Later that afternoon, we crossed the street and were already at the Manufaktura, our place for dinner and evening fun. The food (and beer) was really, really good, however, getting a bottle of wine and some empty glasses was not really that easy a task. Just the bottle would have been easy, but, you know, that’s not how you want to drink wine. When not alone. 😀 Don’t make me explain why that was the case. It is … complicated.

Human Made at Manufaktura, Belgrade, Serbia
Human Made at Manufaktura, Belgrade, Serbia. Photo by K. Adam White.

There also was a band playing, which was nice, but loud. Too loud to easily talk, so we moved outside, where we stayed for quite a while.

Thursday: Contributor Day

As more and more the case, WordCamp Europe 2018 started with its Contributor Day. This is where attendees contribute to WordPress as a whole, meaning not only the software, but all other parts of the project and its ecosystem, for example, translations, security, coding standards, and marketing.

Opening Remarks

Remkus de Vries kicked of Contributor Day with a brief introductory presentation, and some stats.

After that, the leads of all contributing teams had a minute or two on stage to share their plans for the day.

WordCamp Europe 2018 Contributor Day team leads
Contributor Day team leads. Photo by Florian Ziegler on Flickr.


I sat down at the Coding Standards table, led by Juliette Reinders Folmer. After a quick round of introductions, we took on various Trac tickets, GitHub issues, or pieces of PHP_CodeSniffer output, and started working on them.

I planned to review some existing patches for the WordPress Coding Standards. I say “planned”, because, in the end, I didn’t really do anything at all. Almost. Actually. Arrrhhh…

Seems there were some Wi-Fi issues. While I had been able to update my local development copy of WordPress (in about 5 minutes or so :D), simply navigating on GitHub was a pain. And it got worse over time.

When it took me more than ten minutes to load up an issue (with some comments), I called it quits for the day.


Since I had a pretty bad headache for almost all morning, I stepped out to go for a walk. Well, when I was about 10 minutes away from the venue, it started raining like hell. So I got back, hiding under a bridge here and there.

I drank enough, ate enough, had fresh air, walked around. But nothing seemed to help me get rid off the headache. So I headed back to my Airbnb, and slept for a bit. That helped!


Back at the Contributor Day venue, I did some networking, and also sat down to go over and finalize the workshop slides for next day. I did that next to Lara Schenck, whom I got to know the evening before, and who was going over the slides of her own workshop.

Once we were done for the time being, we hopped on a taxi to go to the volunteer social; and it followed the best and most hilarious conversation of all WCEU 2018…

Me: Do you have Wi-Fi?

Driver: Yes, sure! Password is … one, two, three, four, five, six, seven, eight.

Lara: Whoah, that is a great password…!? 😀

Volunteer Social

The volunteer social, in some building’s 25th floor, was fun. Meeting lots of people I had not seen before that day, eating awesome food, free drinks—which, for me, were one beer and a couple soft drinks.

I left after about two hours already, because I needed to get—and actually also catch up on—some sleep, and I still had some final finishing touches to do on the workshop slides for early next day.

Friday: WordCamp Europe Day 1

So! WordCamp was about to start. In a quite unusual way for me, though, as you will soon learn…

An Introduction to Unit Testing (for WordPress)

Together with Carl Alexander and Giuseppe Mazzapica, I had the honor to kickstart one of the first content formats of WordCamp Europe 2018: our three-hours workshop about unit testing (for WordPress).

The structure of the workshop was as follows. We started with an introductory presentation that took about 25 minutes off our time, because we wanted all attendees to have some basic common knowledge about testing in general, and unit testing in particular. After that, we started the actual hands-on time, which was somewhat like a game with four levels. Attendees could choose between the PHP codebase of a sample plugin, and a JavaScript codebase integrating two simple Gutenberg blocks.

In level one, people had to run the test runner, understand why the tests we gave them were failing, and fix the production code (not the test). So, people should get to know the test runner itself, the output it produces, learn how to read tests, and use them to debug and eventually fix actual bugs in the code we wrote.

Levels two through four then were about writing tests. Starting simple, we provided almost all of the individual test methods, and the attendees had to fill in some values, or create assertions and expectations. Next step was the introduction of both function and object mocks. The final stage would have been to take a test case full of empty test methods, and apply all the things learned so far. We did not get to that stage (although we could have), because we thought it wiser to give people more time to complete level three.

Overall, I think the workshop was pretty good. We sure had fun hosting it, and the (little) feedback we got was throughout positive.

Unit testing workshop intro presentation
Unit testing workshop intro presentation. Photo by Dragan Miljkovic on Flickr.

As always: the slides are available online. Also, we pushed a new branch with all solutions to all our exercises, both PHP and JavaScript! 🙂

And last but not least, to stick to the promise we made during the workshop, I tweeted out some posts about (unit) testing. If you have more awesome references, please tell us.

Thank you, Gary Jones and Alain Schlesser, for having been awesome teaching assistants!


After three hours of unit tests, we went for a quick lunch, and a couple minutes closed-eyes time. Then we already met to talk through the script for the upcoming design patterns workshop, where Gary, Giuseppe and I signed up as teaching assistants.

Dependency Injection and Design Patterns in Real Life

Alain Schlesser and David Mosterd hosted another three-hours workshop. The topic was design patterns, and the application of dependency injection that comes with a lot of these patterns.

All in all, the workshop was quite advanced, but as Alain and David seem to have communicated that well enough, they did not run into any bigger problems and/or unmet (false) expectations.

I did not have to do much as a teaching assistant, and the code that I saw was quite good, given that most of the people, presumably, did not have much experience with design patterns, and maybe even object-oriented programming in general.

Human Made Team Dinner

And then the first WordCamp day was already over. A colleague of mine gave me a ride back to the old town, and that only took us about 50 minutes. Usually, you can manage that distance in about 12-15 minutes, but, you know, rain, and lots of taxis, regular cars, busses, more rain, and trams. It did take a while.

Stara Koliba, Belgrade
Stara Koliba, Belgrade.

Later that evening, we had a superb team dinner with all people from Human Made who made it to Belgrade, which were about 20 or so. Awesome and way too much food, tasty drinks, interesting and diverse conversations, and live music made it an allround awesome time.


After the dinner, we went to the party that we hosted together with yoast and SiteGround. It was situated on a boat, which had a swimming pool (!) in the middle of the dance floor. As we heard, that had been quite a splashy surprise to some guest earlier that evening. 😀

I had some good conversations, but did not stay for longer than maybe one and a half hours or so.

Saturday: WordCamp Europe Day 2

Time for the second and also last day of the WordCamp.

Advanced Gutenberging

Yes, really. After having spent six hours in workshops the day before, I started again in another three-hours workshop. This time as a regular attendee.

Zac Gordon and Julien Melissas hosted a more advanced Gutenberg workshop, and to make it really fit (and not overlap) with all the other Gutenberg madness going on at WordCamp Europe, they adapted the content pretty much until the evening before.

One of the key take-aways was how to include React (i.e., the WordPress-specific  abstractions of both React and React DOM) into the frontend to be able to create dynamic React-powered Gutenberg blocks. Not that this is hard, but it is nothing seen too often in Gutenberg tutorials or custom blocks, not to mention core blocks.

The workshop itself was about building a simple reaction UI to like posts. This allowed Julien and Zac to introduce advanced concepts and technologies such as, which is the WordPress-specific state or data handling layer inspired by Redux, but at the same time to actually apply these concepts in a small and thus easy-to-grasp context.

Some people were asking about the usage of  data-* attributes, so I happily shared my post on using HTML5 data attributes that I published about a year ago.


During the long lunch break, the German WordPress community present in Belgrade met for a group photo.

German WordPress community
German WordPress community. Photo by Omkar Bhagat on Flickr.

Not everyone could or wanted to make it, but it was great seeing the 40+ German(-speaking) people in one spot. 🙂

How to Create User Generated Content for Your WordPress Website and Business

In the afternoon, I decided to go for a group of lightning talks, and the first one was about user-generated content. Sven Lehnert shed some light on possibilities around and advantages of giving your users a means to contribute content to your website.

I have only been involved in one project with user-generated content, so I could not relate that much to the topic. Content-wise it was pretty interesting nevertheless, though. Also maybe because privacy, which is a hot topic currently anyway, is to be concerned when it comes to user-generated content, or anything, actually.

Taming the WP Options Table

Next up was Ben Greeley who talked about the options table, and how (not) to use it appropriately.

The talk didn’t have much news to me, but I think for several other folks in the room. It was a nice summary of important Dos and Don’ts.

What We Forget to Test

Last lightning talker was my colleague K. Adam White, sharing his lessons learned about documentation. Not just documentation as in a project readme, but anything really.

The talk was great, and included lots of best practices, references, and ideas regarding how best to document your projects, products, tools, processes and lots more. From what I saw both in the room and on Twitter, people really liked the talk, which is just great for everyone.

Beyond Gutenberg

The last talk I visited was by Matías Ventura, who talked about the latest updates to Gutenberg.

While the talk included some nice features I didn’t know existed (e.g., the ability to paste Markdown into Gutenberg and have it automatically parsed and converted into the appropriate blocks), I expected a different kind of focus. The description said the talk “dives on the technical side of the project”, but I didn’t really feel it did (in the way that I had hoped).

Gutenberg is and will stay an important topic for along time, and there is so much happening at all times, so it was not a bad decision at all to attend this talk.

Closing Remarks

Well, and then it was all over. 🙁

Mad props to all the organizers and volunteers for creating an allround awesome event!

One of the most important things to learn in the WordCamp Europe closing remarks in general is when and where the event is about to happen in the upcoming year. And for 2019, WordCamp Europe will happen in Berlin, Germany, where I am living, in case you didn’t know. 🙂

I am so looking forward to this special event!

WordCamp Europe 2018 and 2019 lead organizers
WordCamp Europe 2018 and 2019 lead organizers. Photo by Florian Ziegler on Flickr.

Right after the closing remarks, we did an ad-hoc photo shooting with all Humans around. No idea really why most of the people did what they were doing. Noone can remember anyone asking for us to do anything particular funny. 😀

After Party

Yeah, and then there was that after party. One unlike any other I know, and lots of other people, too. Many people followed the theme and dressed up in a retro-futuristic way.

And there was a band. Did I mention the band? Fitting the theme, they, and their music, seemed out of this world. Having played in several bands for more than ten years, I can say they really did a really good job, really! 😀 And they also had a broad and diverse set list. Cannot recommend them enough.

Sunday: Extra Day

Because I didn’t find a good and also reasonable-priced flight back on Sunday, I stayed for one more day in Belgrade.

World Cup 2018

Together with two colleagues, and several other WordCampers, I watched both the Germany and the Switzerland World Cup matches. But yeah, both were not really great, although the Swiss team at least didn’t lose, nor look all too bad.


I really loved being at WordCamp Europe 2018. I think it was a successful event in all regards, and I just can’t wait for June 2019, where the next WCEU will happen, in my home country, Germany. That’s the reason I applied as an organizer! 🙂

See you in Berlin?

Leave a Reply

Your email address will not be published. Required fields are marked *