Get started writing NodeJs with CoffeeScript - not a piece of cake

For some reason I’m from time to time drawn to different languages that compiles to JavaScript. And then I’m drawn away again. Especially nowadays with ES6 coming up many ideas and needs for CoffeeScript or TypeScript goes away.

So the other day I found myself thinking again:

Hey - CoffeeScript. That's not such a bad idea. Maybe I should try to write some.

CoffeeScript and I have a dormant but warm relationship because this little language was the one that helped me understand not only JavaScript but also got grips of functional programming.

I thought I’d write a simple little kata in Node to fresh up my CoffeeScript-fu. How hard could it be?

Well… there’s quite a lot of setup and idiosyncrasies that you need to be aware of. This post tries to summary what I learned as I got my environment up and running....

Read More

What if money was not an issue?

In Indonesia there’s an interesting development going on right now in health care. A nationwide health insurance is being rolled out. For everyone. Until now health care has been paid for privately or via private health insurances, but with the advent of BPJS (that it’s called) everyone can now afford to go to the hospital… or at least there’s fixed tariffs.

Before we continue, imagine the effort to roll this out in the world 5th biggest population… 250-270 million people. Most of which is very poor. I think this is such a great thing and I applaud the Indonesian government for doing it.

However… I work for hospitals in Indonesia. On the “other” side of things. For us this is also an opportunity since this will bring more patients to our hospitals and we get to serve those in need. But there’s another side of the story that have very...

Read More

Config Handling in Node and Heroku - with Secrets

After coding and testing a Node application, deploying it to real users becomes a priority. I’ve previously discussed how to do this quickly and easily with Heroku. However, one aspect that often causes headaches is configuration, especially for environment-specific variables like database connection strings or sensitive information.

The Configuration Object

I use a simple yet effective object to handle configurations, which I include in almost every project I deploy. Let’s dissect it:

// Configuration object var config = { local: { mode: 'local', port: 3000, mongoUrl: 'localhost:27017/myApp_Dev', user: { name: 'marcus', pass: 'koavote' } }, staging: { mode: '

      Read More

All the great teams

I reflected a little bit about the great teams I’ve had the honor to be part of. It’s just a few out of all the teams that I’ve been part of that I would call great. But they all shared some common traits.

My first ever scrum team was a great team, that I still think back on fondly. Gothenburg Brass Band was an orchestra that I had the opportunity to be part of for almost 2 years - total awesomeness. My “current” (since I don’t play with them now) band Vasa Band is another group that I hail as a great team. The prayer group we had 2006-2010 in our home was an amazing group too.

Looking back I remember these things that was common about them, in the very particular order that I remember the traits…:

Read More

How far have we come?

A few days back, I said something to my client that apparently many people on Twitter found interesting:

My client, the hospital that I’ve written about many times before, has a big project ahead. We are going to be accredited for quality in all our processes. So… there’s a lot of documentation, implementation, and training to be done.

Nobody really knows how much. We think, from hearing about other projects, that it’s about 6 months and made that our goal. But we haven’t got a clue how much work it is left for us.

Assessing Progress

So I asked them:

How far have we come?

The answer...

Read More

Review: Cucumber for Java

Imagine that you want to learn a new technology or tool. Who would you want to learn that from, and how? For me I’d want to sit down and pair program with the creator (not The Creator, but you get what I mean) of the tool, and then someone who has vast experience implementing this and finally someone who knows this tool well on my platform. Preferable all three together.

This book is exactly that. It’s an opportunity for you to learn Cucumber from Aslak Hellesøy (the creator of cucumber), Matt Wynne that has consulted and trained on the tool for a long time and Seb Rose that have build the Java Implementation.

Now, the important thing to remember about Cucumber is that it’s not about the tool. Specification by example (BDD) is first and foremost a communication and collaboration technique that doesn’t really need a...

Read More

Koa and the 'ReferenceError: Promise is not defined.'

M: “… hahaha, exactly. And speaking of RT*M, you know what I did yesterday?”

H: “No, but I like it already. Tell me more.”

M: “So I wanted to whip out a fast little Koa site. It’s sooo good for those.”

H: “Yeah, I know. You told me like a million times.”

M: “Ok… sorry. Off to the terminal I went and went through the usual steps:”

mkdir newAwesomeApp cd newAwesomeApp git init npm init npm install koa koa-route --save touch app.js 

H: “Dude, is this a screen cast or are you going to tell me something interesting already?”

M: “Well hang on for just a few seconds more. I wrote my first simple route, to verify it. And I’m glad I did.”

var app = require("koa"

      Read More

How we created the need for an emergency lane

In my last post, I discussed practices and policies around emergency lanes. Today, during my visit to my client, I realized that we, ourselves, had created the need for them. The good news is, if we created the need, we can also eliminate it.

Let me explain.

The board at my client’s hospital doesn’t resemble your typical kanban board. However, we identified another need. Although it’s in Indonesian, I’ll guide you through it. Here’s how the board looked a couple of weeks ago:

Old Board

  • The board comprises 4 lanes:
    • The top 2 lanes are for larger projects lasting up to 6 months.
    • The lower 2 lanes, labeled “Perbaikan” or “Improvements,” are for smaller tasks targeted for completion within 2 weeks.
  • Each project includes:
    • A brief project description.
    • “Untuk Besok” (Until Tomorrow) section listing tasks to be completed by the...
Read More

Things I say often: I don't care about efficiency

I’ve talked more about effectiveness vs efficiency than you all care about. The reason for this fascination might be that the word is mixed up in Swedish I guess; there’s only one word for these both concepts. Boooh… Swedish.

Because the difference is paramount.

In the excellent book the Goal Dr Goldratt puts it like this:

Productivity is meaningless unless you know what your goal is

This is the same thing. I hear many people talking about efficiency, or that we should become both effective and efficient and yes, but all means, become efficient. BUT don’t speak another word about that until we all have a shared view on what the goal is. Without a clear goal - there can be no effectiveness. And then efficiency is pointless, as Dr Goldratt said.

My favorite explanation for the difference of effectiveness and efficiency makes this very clear;

Usian Bolt...

Read More

Emergency lanes - some tips

One of the things that first made kanban known and loved was the introduction of emergency lanes. Or at least the lack of fixed scope for a sprint where sudden urgent work items was hard to handle in other methods.

Many kanban boards have an emergency lane. However often I see it abused (or being feared to be abused) and hence it will not be as useful as it could be. It’s a really great tool, both for “product owners” and the team alike. In this post I wanted to share some policies that I’ve found useful to manage emergency-lanes (or equivalent).

Read More