Why I Built Page-Logger... and How It Made Me Money

I developed a small application called page-logger for purely selfish and lazy reasons. However, it turned out to be not only a learning experience but also a source of income. In this post, I’ll walk you through the motivations behind its creation, the development process, and how it unexpectedly generated revenue.

Why I Built Page-Logger

After years of using Blogger, I switched to Jekyll hosted on GitHub. While Jekyll served me well, I missed a lightweight Google Analytics feature embedded in Blogger. This feature allowed me to track the reception of individual posts, which I found invaluable. Determined to replicate this functionality, I decided to build my own solution.

How I Built Page-Logger and What I Learned

I opted for Node.js, leveraging the Koa framework. The application essentially comprised two components:

  1. An HTTP-accessible API for posting page views.
  2. A simple site for viewing the collected data.
  3. ...
Read More

CoffeeScript - what I've should have done

The blog post I wrote yesterday was from my experience at the time. I even ended the post with a call out for better ways.

And sure enough, twitter to the rescue:

As a side, this why I hang out on twitter. There are brilliant people there that will push you towards ever better. Thanks Erwin for this.

So… what does that mean for my post yesterday… Let’s find out:

Read More

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