Erlang Camp Amsterdam: why you should follow it and getting started with Erlang and Axiom

by Tom 17. May 2013 11:36

Introduction

The last two days of August there is a 2 day Erlang course in Amsterdam. One of the most incredible things, is that there is a low cost offer sponsored by Spil games that reduces the price to 55€ for both days; talk about a steal!!

First things first: why should you follow a camp on Erlang?

People who know me in person know that I am an avid fan of Erlang, even though I have only done some very small experiments with it.

Even if you are not planning on developing something in Erlang, you should at least try to grasp the basic concepts!!

You want to know why? Here is why:

Opinionated - but proven - architecture

Today's world of always connected web-apps, is much more similar to the telecom world then the web-apps from a few decades ago. People are currently continuously connected, and they expect almost-immediate responses.

As you can imagine, designing a proper software architecture for this takes a lot of time, but this is one of the parts where Erlang excels:

All the time you spend on building infrastructure for a well-designed application can be simply skipped. Erlang offers a very opinionated but proven tech stack that implements this for you out of the box, including things like messaging, local and distributed persistent storage, supervisor processes, ...

Next to this it also does not care on which machine a process runs;there is no extra implementation cost to run your process on multiple machines. (cloud anyone?)

The actor model

Actors are the "mode du jour" when it comes down to development buzzwords, but they happen to work pretty good in distributed environments. The whole Erlang infrastructure is built around processes communicating to each other with mailboxes per process, and they to offer selective receives and timeouts in a pretty straightforward way.

Because the VM is custom built for this platform, it has some extra things other VM's do not have, like soft-realtime processing and per-process garbage collection. The VM is optimized for the actor model.

Productivity

Erlang has a bit of a quirky syntax due to it's origins (Prolog), so it takes some getting used to the difference between ending a line with a semicolon, a comma or a dot. While this might seem odd, it comes naturally after a while, but it takes some persistence.

Next to this, Erlang has pattern matching (a little bit comparable to polymorphism in OO languages, but it even goes way further then that).

They even have something like generics using behavior.

More...

IDDDtour 2013 Belgium - an immersive experience

by Tom 1. May 2013 00:36

Introduction: what & how?

"Implementing Domain Driven Design" is a book written by Vaughn Vernon, and you can consider it a practical guide to the blue book - a lot of people consider the blue book to be used as a reference, but it takes some persistence to read it -. Vaughn tried to solve exactly that problem with his book...

A little while ago, Vaughn Vernon was tweeting about how had given a free course about his book "Implementing domain driven design" while visiting Bogota, Columbia. This course was given for free to help start-ups there.

In the next few hours after this tweet, an idea emerged on twitter about a concept called the IDDDtour, where Vaughn would be teaching his book to larger classes and doing a tour through Europe, but at a fraction of the cost. As I am somebody who is more of a head first kind of guy, I decided to take ownership and figure out a way to make this a real thing...

More...

Opinion: TDD and startups - you are all wrong (or right)

by Tom 6. March 2013 00:06

Introduction

There has been a lot of buzz lately about a post of Uncle Bob Martin, who claims that skipping Test-driven design is the worst mistake you can make when in a startup. This generated a lot of yay-and-nays on the twitter sphere, with mostly black and white opinions. I think they might all be right, but miss one important distinction: you always need to formalize what you are working on...

"So what" - Miles Davis

In my opinion, you need something to drive your behavior of your app, or as you put it in the context of startups, you need something to drive your search for a market fit. So while TDD might provide you "better" code in the end, it is not the code that matters, it is the behavior of the code that is all important. TDD for a startup should help you to reason about that behavior, i.e. what exactly are you trying to achieve.

Defining in an explicit way what (and even why) you are going to do something before you do it, allows you to:

  • focus on your task
  • define scope
  • reason about it in a strategic way

If you are able to reason about what you are about to do in another way, please feel free. I can think of at least 5 ways to define what you are doing:


So, whatever comes naturally to you might be the best fit. The most important thing is making something explicit (aka "ze cunning plan"), as I have found out multiple times in the past: without a proper plan to support your vision, you are doomed to wander around in eternity, as you never have a proper definition of done and/or scope, or even priorities...

As a developer, the best fit for me is usually some kind of a bastardized combo of all the techniques mentioned above, even combined with some impact mapping or other DDD techniques...

On a sidenote: currently halfway into Vaughn's IDDD book, and this proves to be very helpfull as well, it's like Eric Evan's blue book, but written in a more accessible and pleasant way...

Conclusion

So in the end, what it all comes down to, is that you need a formal/explicit spec about what you are working on, whether that is a design doc, some unit tests or something else, does not really mather; just find out whatever fits your methods best.

Bookmark and Share

An open letter to Mr. Murphy

by Tom 23. February 2013 01:35

 

Dear Mr. Murphy,

Pssssssssssssssssssssssssssshhhhhhhhhhhhhhhhhhhhhhhhtt !!!!

... That was exactly the sound I was hearing when I got up early this Saturday morning (6.30AM'ish).

 

In the last months I have been billing on average about 9 to 10 hours per day for my customer, and those hours do not include my 30 to 60 minute lunchbreaks and my 3 to 5 hours spent on commuting when I decide not to sleep over, so you can imagine my time for doing things on the side is rather scarse at this moment.

 

During the weekends, I am usually at one/both of my son's soccer matches, or getting back on track with my family and some friends, which I do not see during the week.

 

I still have 2 books to finish and review/write a blog post about it, and have not been able to do this just yet.

 

Today is Saturday, and I need to be at my parent's by 8.00AM where we meetup to disassemble, transport and temporarily store my brother's new kitchen they will use after their renovation. This will probably take the whole day, so I decided to get up at 6.30AM, because I wanted to answer some mails today. (Knowing myself, I will probably not be any the mood for this tonight anyway, as we will probably have a night out with the "kitchen disassembling crew".)

 

So I got up at 6.30AM, ready to get started on these mails, as I heard a slightly disturbing sound... "PSSSSSSSSSSSSSSSSSSSSSSSSSSHHHHHHHHHHHHT"; a continuous hiss.

As we do not have any gas plumbing in the house, I was not exactly afraid of explosions, but it was slightly disturbing nevertheless, so I went searching for the source of the sound.

 

As I arrived in the cellar - all in my nightwear, for people with a lot of imagination -, I noticed our pression vessel from our rain water pump contained a very small dot of rust where water was streaming out at high pressure.

 

So I opened up some faucets to release the pressure, and started mobbing away, as we also store our heating pellets in our cellar - luckily I did not put them directly at the floor, otherwise the first few bags would have been ruined as well.

 

So, instead of answering my emails, I decided to get my priorities straight, and take the explicit time to thank you and send you my regards, Mr. Murphy, as you apparently also went the extra mile to surprise me with this great morning gift ....

 

Kind regards

 

Tom

Your Humble Servant


 

Bookmark and Share

Saturday night 30 min brain dump - Luck

by Tom 2. February 2013 13:34

Introduction

Sometimes you get lucky, and find a way where you can truely do the things you like in work... But why does luck always seem to be distributed unevenly, and does it always land with the same people...

Here is a message for you: it does not! You can get lucky once by accident, but getting lucky multiple times seems to be quite impossible (not considering statistical anomylies).

So I decided to write a post with some lessons learned from my personal experience...

Be more receptive to luck

Let us begin with the first quote

“If opportunity doesn't knock, build a door” - Milton Berle

Simple, is it not; the reason some people are more lucky then others, is because they are willing to see the opportunities....

I will give you 3 more quotes to tickle your motivation on changing life, work, and all other things related to carbon-based lifeforms:

“The journey of a thousand miles begins with one step.”
"If you do not change direction, you may end up where you are heading."
“When I let go of what I am, I become what I might be”

- Lao Tzu

Here is the thing: people always want something, but are afraid to get out of their current comfort zone. If you really want it: stop making excuses and just do it! Ask yourself: what is the worst thing that could happen? Usually things are not that bad, and you can almost always find a plan B...

Millions of opportunities might fly by, but people tend to always find an excuse and somehow assume the worst-case scenario will happen so they talk themselves out of it...

This brings us to the next part... More...

How your personality type affects your development

by Tom 17. November 2012 00:08

Introduction

During one of my more recent interviews I got an assesment from two different persons. While I still have no idea about the definitive outcome, the different types of questions they both asked triggered me to think about what kind of personality type they would be, so I started wondering how personality types are related to development....

First things first: MBTI

Before we can determine the effect of your personality on your development, we will start by defining MBTI, so let us begin with the wikipedia definition:

The Myers-Briggs Type Indicator (MBTI) assessment is a psychometric questionnaire designed to measure psychological preferences in how people perceive the world and make decisions.

They do this by categorizing your personality in four dimensions; your gradation in every dimension is not a boolean, but rather a range (i.e. -1 to +1).

I will describe each of the four dimensions in detail, and explain how they impact your development:

#1 Attitude: "Extraversion" versus "Intraversion" (E vs I)

Attitude is about the way evolve an idea and get inspired: some get inspired by doing and experimenting, while others get inspired by thinking about things.

  • Development by people with high "Extraversion" is driven by
    • experimenting with code
    • evolving ideas in small incremental steps by talking with other people
    • doing things right
  • Development by people with high "Intraversion" is driven by
    • an internal thought process
    • thinking ideas through before talking about it with other people
    • doing the right thing

On a sidenote, "extraversion" is not a typo; it is the way you spell this word in MBTI terms.

More...

Fallacies of the tech recruitment process

by Tom 16. November 2012 08:49

Note: I would like to thank @gbarrs for reviewing my blog post almost instantly, and also the offer of @GraemeF, @MarkRendle, @swaggerdmangene and @moldyseaswimmer to be a reviewer. Without them, there would be a lot more Dunglish in this post...

Why I like my job.

I have been hooked into computers ever since I wrote my first few lines of Basic on my mothers' brand new TRS-80 Model 3 with 64Kb of ram and 2 - yes 2 !!! - diskdrives of a whopping 178Kb. (Actually, I did not write the code, but I copied it character by character from a textbook that might have looked like this, but in my defense, I was about 7 years old).

The first program probably looked like this:

10 PRINT "HI, WHAT IS YOUR NAME?"

20 INPUT N$

30 PRINT "HELLO, ",N$

Exciting, is it not? In the five years that followed, I learned almost every in and out of this machine, where to peek and poke in memory, how to set pixels on the screen (monochrome, 128x48 resolution, imagine that), which ASCII codes to send to my dot matrix printer to switch control modes, ...

When I was about twelve years old, I had written a drawing application, complete with circles, boxes, Bresenham lines, and even the possibility to print the graphics on the (very noisy) dot matrix printer (remember those printers which had to print on chained paper?).

More...

Continuous thinking: Essay: Ease and simplicity in software architecture

by Tom 31. October 2012 10:21

Introduction

“Almost all quality improvement comes via simplification of design, manufacturing... layout, processes, and procedures.” - Tom Peters

As I was tinkering around with Erlang/OTP and some other stuff, I suddenly experienced yet another "aha-erlebnis": there is a huge difference between something that is simple and something that is easy, but a lot of people tend to miss this rather important distinction.

More...

Paycento Web Summit 2012 - Day one: Is grá liom Éire

by Tom 17. October 2012 17:59

Introduction

When Geert from Paycento asked me to join him and Pieter to Ireland for THE start-up convention in Ireland named Web Summit, I immediately agreed to join them for the following reasons:

  • Paycento is still very active, even though we do not blog about it currently.
  • Web Summit is probably the biggest conference for start-ups in Europe, so there is an interesting buzz here, with some really interesting speakers.
  • I love interacting with people I do not know yet, especially when we do share similar interests.
  • You get to see a whole new world out there, with opportunities you could not even imagine thinking about.
  • And, last but not least: "Is grá liom Éire" - that is Gaelic for "I love Ireland" - even though it has been over 10 years ago I spent a few days here, I really like the way Irish people interact and socialize.

Here is an overview of our first day!!!

More...

Live Blogging: getting started with Erlang and Nitrogen

by Tom 13. September 2012 04:22

Note

This is an experiment where I try "live blogging": I blog as I get along further in the process... Feel free to comment/tweet during the process...

 

Introduction

As I had yet another idea for a startup, I fired up Visual Studio and started implementing a small demo...

However, the main feature that would elevate my example requires a lot of interaction, and quite frankly, interaction is a pain in web apps IMO, as there is still a mental shift between frontend and backend. For this particular thing I needed the distance to be as small as possible, so I started searching and found Erlang...

I will not go into the details why this looks like a perfect match, because I would like to build an MVP first, but I can tell you that it resembles the bee's knees at this current moment to me... So how do I get started? This is a walkthrough where I will post my progress... This post will evolve as I manage to get further....

More...

About Tom

     Tom Janssens op LinkedIn    Tom Janssens op twitter   Core bvba RSS

I optimize YOUR software development for business value in a few weeks:

  • Kick-off week:
    We look at the organisational goals, next we determine the scope/budget and find a small project that adds business value pronto.
  • Implementation week(s):
    I implement the small project and familiarize with your products, people, organization culture and processes.
  • Epilogue week:
    We evaluate the small project.
    We evaluate your products, people, organization culture and processes: I pinpoint bottlenecks and improvements.
  • I have a proven track record in doing this.

    If you would like to know more or meet up, just give me a call at
    +32 478 336 376.

    More info about Tom and his company...