So you are a technical evangelist, what does it even mean?

When I started developing software at thirteen I dreamed of architecting big software systems. I really wanted to build cool stuff with my computer, although I could only program a little bit of QBasic back then.

18 years later I am building big systems, but I haven't exactly reached my goal. Of course I design my fair share of big pieces of architectures, but I'm not an architect.

Good recruiters, Bad recruiters and how to deal with them

Every week I get at least 3 questions whether I'd like to change jobs. It usually goes something like this:

"Hi we are looking for developers for a company somewhere in the country. Tt's really great, they are the most fun to work with. The do projects for big companies."

Building Containerized Apps With Vagrant

Building apps that use docker as a means to deploy different services for the application is somewhat weird. You have to type in a lot of docker commands to get everything up and running. That is not all, on top of having to execute a lot of commands you also have to deal with a the rather long commands. There's quite a few things you can configure and you have to specify all that on the commandline.

In this post I will show you a tip that will save you a lot of time when you work a lot with docker containers.

Migrated my blog to Ghost.js

Javascript is awesome and I had to jump on the wagon by moving my blog to this cool programming language. Well, not really, but I was looking for a blog engine that supports markdown instead of the dreaded wysiwyg HTML editor that was standard a year ago.

<!-- more -->

Mac OS X Mountain Lion and Wi-Fi internet using a KPN Experia Box

Apple just released its latest version of Mac OS X called Mountain Lion. They improved a few things so I had to have it, especially at the price they sell it for. I know there's not much in there I will use, but still.

As with the previous version, I could install the whole thing by going to the appstore and selecting the update there. After waiting a bit for the download to complete, the install went down without a hitch and soon I was running Mac OS X Mountain Lion and happily browsing away on the internet. Or so I thought.

Designing or engineering software

<p>The software business has been my home for more than 5 years now and I've seen quite a few applications take shape during that period. Some applications were better than others, but overall you can see that every single person, that is building software, is taking pride in his craft. Some people go even beyond their personal love for crafting software and start telling others how you should be building software. A very noble cause if you ask me.</p><!--more--><p>These people put processes and procedures in place to make sure that the quality at the end of a development cycle is up to standards that have been agreed upon before hand. It makes things much more predictable, so that when things go well in one instance there's a high chance they will go well a second time. The things I'm talking about here are all placed under the flag "Software Engineering". I probably shouldn't have told you all of this, because you're most likely one of the programmers, that follows a software engineering method every day. If you don't, I think it's time that you start following one. As I said, it makes things much more predictable.</p> <p>There is also another side of software. The creative process. The people that design software are very creative in doing so. The things you see in every day life, from live messenger up to firefox all comes from the minds of very creative people. The process that goes into thinking up these applications cannot be called engineering and here's why. Creativity exists in a form of chaos. People make weird jumps in their mind to come up with the most brilliant solutions to problems they think need to be solved. These jumps can look very chaotic to the observer and there's no fixed process in which these ideas take shape. You cannot tell someone who is designing, in what order he should get his ideas. It will stiffle his creativity and you end up with a kind of a bleh product.</p> <h2>Design versus engineering</h2> <p>When you look at the engineering aspect of software, it's all about making sure it works correctly and that it is maintainable. You will see order, straight lines, rectangles, kind of boring people, etc. However when you look at design you see curves, colors and people with wild designs on their T-shirts. Design en and engineering are two totally different worlds. </p> <p>The one thing that triggered me in writing all of this down is that I had a very short and dissatisfying discussion with one of the guys I work with on a software factory. He's responsible for writing down the engineering processes and making sure people follow them. </p> <p>I showed him a design I made for a mobile app. He asked me what program I used to make those designs and I told him, I use a design tool, because I can't work with tools like Balsamiq or Visio to create the designs. They are too restrictive for me. It stops me from doing the right thing. He replied, you're doing it wrong. This is not repeatable. You want the screens to be the same. </p> <p>That my friends, is an answer that makes me not just a little sad, it hurts me. He basically told me to stop my creative process and start following some engineering process and start producing straight lines in my mind. I simply cannot do that, so he effectively stopped a very important though process that will make us both succesful.</p> <p>He did however make me think about the process of designing and engineering software. His approach was that of pure engineering. My approach was that of pure design and creativity. Both are needed for creating a great piece of software, but none of them is perfect on its own.</p> <h2>Design and engineering</h2> <p>The short discussion with this software engineering guy made me see something important. Just engineering software isn't good enough these days. It will only give you windows 98 interfaces or worse. You need someone that can make your software look cool and do stuff that the user wants. And that goes beyond basic use cases and analysis models. It includes user interaction, giving the user the idea that you truly understand him and what he wants to achieve. In essence you need a designer guy to come up with something creative and cool looking.</p> <p>At the same time you need someone that can turn the ideas into working software. The designer guy isn't going to be able to do that, because of his curvy lined brain. You need someone that sees/feels/breathes straight lines and squares. He's able to follow a process and execute procedures to build a working piece of software based on the ideas and designs of the designer.</p> <h2>Making it perfect</h2> <p>The whole process of creating software becomes even better when you do the following. Stop throwing those designs over the wall and the software back over that same wall. Instead, walk around the virtual wall and start working together on the software. Designers and developers should have a desk in the same room and they should be talking. There's nothing wrong with a little bend in your straight lined brain and a little less curves in your mind if you're a designer. And since nothing is perfect the first time, it's important that you work together to tweak the software so that it is perfect at the end.</p>