🇨🇳 FLMN kindly translated this to Chinese here.

I’ve been programming since 1999 and this year I’ve officially coded for 20+ years. I started with Basic but soon jumped into Pascal and C and then learned object oriented programming (OOP) with Delphi and C++. In 2006 I started with Java…


Any complex and flexible algorithm reacts to configs to customize software behavior. In this article we look at different types of config and when to use each. …


A tale of evolution

When the software is successful, it usually grows in size and complexity but the brain of humans behind it, doesn’t!

Adding more humans may slightly improve the situation but it has its limits. A better solution is to divide the software into logical pieces small enough for a few humans…


a person refusing a meal with a title “Risk Appetite”
image source: wikipedia

Over the past 2 decades I’ve had the chance to develop software for a wide range of businesses: robotics, insurance, telecom, online retail, fintech, medtech, media and my own startup. Regardless of the diverse range of products and technologies, in my observation there’s a symbiotic relationship:

  • Products shape the people…


I work at the Core team behind some of the top 10 most visited sites in Scandinavia (Sweden & Norway). The product itself is a white label platform to build news sites. …


I joined Schibsted back in 2016 when the relatively new Products and Technology (SPT) unit was filled with ambitious, smart and visionary people. There was a special energy in the company those days. I was happy. I learned a lot over the past 5 years. …


Using the potentials of a big company to solve some of its collaboration challenges

Large companies are usually comprised of many teams — each focusing on a subset of the problem domain.

Autonomy vs collaboration

To increase agility the company may give autonomy to the teams to decide their work process, tooling, or even defining their own scope. …


Image sourced from Pexels.com

A Array.map() is a very useful function but, unfortunately, it only works with synchronous functions. A simple workaround for using async map functions is to use Promose.all() or its more tolerant brother Promise.allSettled():

It works like this: the .map() will convert each array item to a promise, so we’ll…


A visualization of anti-growth mindset

Career ladder is a great tool for cultivating growth mindset in an organization:

  • It clarifies the promotion criteria transparently and advocates meritocracy
  • It aligns personal growth with organizational growth
  • It reduces churn by challenging long term employees
  • It sets examples of good behavior and inspires leadership

Unfortunately many companies fail…


a snapshot of the terminal showing the output of env dash dash help command

JavaScript is an interpreted language and its source code needs to be fed to some interpreter to run. If you want to run a JavaScript file using Node.js, you normally run this command:

$ node yourfile.js

By typing the name of the interpreter (node), you are explicitly telling the shell…

Alex Ewerlöf

Knowledge Worker, MSc Systems Engineering, Tech Lead, Web Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store