Left On The Web

PHP NorthWest 2015

| Comments

As you may not have noticed already, I have been accepted to do the closing keynote at the fantastic PHP NorthWest 2015 conference. I am really happy to have been accepted, as this keynote is a personal message from me that I think is important to communicate. In my keynote “Developers Are Just Like Humans” I will be looking at how we as developers may have similar problems as humans and perhaps could solve them in a similar way. It is good to be aware of this.

As with previous years of PHPNW that was accepted as a speaker, I had already bought my ticket for this year’s edition of PHPNW. This means I will once again be able to give my ticket to someone. I would prefer to give my ticket to someone who would not otherwise be able to attend PHPNW: A student, someone without a job or who can not otherwise afford to buy a ticket, someone who has not yet been introduced to the PHP community. Please note: I am only giving away a ticket to PHPNW; travel and hotel need to be arranged by the person getting the ticket.

Are you someone who fits the “would not otherwise be able to attend PHPNW” description? Or do you perhaps know of someone that fits the description? Send me an e-mail: stefan@ingewikkeld.net with subject line PHPNW15. I will look at all the e-mails and contact the person I (random or otherwise) decide to give the ticket to.

I am looking forward to PHPNW!

WeCamp Day 5

| Comments

I still owe you one day, so here it is. This blogpost came a bit late because as day 5 ended we still needed to get the island back into its regular state, get speakers back to the airport etc. Enough excuses… here’s day 5.

The last day of WeCamp 2015 was an exciting day. After 4 days of preparations and hard work, this was the day that Team Enygma would present Project Cypher. A project that we had kept an utter secret aside from the name.

During the morning, I had another round of individual conversations with my team members to see how their short-term goals were working out. It was very good to see that all team members had either reached their goals or at least were very close to reaching their goals. Some also had a clearer view of what to do with their long-term goals thanks to the experience of WeCamp. One person had not actually reached his goal, but instead had gotten something completely different and unexpected out of WeCamp which he still counted as a win.

The preparations for the presentation of the product went well, although it was finished slightly too late (lunch had already started). Still, good enough.

Then it was time for the project presentations. Team Enygma was presenting as the last team, so we could see the other teams present their stuff first. It was awesome to see what people had come up with: Being able to use a Slack Bot to control an Arduino, community-minded projects for new speakers to get feedback on their project, even a daemon that you can use to play battleships. So very cool. The presentations also gave us an overview of what people had learned. An amazing amount of things were learned, that is clear.

And then… Project Cypher was presented. The idea behind the project was to be able to keep track of information about people you know. In the original project pitch by team member Remco it would be like a CRM for Friends (FRM?). The problem (and I can so relate to this problem): Forgetting about specific things (Where do I know this person from? What do they like? When is their birthday). As we worked on the project, we came to the conclusion that this was also the ultimate tool for stalkers, but it could also very easily be applied by the police for keeping track of criminals. So it was creepy, or not. Team member Paul (who wanted to learn to be a public speaker) killed it in the presentation, sharing what we had learned and also doing an awesome demo of our system in action: Everyone that was at WeCamp was in our database, nicely tagged and easily searchable. You might be able to imagine the feeling of pride I had when I saw all this. 4 people who had never before met had created this project in just 5 days, and learned so much in the process.

After that, it was time for the closing notes and saying goodbye to everyone. The crew and coaches stayed behind to have a final dinner together and chat for a bit more, processing everything that had happened along the way. Such a fantastic week. Thanks everyone who was there.

WeCamp Day 4

| Comments

In terms of working, day 4 was actually only half a day. But since the last day of WeCamp would also just be half a day, some work had to be done. The team focussed on finishing their MVP and ended up actually finishing this as well! A great accomplishment for a team that, 4 days ago, did not know eachother at all.

After lunch the Pragmatist Survival Game was scheduled. We were randomly assigned team mates (get out of that little comfort zone you built during this week!) and went on to do four different games. The games were: A balance game to get team members over the water (preferably without falling in), trying to get as many floating items out of the water, making a fire and lighting gun powder with it and sword fighting. It was awesome to see everyone get into their pirate role so well, including the secret assignment each team got, which was to make a song or poem about Mikke One-Eye. For me personally it was fun to speak to and work with some people from outside of my team as well. And I succeeded pretty good in the whole “being a pirate” by stealing the tally stick of another team, thereby robbing them of the points they earned. Unfortunately our plan to add those points to our own points was stopped by the pirate leaders denying to add it to our points. Still, we earned a third place, which I think is pretty good, out of 8 teams.

Then it was time for the Enrise BBQ (which I was told by Eli should actually not be called a BBQ, but rather a grill-out). This was a perfect way to end the day with all attendees, plus some extra guests: Rick and Stefan from Enrise, Merel and a friend (Merel is the awesome graphical artist who did our coach avatars) and my wife and kids. The night ended in the big tipi around a campfire. I hear some people didn’t go to bed until 5AM. Not surprisingly, this morning the stand-up had some people missing in action.

Today is the last day of WeCamp. It means polishing up the projects, preparing the presentation and delivering the presentation. For me it also means sitting down with my team members to evaluate their personal goals for WeCamp. It’s going to be an interesting day.

WeCamp Day 3

| Comments

Day 3 brought change. As I mentioned yesterday some of the personal goals that were set during the individual conversations with my team members affected the work we were doing. This meant, for instance, that Jasper took a more leading role within the team, and Kanban was being implemented for a better view on our progress.

There was also some discussion on functionality and focus, as the team members were realizing they were affected by scope creep. So the minimal requirements were defined more strictly and for all the “fluff” extra post-its were added to the Kanban board. The board now also had a split: The top of the board contained all the features that were really needed, and the bottom contained the nice-to-haves. There was even a small corner of the board dedicated to “super-bling”.

The team became more and more of an actual team, with lots of discussions and a lot of pairing and helping eachother. This was great to actually watch and see it happen.

The goal that was set in the morning was to finish the minimum viable product, and the team worked really hard to reach this goal, working until very late in the night. When I left the team at about 11PM they were still at it, and from what I hear they worked until after midnight even. The goal wasn’t fully reached, but we’re close.

Today will be an interesting day, because the MVP needs to be finished, but there’s also the Pragmatist Survival Game and the Enrise BBQ. I’m very much looking forward to seeing what will happen today, and I’ll share with you tomorrow.

WeCamp Day 2

| Comments

Yesterday was day 2 of WeCamp and it was an interesting day. While gathering requirements in day 1 we created two spikes, topics to research to find out if we could actually do what we assumed we could. So in the morning, two people started on the research, while two other team members started on setting up the vagrant box and the Laravel project (we decided to go with Laravel for our project on day 1).

The first bit of research was quickly finished with a successful result, however the second one caused some problems: It turned out we could not do what we had assumed we could do. This meant we had to go back to the drawing board for at least part of the application we’re building.

After a very constructive and successful session we decided that our change in scope wasn’t all that big. We could still build our main scenario in a slightly different way. So we decided on a new list of tasks to focus on and started building those. At the start I noticed that my team members were all working very much as isolated units, but as the day progressed a lot of interaction started happening between team members. This was a nice development.

Another thing I focussed on as a coach was to set personal goals with each team members. So during the afternoon, I had private conversations with each team member to determine what goals they wanted to set. We talked about work, life and ambition and set one or two long-term goals (for “life after WeCamp”) and one short-term goal (“what do I want to have learned/done during WeCamp?”). Some of the short-term goals immediately had an effect on the work we were doing in the team, so we made some changes to the team dynamic to give the people with those goals the opportunity to reach those goals.

We wrapped up the day in a really positive vibe with some excellent progress on our project and went to dinner. After dinner it was time for the Persgroep Gamenight. I pretty much lost track of my team members at that point, each went to play their own choice of games. In my case, this was: Dixit, Exploding Kittens, Masquerade and more Dixit. Being the responsible adults we are here at WeCamp (grin) we turned off the light at 1:30 and went to bed.

As I’m writing this, day 3 has started and the team is already working on the project again. I’ll try to summarize today in another blogpost tomorrow morning.

WeCamp Day 1

| Comments

As we just started day 2 of WeCamp I’m reflecting back on the first day of the event. As I am being a coach this year, things are very different from last year for me. I’m hoping to have enough time to publish some notes and obversations every day.

Being a coach

Getting a team of random people to coach is an interesting exercise. First thing to do is to actually try and size up all the team members and see what kind of personalities you have in your team, and how each team member can fulfill a role in the team. Additionally, the skillset of your team members can vary greatly. Although randomly created, my team actually has a pretty nice set of skills, including good frontend skills, good backend skills and even some project management skills. After some initial hesitation, the personalities also seem to be able to work together quite nicely.

Being the coach of this team is an interesting experience. On the one hand, I am here to observe my team members so I can advise them in their further (personal) development as well as help them. On the other hand, especially at the start of the event, I am also looked at to take the lead and guide the team into the project. This is an interesting double role, especially since one requires me to not interfere with things while the other actually requires me to play an active role in the team. Trying to combine those two roles is interesting.

Being coached

Luckily after some feedback from last years coaches we decided to actually have someone coach the coaches this year. Because of that I am being coached by Jeremy Coates, who is doing an excellent job of giving us some theoretical background information and helping us with the actual practical work. His support in this process is really valuable.

The project has started

After our initial introduction round and brainstorming, we decided on a project to work on. Some really interesting discussions where held on which project to work on, and during the voting the votes were even shifted from one idea to another. We’ve then brainstormed for as many features as we could think, then narrowed our scope to a scenario that we could realistically finish within the time constraints of WeCamp. That scenario was cut up into a set of user stories as well as two spikes, points we needed to research before starting our actual work and this morning, work has started on bootstrapping the project and getting as much information as possible out of the spikes.

Let’s see what we can do today. I’ll let you know tomorrow.

You Need to Do What You Need to Do

| Comments

One of the topics in The Art of Asking that I think more developers should be aware of is that you need to do what you need to do to do your thing. This sounds vague, but it is true. In the book, Amanda Palmer uses several examples of how this works for artists, but I think it is equally true for developers (although not everyone understands this):

At some point, Amanda is having a coffee with Samantha Buckingham, another crowdfunding artist. She releases her music on Patreon, and Buckingham was afraid it would not sit well with her fans that she would post pictures of her sipping a mai tai. After all, it was her fans’ money being spent on such a holiday. The response Amanda gives:

What does it matter where you are or whether you’re drinking a coffee, a mai tai, or a bottle of water? Aren’t they paying for your songs so you can… live? Doesn’t living include wandering and collecting emotions and drinking a mai tai – not just sitting in a room and writing songs without ever leaving the house?

Then she goes on to describe how Kim Boekbinder, another crowdfunding artist, thinks about this:

Kim had told me a few days before that she doesn’t mind charging her backers during what she calls her “staring-at-the-wall time,” which she thinks is essential before she can write a new batch of songs.

This attitude is important for us as well I think. Someone, many developers I encounter seem to think that you need to work furiously on writing new code, at least 8 hours a day, to do your work well. But this is far from true. I touched on this subject in this blogpost, but programming is a creative job. This means that sometimes, you need to take a step back. Go out for a walk, play a game on your Wii, Playstation or XBox, read a bit in a book, find the activity you need to get that inspiration. And don’t feel guilty about doing it.

In my previous project, the office cafeteria actually had a pool table. At least once a day, I’d go down to the pool table with a co-worker and play some pool. I surely wasn’t banging on my laptop for 8 full hours every day, but the games of pool surely helped me sometimes in finding the solutions or cooling down after a frustrating bug arose. Sometimes, we just need this change of scenery. Remember, you get paid simply to get the job done, regardless of how you do it. If your employer or client gives you a hard time about it, just tell them that you need this in order to do what they pay you to do.

As Amanda Palmer puts it quite nicely:

The relative values are messy, but if we accept the messiness, we’re all okay. If Beck needs to moisturize his cuticles with truffle oil in order to play guitar tracks on his crowdfunded record, I don’t care that the money I’ve fronted him isn’t going towards two turntables or a microphone. Just as long as the art gets made, I get the album, and Beck doesn’t die in the process.

The Judge

| Comments

Sometimes it feels like we are in a constant courtroom: We, all of us, constantly judge other people. And I mean, constantly. The person you see on TV, the person that walks by you on the street, the person that comes to your door when you get a delivery. The judging can be based on all sorts of things: How they look, smell, walk, sit, or do something, what they say, what they believe, who they love. It usually doesn’t even happen consciously, it is something you do automatically.

Judging is not always a bad thing, but we judge people too much and too soon. In the past month or so, I’ve been consciously looking at when and how I judge, and I was shocked at how often I do it, sometimes based on, well, nothing special. A quote I hear on the news, a tweet. Yes, even – sometimes – on how they look. I was shocked.

The effect on the people being judged can be horrible. It can make people insecure, it can create an atmosphere of hostility, it creates a society or community in which we don’t dare ask, or even show our vulnerable side.

In The Art of Asking, Amanda Palmer talks about her time as a living statue in the streets of Boston. About how she found out that she could earn a stable living being a living statue. And it isn’t just about standing there, she actually created a connection. Her goal was to create a connection between her as a statue and the people giving her money. But then people shout at her “get a job!” as if being a living statue isn’t a real job. Those people judged her, without even knowing her and why she was doing this. They simply discarded the possibility of this being a real job while for her, it was a real job.


Last week, I was chatting to a friend. We were talking about, well, life, work, etc. At some point, it was clear something was bothering him, and he didn’t dare ask for help. He was honest and told me he was afraid that I would judge him. Of course, he didn’t know I had so consciously been observing my own judgements of others. Especially with friends though, especially when they ask for help, I do not judge. I do not want to judge. Because asking for help is a big step. Big enough for me to know that – apparently – help is necessary. And if I can help, I will. Without judgement. Eventually, the question was asked, and I helped. Problem solved.

Some time ago, I wrote:

Asking is easy if you just do it. Once you start thinking about it, it becomes hard.

I didn’t really go into why it was hard once you start thinking about it. I guess it mostly has to do with judgement. You are afraid the person you ask for help will judge you, will think you are stupid, will think that you acted stupid, will think you are weak.

We miss information

The worst thing is: we miss information when we make useless judgements. Usually, they are made based on assumptions. They believe in God? Why are they so stupid! They believe in Allah? They must support violence. They vote for the right-wing populist party? They must be racist. They are fat? They must eat bad. They use PHP? They are not real programmers. A woman? She must be the front-end developer or designer. A conference with mostly male speakers? They must not have made an effort to get in female speakers. That guy stole something? Such a stupid criminal.

It is easy to judge people, but perhaps if you knew more about the situation, you wouldn’t jump to conclusions that quickly: Perhaps the guy that stole something did so because he has a hungry kid at home and recently lost his job. Perhaps stealing something was his last, desperate attempt at taking care of his kid. Perhaps the person voting for the right-wing populist party does so because they disagree with the economic policy of your government, and no other party has a strong opinion against that policy. Perhaps the fat person is simply ill.

The effect

The effect of my conscious effort to look at my judgement and trying to do less of it is interesting. I feel like I am more open to other people and to their ways of seeing things. I also experience less negativity. You usually judge other people because you do not agree with them based on the limited information you have, which usually leads to a verdict: They are not cool, they did not do what they should have done, they are stupid, they are worthless, they live an unhealthy life, their belief is stupid, they are sinners. Do you see what all these verdicts have in common? Negativity. Trying to reduce the useless judgements has surely reduced the negativity in my head and in my life. What do I gain from judging the person on TV? Nothing. At all.


Our community, the PHP community, has been becoming less and less friendly. We seem to judge more these days, and be very vocal about it. It splits us up into groups, smaller groups of likeminded people. And that is a shame. Sure, we’ve had framework “wars”, CMS “wars”, etc, but most of that was more like a bunch of joking between friends. These days, once we disagree with eachother, sometimes it goes much further than joking.

It can be different. Since “finding” Amanda Palmer last year, I’ve been getting more and more impressed with her community. Of course, Palmer is very vocal about welcoming everyone and spreading love and joy, so the people that are her fan are more likely to take that up, but I’m so impressed with it all. It feels so much more friendly and welcoming. And people are actually willing to share their fears, their loss, their personal stories. People accept everyone for who they are, and support them when they need it.

I think we, the PHP community, should try and be more like that. Judge less, and be more open and welcoming. If we do that, and don’t judge the next woman, man, gay person, vegetarian, rabbi, junior developer, WordPress developer, broke person, left-wing voter, right-wing voter, non-voter, anarchist, rapper, grumpy person, etc then I believe we will be a more diverse community. You will feel better because you have less negativity in your life, and the other person will also feel better, because they will feel welcome, not feel judged. It is a small change in your mindset. Not an easy one, but not a big one either.

I Want to Support

| Comments

I have been blogging in the past months about asking, as I think it is quite important to realize asking is not wrong at all. When Joshua posted his slightly controversial post about elePHPants I felt it made a good point: We should be donating more to open source projects.

It inspired me to create a simple new site listing donation options in the Open Source world, but as I was trying to find content for it, I found out that many open source developers and projects don’t list donation options on their website. I think that is a terrible shame. I know the idea of Open Source is that you give it to the community, and that people can thank you by contributing, but sometimes when you use Open Source you just want to buy the developer a beverage of their choice or help them unwind by letting them afford a new game.

Introducing I Want To Support

As I mentioned earlier, Joshua’s article inspired me to create a site that lists donation options. So I sat down earlier this week and started playing around with Sculpin, one of the projects that I’d heard of but hadn’t actually tried myself. It took me about an hour, or perhaps an hour and a half, and I had the basic idea of the site set up.

What the site basically does is list projects that accept donations. The homepage lists the projects, and you can click on a project to get more information on donation options.

So when you have some spare money that you want to donate, you go to the site, pick a project to your liking, and donate. It is that simple. That is the idea behind I Want To Support.

The content comes from an open Github repository. Adding a new project is as simple as creating a Markdown file that adheres to the template. Everyone can create pull requests to add projects they know. So if you know a project that accepts donations, please do add it to the list.


Of course, donating to Open Source projects does not mean you can not contribute in other ways anymore. Please do keep sending pull requests, writing documentation or blogposts or helping your favorite project in the ways you’re already doing.

Take the Scenic Route

| Comments

Yesterday was a really hard day at work. Lots of meetings, tough topics, lots of stress, lots of frustration. So when I went home, I didn’t take my usual route, but decided to exit the highway a bit earlier than usual and drive through the forest.

Relax And Clear Your Mind

Driving through nature, whether it is a forest, a moor or meadows, has a calming effect on me. It allows me to clear my mind and just enjoy the moment. It also takes you away from the daily routines you have, take a distance from what you see every day and have some variation.

This Also Works For Programming

And while the above is a real thing, it can work just as well as an analogy for being stuck in a programming problem. Sometimes, you just need to step back and take the scenic route. Try a different solution than the one you’re stuck on, find another way. Modern version control lets us easily stash one solution to work on a different solution. You could even stash your second solution and work on a third. Eventually, you will find the right one. It could even be your first solution, but you might not realize it until you’ve tried the other solution(s).

Get Off Your Route

So when you’re stuck, try the scenic route. This means not trying to solve the problem using the same approach you’ve used before, but try a different approach. Completely break with your current path of choice and think of other ways you could solve this problem.

Also: Get Off Your Route

Programming doesn’t stop the minute you step into your car, onto your bike, into your bus or train. So analogies aside, take a different route home every once in a while. This might just force your brain to also take a different route, see a different approach, consider a different way of handling the same issue. And if that doesn’t work, at least you’ve enjoyed the scenic route home.