010PHP July and August

Time flies not only when you are having fun, but also when you are hard at work! As a developer who is walking back out on the field, a lot of new technologies have emerged. Sometimes it is overwhelming, and meet-ups are an excellent place to learn, with practical examples and people to talk to face-to-face. My favorite place to hang out with fellow developers is 010PHP, since it combines two things I love: Rotterdam and PHP programming.

July 4th this year I started my new job as a Full Stack Developer at DevMob, and I found my salary increased and my free time decreased. So it was a challenge to find the time to write a review for the last meet-up I attended… and the one before that!

The view from the DevMob Rotterdam office is amazing.
July’s 010PHP meetup took place at DPDK‘s beautiful Rotterdam office, situated at near Veerhaven and the Erasmusbrug. I met Damien Seguy outside, who gave a talk about static code analysis earlier this year. It was a bit of a climb to the top floor, but the view from the terrace was worth it. The meetup marked the third year of 010PHP and to celebrate, DPDK were hosting a barbecue. The smell of grilled burgers made many a developer hungry and the atmosphere was great.
Roberto welcoming everyone at the meetup and introducing the new shirts and stickers!
After we’d gotten some food and beers in we were summoned inside by Roberto, who first introduced the shiny new 010PHP shirts and stickers and introduced Gerben Geijteman, our first speaker. The talk was “To AWS with Ansible“. Gerben spoke about how he and the team of DevOps engineers at FD.nl migrated to Amazon Web Services and Ansible. FD.nl / Financieel Dagblad is one of the busiest news websites in the Netherlands, and I was very impressed with the numbers, both the performance of these tools as well as the invested money. Though I know enough to be able to deploy applications through SSH, I’m not an experienced DevOpser. I’ve just gotten started with Docker. It was really interesting to learn more about Ansible. Gerben also performed a classic ‘daring’ talk move by deploying a server live, showing us exactly how Ansible gets the job done.
Gerben talking about AWS and Ansible.

The next talk was “Paradoxes and theorems every developer should know“, given by Joshua Thijssen. This was a fascinating talk, explaining how our identifiers and hashes are a lot less safe and reliable than we think. Based on a handful of ids, we can make a good estimate about the total collection; and as it turns out, hash collisions already start happening around a collection of a mere hundred. So definitely don’t rely on hashes to identify resources!

At the end of both talks, some Elephpants were thrown into the audience… and I caught one!

The family of fabulous elephpants got a little bigger.

After the talk, beers and barbecue continued, but I went home early; after all, the next day was a work day, and I have to catch those zzzs.

Before I knew it August had come along, days full of programming flying by, and @Yosh asked me whether I was going to the meetup tonight; my answer was, “what meetup?” So of course I raced to the 010PHP meetup group and managed to secure a place last-minute.

This time the talk took place at the Schouten Zekerheid office near Kralingse Zoom. After a quick sushi dinner at iYuMi I headed to the metro station and took the robot bus to the building.

Who’s driving this thing!? 

Today we had the talk “010PHP: Don’t work for PHPCS, make PHPCS work for you!” by Juliette Reinders Folmer. PHPCS is one of those tools that I have used in plenty of projects, but never went in-depth with; just put in the default settings, such as PSR-2 or Symfony, and go. That’s why it was useful to learn about the many ways you can customize your code sniffer. Especially being able to grab newer sniffs from different projects is good when you are using an older default. Not to mention it is awesome to get the latest scoop from someone who is an active and prolific contributor to PHPCS.

My journey back home was a bit adventurous that night! In my hurry to get to the meetup, I hadn’t checked my transport back, and as it turns out, robot buses don’t drive around past 9 pm. Who knew robot buses had to sleep? Do they dream of electric passengers? I ended up having to walk all the way to the metro station (it wasn’t really that far, but still!)

That concludes my meetup summary. Tonight I am attending the Domain Driven Design meetup in Hilversum, which will be interesting considering I know literally nothing about DDD yet. Getting caught up to all the Next Big Things is a journey of jumping into the deep end and learning how to swim again.

And speaking of getting caught up — I also dove into Node.js last week. The JavaScript ecosystem has exploded exponentially in the past three years. Since I am primarily a back-end developer, I decided building a back-end API with Node.js would be a good place to start. I might come to regret those words…

Joy of Coding 2017

Yesterday I attended Joy of Coding 2017 and I had a blast. JOC is a conference for developers from all languages, frameworks and corners of the world and I found myself amongst mostly new, friendly faces who share the same passion that I have for technology.

… Well, passion

After the introduction, the first keynote talk Living The Good Life began, given by Ted Neward.

I don’t know why they call them ‘soft skills’ when they are so very hard to cultivate!

Ted talked (… pun not intended) about eudaimonia, or what constitutes a good, happy, fulfilling life. He criticized ‘passion’ as an emotion that isn’t something you actually want from your developers or even from yourself as a motivating force; passion is intense, exhausting and temporary, and can even turn into anger. When it comes to staying motivated and engaged in life, rather than relying on short-term bursts of passion or external rewards, experiments and research have shown that intrinsic, internal motivation is much more powerful and long-lasting. In fact, developers were apparently less motivated to fix a problem once they were paid to do so.

I’ve done a lot of self-development over the past few years, and I nodded to Ted’s points in agreement. I have found that there is no external factor that can even measure up to the power of internal motivation, and that the ability to tolerate delayed gratification is one of the most powerful tools of achieving awesome long-term goals. If there’s any soft skill you want to pay attention to and grow in, pick that one. Being able to put up with boredom and frustration to get to the higher pay-off is so worth it.

During the short break after the talk I found myself inhaling some much needed coffee, and quickly making contact with the developers around me. That was definitely the thing that made this conference awesome; there were no devs sticking to a clique, and instead everyone was mingling and getting to know each other.

Next up was Shaving the Golden Yak by Jessica Kerr.

I wonder if they ran into these whilst building the Death Star software.

I hadn’t heard of yak shaving before. It’s a term used in tech to describe any single task or series of tasks that seem pointless, but are sometimes necessary to solve a problem in order to be able to solve another problem. Sometimes these are very obvious — you gotta fix your build before you can deploy your code to an acceptance server — but more often than not, devs get sidetracked by many yaks that aren’t especially necessary to fix. Or are they?

Maybe in order to install this framework, you need to install this package manager, for which you need to install this compiler, which has complicated installation instructions, so you end up spending hours reading up on that compiler, and end up on an article about how this other package manager could be much more efficient to use, so you install that and play around with it, and you come to the conclusion that it is better, so you hook it up to your framework, but you’ll need an extra library for that, only that library has a bug in it specifically interfering with the database version you’re using, so now you have to fix that bug locally and send in a pull request, but the library hasn’t been updated since 2014, so now you’re considering going back to the original package manager…

Yep, you just spend an entire day shaving yaks. Development is very sensitive to this, because there is always something new and shiny, because there’s always one thing to set up or clarify or document, because there are always requirements left and right to take into account. There are a lot of things getting in the way of getting things done and often enough developers like shaving yaks because woo, there’s more problems to solve!

But, back to Jessica’s talk — in order to really bring her point across she learned a lot about the actual breeding and shaving of yaks, which was a brilliant and hilarious way to frame the presentation. Not to mention the excellent yak illustrations. Jessica describes several types of yak and how to best deal with them; she repeats how important it is to prioritize the smoothness of the development path for the whole team so that the sum is far greater than the parts. It is encouraging to consider that even if you’re not going down the road of shaving those yaks, you can leave a breadcrumb trail for other devs to follow, or smooth things out just so that it does improve the situation for everyone without spending too much time on it.

She also touches upon automating as much as possible to minimize the time spent on manual setup and repetitive tasks, so you can get back to solving the problems that actually need to be solved.

The first three aliases you want to put into your shell profile.

Then: the Speed Meeting, organised by Linda van der Pal

After Jessica’s talk I was faced with a choice: either stay seated and enjoy some lightning talks from fellow devs, or attend the social speed meeting. Since I wanted to socialize more, I chose the latter. And I’m glad I did! It was awesome, if at times also awkward, to talk to people on a time. It’s a quick way to get to know more people at a conference and touch upon mutual interests.

One particular speed-meet that stuck with me was actually with Llewellyn Falco who’d be speaking about mob programming later that day. When I mentioned how I’m starting at a new job soon, he suggested I spend the first few days pair programming in the role of the driver (all typing no thinking), since this could be a fast-track to understanding the company’s code and setup without the traditional long spin up time of new developers. It’s a great idea I hadn’t even really considered before; of course having a new dev literally go through the paces with another dev would speed up their acclimatization. Developers are smart people; you only have to show them how to do a thing once and they can figure it out from there. It’s way faster than having them bumble about by themselves the first few days.

After the speed-meet, it was time for lunch! The conference offered a wide range of food from good old fashioned cheese on bread to chickpea burgers. I was a fan of the luxury bread toppings with guacamole and beet spread. Despite the long queue, there was enough for everyone!

Not pictured: a hundred developers queueing up for food

Next up: Stories Every Developer Should Know by Neal Ford

Neal started his talk introducing us to the failed design of a 2-storied cannon ship (perhaps the very first failboat), continuing onto the history of programming languages and the billion-dollar mistake that was introducing Null references to ALGOL W, the grandfather of many modern programming languages. Another poignant story was how Knight Capital created millions of dollars in debt in 30 minutes, simply by trying to re-use a code toggle and failing to update all servers. Not to mention the mistakes made during the construction of the software of the Ariane 5 rocket, causing its failure and subsequent explosion.

“The internal SRI software exception was caused during execution of a data conversion from 64-bit floating point to 16-bit signed integer value.”
— Ariane 5 Failure Report in full

Oops.

Neal’s point was how often reuse and shortcuts in development can have some pretty serious consequences, and these mistakes still get made every day when building software. It’s good to be aware of these stories in order to not make these mistakes again. Shortcuts and trying to be backwards compatible can often have some costly ramifications in the long term.

I appreciate the shout-out to Ada Lovelace, the world’s first programmer, whom the Ada programming language was named after. Role model!

Another point Neal made was about how much developers love metawork more than actual work; they love building a framework or tool that solves a problem rather than solving the problem. This too can spiral out of control (and is closely related to shaving yaks).

All in all, there is a lot to be learned from the past. Sometimes you really don’t want to reuse existing code, but you don’t want to overdo building new things, either.

And then it was time for the Mob Programming talk by Llewellyn Falco.

I was especially interested in this talk because I had just been hired by DevMob, and if your company has that name, mob programming sounds like a think to try! Not only that, but I’d spoken to Llewellyn during the speed meeting, where he urged me to pair program for my first weeks at my new job. I hadn’t considered that, and it would be a great way to get used to all the code and tools.

Mob programming is a sort of extended pair programming; not only do we have the driver and navigator, but also other developers to pitch in; preferably from different backgrounds, so knowledge can be shared optimally. After a set time, the roles shift to the next dev in the circle. Everyone gets a shot at being the driver and being the navigator.

Llewellyn immediately showed us how effective this is at sharing knowledge and skill by a small demonstration, using the live audience! (And thus making sure we were all still paying attention in the late afternoon, too.)

The mob wrote a FizzBuzz test step by step, with decreasing levels of misunderstanding!

To me personally, pair programming is quite intensive, even with breaks. Still, mob programming seems worth a try to solve more complex coding problems, and a good way to disseminate knowledge across a team.

After another break it was time for How to hire and work with people who aren’t like you by Koshin Mariano.

I resisted the urge to cheer — diversity is an important topic to me, especially as a woman in tech, and I really appreciated Koshin getting out in front of people and talking about this and paving the way for this topic.

His talk made apparent how a lack of diversity in tech companies also constitutes a lack of developers — if you aren’t hiring a more diverse crowd, you’re missing out on developers as is, and their added experience as a member of a different group. Diversity in the workplace has shown to dramatically increase the performance of companies all across the board. Many tech companies are crying out for developers, but end up hiring similar people — and thus not tapping into a potential hiring resource.

“In an ideal world, companies are representing society. But we live in the opposite of an ideal world.” @Koshin_M #joyofcoding pic.twitter.com/d4VfJ17drw

— Felienne (@Felienne) June 30, 2017

I think the talk resonated with all of us who would like to see a more diverse workplace. Not only for the sake of equality, but for the sake of experience, knowledge and creativity. It’s good for us to learn about different people, different cultures, and different backgrounds. It helps us grow as people and that also feeds back into how we do our jobs.

It was good to hear these things out loud and I believe we need to talk about it more.

Next up was Carin Meier‘s talk about The Joy of Stochastic Gradient Descent.

Something that, in retrospective, I probably should have looked up!

Stochastic gradient descent (often shortened in SGD), also known as incremental gradient descent, is a stochastic approximation of the gradient descent optimization method for minimizing an objective function that is written as a sum of differentiable functions.
(Source: Wikipedia)

… So, math.

Carin took us on a wild journey through the general approach of Deep Learning AI programming and soon things became a little more clear to me: essentially, machine learning is possible through a formula that approximates the maximum (though stochastic gradient descent approaches the minimum). This allows a machine to effectively guess at what it’s being presented.

And also, generate cats, which is the best application of AI the internet has seen so far.

Diving into this field for a little while was fascinating, if also very mind-boggling, and I was lost at some points of the presentation because of lingo rather than logic. As a big fan of science-fiction and Isaac Asimov, it is a topic I could definitely get back to, because it’s not only very complicated, but also very awesome.

The conference concluded with the presentation of the Dutch champions of the RoboCup Junior 2017 dance division, which honestly was equal parts adorable and impressive. It was really cool to see such young brilliant minds at work, and  the majority of them being girls — I am enthusiastic about encouraging girls to code and get into technology. I think we are going towards a future where computer skills are becoming more and more important, as AI becomes more sophisticated and technology more ubiquitous.

All in all, it was an awesome day, with both educational talks as well as socializing and networking with fellow developers. A huge thank you to those who sponsored my ticket and made this possible. And thank you to the Joy of Coding organisers and volunteers who put together this conference. I hope to attend again next year!

 

010php Meetup June 8th

Last week I attended the 010PHP Meetup for June 8th, with two talks: Review unknown code with static analysis by Damien Seguy, a talk he will continue to refine and give at the Dutch PHP Conference at the end of this month. The other talk was GraphQL is right in front of us, let’s do it, with Symfony by Renato Mendes Figueiredo.

The meetup was hosted at Youwe in their brand new Rotterdam office in the middle of the city centre. Right off the bat the atmosphere was friendly, groups of devs catching up with each other with a beer in hand.

Notebooks for everyone!

I spent some time socialising with 010PHPers familiar and new. Since I was present at the very first handful of meetups and gave my own talk back in 2013 (called ‘Debugging for Distressed Developers‘), it was natural for me to get back in touch with my peers starting with 010PHP. It’s a friendly welcoming group of developers with good mix of veterans, mediors and students alike.

Coffee, beer, pizza, and talks: the average dev’s fuel

After most of the pizza had made its way to hungry developer stomachs, the first talk began.

Damien is an experienced speaker and he had no trouble getting the audience involved. He explained how static analysis is about reviewing the code with as little bias as possible, starting at the very basic level — what kind of PHP settings does this code use? Which extensions? — and slowly digging further into it, looking at dependencies, filenames, directory structure. The audience was frequently tested on their own analytic ability by being asked if we noticed anything unusual or something that told us more about the application.

Then we were introduced to a large number of PHP inspection and analysis tools, including Damien’s own Exakat software and PHPLint. What especially struck me were the graphs with the PHP version on the x-axis and number of errors on the y-axis that told us how a particular application may be maintained with regards to PHP version compatibility and that enterprise applications will often stay stuck before a major version change out of fear of breaking everything.

The version numbers also reminded me of PHP6 — in the sense that we jumped from 5 to 7 and we don’t talk about 6, much like we went from Windows 95 to XP and don’t talk about ME (even though XP has many of the features first released in ME). But, that aside.

After a short break, Renato continued with his talk on GraphQL. As someone who’s been out of the loop for a while, learning about new technologies has an extra layer of ‘I need to know this! Help!’ so of course I paid the utmost attention. 

“Help! I need to learn this new library right now or I’ll be completely obsolete!”
— Sasha Greif at So what’s this GraphQL thing I keep hearing about

GraphQL immediately struck me as a very elegant solution with clean, understandable syntax. It’s one of those technologies that makes you wonder, ‘where have you been all my life?’ Of course, it’s been around since 2015 and first developed by Facebook in 2012, but it’s quickly gaining even more traction. It sits between your application and all those other APIs out there, so you can just talk to GraphQL — and let your users talk to your GraphQL server — and it does the work for you. (Well, mostly. You have to write resolvers to deal with your input, but then you’re all good to go.) And as a total Star Wars fan, I appreciated the look of Renato’s presentation! He’s also giving this talk at DPC by the end of this month as well as submitting it to several conferences, so you may see it pop up in the future.

It was good to attend a meetup again and soak up some tech knowledge! I’m attending the Joy of Coding 2017 conference in Rotterdam by the end of this month, so be sure to check out my report on it as well.

It’s a blog!

My very own professional WordPress blog is here! As awkward as the first post of any blog is to write, I’ll give it a try.

I am Daniëlle Suurlant. I’ve been a web developer for nearly 15 years, and a computer geek for much longer. In this blog I’m going to talk about what I’m doing, learning and seeing as a developer. The real kicker is that I’ve been out of the loop for 3 years. You might imagine that if you take a long journey of self-discovery, fall into some bad luck along the way, and you finally come back to find your home covered in JavaScript frameworks — it’s a bit of a shock! Thankfully the old giants are still standing — I’m more than familiar with backend PHP, Symfony and .NET.

I’m in the smack dab middle of my job search and of course, this blog is an important part of that. I’m also getting my dev self back on track by attending usergroup meetings such as 010PHP and at the end of the month I’m attending Joy of Coding 2017. You’ll find write-ups of these events right here.

What is it like for a developer to walk back into their field of expertise after a long absence? Technology moves fast, and it’s certainly believed that if you don’t keep up, you get left behind. I plan to prove the contrary, showing that it doesn’t take much to reactivate over a decade of accumulated knowledge and skills. Let me show you the answer to that question and more.