Debugging Jest Tests in Visual Studio Code When Using WSL

Debugging Jest Tests in Visual Studio Code When Using WSL December 06, 2018

In the ideal world, investigating why a test fails should be a trivial task, but sometimes the code that is under testing is not easy to

Case Story: NordSafety - Social Approach To Safety

Case Story: NordSafety - Social Approach To Safety June 08, 2018

In 2017 and also briefly in 2018, I had the pleasure to work with NordSafety. Two projects were successfully executed and, in this article, I will

React Finland 2018 - Workshop Day

React Finland 2018 - Workshop Day April 24, 2018

This is just a quick recap of the workshop day (24.4.2018). The next two days will are conference days full of talks. You can

Adopting Prettier Into Existing Project

Adopting Prettier Into Existing Project February 25, 2018

Prettier is an opinionated code formatter for different languages (such as JavaScript and TypeScript) and style sheet files. Prettier wasn't the first code formatter, but it

The Windows Subsystem for Linux From Web Developer Perspective

The Windows Subsystem for Linux From Web Developer Perspective February 18, 2018

If a Web developer would make a switch to Windows from Linux or MacOS, the most significant thing they would miss is a proper Unix shell.

Two Key Points To Focus When Learning TypeScript

Two Key Points To Focus When Learning TypeScript January 19, 2018

I started writing TypeScript at the end of 2015. Since then I have written three medium-sized TypeScript projects. Even though TypeScript is very pleasant to learn

Year 2017 Review from Freelance Web Developer Perspective

Year 2017 Review from Freelance Web Developer Perspective December 31, 2017

It has been one year since the last review, and it is again time reflect how the year went. The way I approach life is quite

Linting Your TypeScript Project Using TSLint

Linting Your TypeScript Project Using TSLint December 07, 2017

Usage of TypeScript's powerful type system decreases specific type of bugs. Linting tools provide additional static code analysis to spot common mistakes and ensure consistency across

Recap of React Helsinki Meetup Talk

Recap of React Helsinki Meetup Talk November 10, 2017

I gave one of the talks on React Helsinki meetup on 8th of November 2017. The title of the talk wasn't very imaginative, but it was

Type System Differences in TypeScript (Structural Type System) VS C# & Java (Nominal Type System)

Type System Differences in TypeScript (Structural Type System) VS C# & Java (Nominal Type System) October 15, 2017

When a developer with C# or Java background learns TypeScript, there is a temptation to write TypeScript with the same style as C# or Java. It

Two Easy Ways to Get Started With TypeScript and React

Two Easy Ways to Get Started With TypeScript and React September 22, 2017

Setting up a build process for a modern web application can be a tedious process. Knowing your tools is important when you're going to maintain the

What Is the Use of Exclamation Mark Operator in TypeScript?

What Is the Use of Exclamation Mark Operator in TypeScript? September 08, 2017

You might have seen an exclamation mark after a variable name, for example person!.name. The language feature is called Non-null assertion operator. What is the

React Higher-Order Components (HOC) using TypeScript

React Higher-Order Components (HOC) using TypeScript August 25, 2017

Higher-order components and monad have something in common, both sound esoteric, but at least higher-order component (HOC) is easy to explain. It is a component that

TypeScript - Getting Rid of Error: X is Declared, But Never Used

TypeScript - Getting Rid of Error: X is Declared, But Never Used July 28, 2017

The problem If you have set tsconfig setting noUnusedParameters to true, the compiler will give an error when you have defined a function, but you're not

Three Ways to Provide (TypeScript) Type Definitions to Open-Source Libraries

Three Ways to Provide (TypeScript) Type Definitions to Open-Source Libraries July 22, 2017

Even though the library of type definitions is vast, the amount of JavaScript libraries is even greater. Every TypeScript developer will encounter a situation where the

What's New and Shiny In The TypeScript Community (June 2017)

What's New and Shiny In The TypeScript Community (June 2017) June 15, 2017

The TypeScript team and community have done amazing work lately. In this blog post, I'll show some of the new language features, tools, and libraries that

Different Approaches To Modeling Data With TypeScript

Different Approaches To Modeling Data With TypeScript June 02, 2017

TypeScript is a very well-planned type system that has type inference, structural subtyping, generic types, contextual typing, intersection types, literal types, union types, etc. In this

Type-safe Asynchronous Actions (Redux Thunk) Using TypeScript FSA

Type-safe Asynchronous Actions (Redux Thunk) Using TypeScript FSA May 18, 2017

If you haven't read the previous blog post (which describes FSA and the TypeScript FSA library), please read it before continuing. In this article, I cover

Migrating Ghost Blog from PostgreSQL to MySQL

Migrating Ghost Blog from PostgreSQL to MySQL May 05, 2017

I have been running my site and blog on Heroku with free PostgreSQL database. Last year, Ghost team announced that they would drop the support of

Refactor Redux Reducers Like a Pro With TypeScript

Refactor Redux Reducers Like a Pro With TypeScript May 04, 2017

TypeScript is a perfect match for React reducers because it has an intelligent type system, making refactoring much easier than it is with plain JavaScript. The

How To Be Productive While Working Remotely From Abroad

How To Be Productive While Working Remotely From Abroad April 20, 2017

Nearly two years ago, I created a blog post called Working remotely from abroad: One month in Hungary. A year ago, my wife, our dog, and

Type-safe Flux Standard Actions (FSA) in React Using TypeScript FSA

Type-safe Flux Standard Actions (FSA) in React Using TypeScript FSA March 19, 2017

TypeScript FSA (previously known as Redux TypeScript Actions) is a library that helps you define actions with types and use those actions while enjoying the compiler's

Free and Fast Document Creation and Signing Using Google Docs + Doc Variables + DocHub

Free and Fast Document Creation and Signing Using Google Docs + Doc Variables + DocHub March 07, 2017

If you are a freelancer or business owner, you probably have contracts that need signing. Each month, I write freelancing agreements and get signatures from the

Practical Guide to React and CSS Modules

Practical Guide to React and CSS Modules January 22, 2017

Web developers have spent tremendous time and effort to make reusable components. One of the problems has been CSS and its cascading nature. For example, if

Year 2016 Review from Freelance Web Developer Perspective

Year 2016 Review from Freelance Web Developer Perspective January 03, 2017

It has been one year since the last review, and it is once again a good time to reflect on the things I liked and disliked

Starting a React project at the end of the year: 2015 VS. 2016

Starting a React project at the end of the year: 2015 VS. 2016 December 10, 2016

About a year ago, team members and I were thinking about an ideal front-end stack to fulfill a client's business requirements. We ended up with a

Being a guest on the Developer on Fire podcast

Being a guest on the Developer on Fire podcast November 24, 2016

I had the pleasure of being a guest on a podcast called Developer on Fire. In each episode, a developer is interviewed, but, unlike many programming

Yarn vs. npm: Installation Time

Yarn vs. npm: Installation Time November 02, 2016

Yarn is a client for the npm registry, Node.js ecosystem for the packages. This new client will address performance, reliability, and security-related issues. Before diving

Problem Solved: Custom Checkbox not Working on Edge

Problem Solved: Custom Checkbox not Working on Edge October 16, 2016

The problem In the current project, I made a custom checkbox. The custom implementation used native control and didn't rely on any JavaScript, but for some

How to Convince People to Contribute to Style Guide Development

How to Convince People to Contribute to Style Guide Development October 11, 2016

The benefits of creating and maintaining website style guides is so clear that I try to contribute a style guide to new or existing web services

How to Get Most out of Meetups and Conferences

How to Get Most out of Meetups and Conferences September 25, 2016

Photo by Sebastiaan ter Burg, Quantified Self meetup presentation CC BY 2.0 Everyone has a slightly different goal when attending conferences and meetups. An attendee

Afterthoughts on REFRESH 2016, a Conference on Making Great Web Products

Afterthoughts on REFRESH 2016, a Conference on Making Great Web Products September 11, 2016

I had the privilege to participate in a REFRESH conference held in Tallinn, the capital city of Estonia. The conference is about creating great web products,

Specialist or Generalist?

Specialist or Generalist? September 04, 2016

Developers tend to be curious persons, and it is quite common to struggle with the thought that should you narrow down learning to a particular niche.

Find The Cause of A Bug Faster With These 3 Chrome Tips

Find The Cause of A Bug Faster With These 3 Chrome Tips August 24, 2016

I have come to a conclusion that many debugging methods and tools haven't reached a broad audience. Perhaps we consider reading a blog post or watching

Better User-Experience to the Cloud Deployment

Better User-Experience to the Cloud Deployment August 12, 2016

For quite some time, consumer cloud services have been easy to use: users don't need to think about where the files are or how to share

Stop Requiring Job Applicants To Be Passionate

Stop Requiring Job Applicants To Be Passionate August 03, 2016

I read many job ads, both international and Finnish. As a freelancer, I need to be aware of new opportunities and the kinds of expertise companies

Using ESLint as an ES2015 Learning Tool

Using ESLint as an ES2015 Learning Tool July 26, 2016

I have used various linting tools to keep code consistent across teams. A few weeks back, I started using ESLint with my website and hobby projects.

Benefits of Blogging Regularly For One Year

Benefits of Blogging Regularly For One Year June 30, 2016

When I started freelancing, I knew that I needed to improve my online presence. I created a website and started blogging. The first post was published

It Is Not Just About Having The Right Tool for The Job

It Is Not Just About Having The Right Tool for The Job June 25, 2016

After launching my email list, I received a ton of great questions. Here's one of them: I would be interested in post about technologies / tools / techniques

Seamless Software Development with Ilmari Kontulainen

Seamless Software Development with Ilmari Kontulainen June 16, 2016

Today we have the privilege of hearing the thoughts of Deveo CEO Ilmari Kontulainen. Ilmari has a lot of insights to offer about the software development

I Was Wrong About TypeScript, Here is Why

I Was Wrong About TypeScript, Here is Why June 05, 2016

When something new is announced, people have a tendency to choose sides. When TypeScript was announced, I wrongfully picked a few key concepts that didn't resonate

Using Ghost Apps to Add Custom Handlebars Helpers To Your Theme

Using Ghost Apps to Add Custom Handlebars Helpers To Your Theme May 26, 2016

Ghost blogging platform theming support gives us plenty of built-in blog and post related Handlebars helpers. There are cases where built-in helpers are not enough and

Three HTML Form Related Tips That Make Web Developers Life Easier

Three HTML Form Related Tips That Make Web Developers Life Easier May 18, 2016

I've recently learned a few things about HTML forms, which are a fundamental part of the web. We web developers spend quite a lot of time

Audiobook and Podcast Recommendations for May 2016

Audiobook and Podcast Recommendations for May 2016 May 04, 2016

I always enjoy hearing recommendations of books, videos, tv shows, etc. Now it is my time to give something back to you! I have almost completely

GraphQL and Relay with Ville Immonen

GraphQL and Relay with Ville Immonen April 26, 2016

Dear readers, I am pleased to introduce you to Ville Immonen, a co-founder of Reindex. Today we will be discussing what Reindex is, the problems it

Using automation and delegation to  bring employment advantages to freelancing

Using automation and delegation to bring employment advantages to freelancing April 18, 2016

One of the main reasons why many professionals don't want freelance is the number of responsibilities beyond practicing their craft: accounting, marketing, job-seeking, learning (without being

How does HTTPS benefit small sites such as blogs?

How does HTTPS benefit small sites such as blogs? April 11, 2016

I've never doubted that I should install an SSL/TLS certificate for a web service that I have been building for a client. Any site that

You should write unit tests every day, unless you are too busy; then, you should write them twice as often

You should write unit tests every day, unless you are too busy; then, you should write them twice as often April 05, 2016

The title of this blog post is an adaptation of an old Zen saying: You should sit in meditation for twenty minutes every day, unless you're

NPM-Gate: Seeking constructive criticism, finding joke sites and arrogance

NPM-Gate: Seeking constructive criticism, finding joke sites and arrogance March 27, 2016

If you haven't heard about so-called NPM-gate, then please read one of the summaries of the topic (Ars Technica, npm blog or Business Insider). As a

Working Remotely, In The Office, or Both?

Working Remotely, In The Office, or Both? March 22, 2016

During my career, my work environments have varied from an office with a timecard to 100% remote work. Each work environments has its own pros/cons.

Notes on learning Elixir - Part 2

Notes on learning Elixir - Part 2 March 08, 2016

Disclaimer: I have been programming for a while, but I am a complete Elixir n00b. These are my unfiltered notes while learning the Elixir language. Official

Online tools and services for Web Developers

Online tools and services for Web Developers March 03, 2016

Straight to the point blog post about online tools and services that I use either daily/weekly/monthly basis. Not all of them are about development,

Notes on learning Elixir - Part 1

Notes on learning Elixir - Part 1 February 23, 2016

Disclaimer: I have been programming for a while, but I am a complete Elixir n00b. These are my unfiltered notes while learning the Elixir language. Official

Narrowing it down

Narrowing it down February 17, 2016

A Few days back, I had lunch with a fellow freelancer who I only knew from his work and online presence. Being the first time for

What does ideal project look like?

What does ideal project look like? February 07, 2016

A good time to think about what you enjoyed and what you disliked during a project is when the project is ending. If you have the

Thoughts on avoiding Web development fatigue

Thoughts on avoiding Web development fatigue January 29, 2016

There has been a lot of discussion about people getting tired of learning new libraries/frameworks, setting up their tools, choosing technologies, negativity and developers attitude

Anders Evenrud on writing Web desktop platform with JavaScript

Anders Evenrud on writing Web desktop platform with JavaScript January 22, 2016

We have seen many libraries and frameworks written in JavaScript, but we rarely see projects like OS.js. I'll let the author, Anders Evenrud, describe the

What's coming on year 2016 on this blog

What's coming on year 2016 on this blog January 16, 2016

I have had a hectic start of the year 2016, and I had to neglect writing for two weeks. It is always a bit burdensome when

Year 2015 retrospect from freelance Web developer perspective

Year 2015 retrospect from freelance Web developer perspective January 01, 2016

Once again a year has passed and now it's a good time take little bit time to think what has happened during the year. Listing the

Immutable.js practical guide

Immutable.js practical guide December 27, 2015

In this blog post, I'll try to give a brief, practical and easy to understand introduction to Immutable.js library. Why should you use it, a

Don't make learning React more difficult than it is

Don't make learning React more difficult than it is December 18, 2015

React itself has a quite small API surface to learn, and in theory, it should be easy to grasp. Unfortunately, the learning resources are making things

Podcast & Audiobook Tips for the Curious Minds (November 2015)

Podcast & Audiobook Tips for the Curious Minds (November 2015) December 03, 2015

You're reading a monthly blog post with a listening suggestions. I listen to plenty of podcasts and thought people might be interested when I find interesting

How to keep a distraction free working environment

How to keep a distraction free working environment November 27, 2015

Let's face it, most of the offices aren't great for work that requires focus. Office workers are bombarded with interruptions and distractions. Colleagues are (rightfully) asking

Working remotely from abroad: One month in Hungary

Working remotely from abroad: One month in Hungary November 21, 2015

I had been working remotely on several projects, but it was my first time working from abroad. My homeland is Finland and this time we went

Better React linting by switching from JSHint to ESLint

Better React linting by switching from JSHint to ESLint November 12, 2015

JSHint - the JavaScript Code Quality Tool, as they call it, has served me well for past year. I enjoyed Sublime integration via SublimeLinter plugin, and

Modern hiring process and how to be part of the game

Modern hiring process and how to be part of the game November 06, 2015

On October, I gave a talk at Budapest Node.js to raise some discussion about how software developers get hired. The talk had a little bit

Podcast & Audiobook Tips for the Curious Minds (October 2015)

Podcast & Audiobook Tips for the Curious Minds (October 2015) October 30, 2015

You're reading a monthly blog post with a listening suggestions. I listen to plenty of podcasts and thought people might be interested when I find interesting

Node.js Budapest - October 2015

Node.js Budapest - October 2015 October 28, 2015

I was privileged of having an opportunity to keep a talk at Node.js Budapest meetup. I found that the Node.js community is very active

Exploring the ideas of the book "The 4-Hour Workweek"

Exploring the ideas of the book "The 4-Hour Workweek" October 23, 2015

By working faithfully eight hours a day you may eventually get to be a boss and work twelve hours a day. -Robert Frost I had been

How to get into a habit of publishing one blog post per week

How to get into a habit of publishing one blog post per week October 16, 2015

Once a week I press Publish, and I haven't had any exceptions. I have been writing this blog fairly short time (since the beginning of this

Migrating medium-sized project to Node 4

Migrating medium-sized project to Node 4 October 11, 2015

With all the confusion with io.js has been settled, and epic merge has been done, it's time to upgrade your current project. To bring a

Podcast & Audiobook Tips for the Curious Minds (September 2015)

Podcast & Audiobook Tips for the Curious Minds (September 2015) October 02, 2015

You're reading a monthly blog post with a listening suggestions. I listen to plenty of podcasts and thought people might be interested when I find interesting

Two easy methods for cloning a MongoDB database in a cloud environment

Two easy methods for cloning a MongoDB database in a cloud environment September 25, 2015

I have been using Compose.io to host my MongoDB database and quite often I need to test migration scripts against a clone of a database.

Why new employees are hired?

Why new employees are hired? September 18, 2015

Getting hired is a problem that many of us face at some point in our career. There are plenty of articles and discussions that focus on

NPM network and proxy related error

NPM network and proxy related error September 11, 2015

There is a network related error that I stumble upon quite often. The weird thing is that this occurs in a non-corporate networks such as my

How to select  a client

How to select a client September 05, 2015

As a freelancer or owner of an agency one of the biggest decision on a weekly or monthly basis is who do you want to work

Podcast & audiobook tips for the curious minds (August 2015)

Podcast & audiobook tips for the curious minds (August 2015) August 27, 2015

You're reading a monthly blog post with a listening suggestions. I listen to plenty of podcasts and thought people might be interested when I find interesting

Set up working Node addons (node-gyp) environment on Windows

Set up working Node addons (node-gyp) environment on Windows August 23, 2015

Starting to develop Node applications on Windows is much easier than it used to be. Most of the problems I encounter these days are related to

How misspelling in Colin McRae Rally 2.0 ruined my day

How misspelling in Colin McRae Rally 2.0 ruined my day August 15, 2015

I am far from being a petrol head, and even virtual driving doesn't resonate much. Colin McRae Rally 2.0 for PlayStation was an exception. Schoolmates

npm 3 will bring brighter future for Windows users

npm 3 will bring brighter future for Windows users August 07, 2015

Around 40% of the npm users are using Windows. It is a big chunk but unfortunately, there has been long-running Windows specific issues that have caused

Running your Ghost blog and Express app on Heroku

Running your Ghost blog and Express app on Heroku July 30, 2015

Running a Ghost blog as part of a website is a quite common scenario, and I was surprised when I encountered a problem when deploying to

How to use Compose.io API to dynamically create databases using NodeJS

How to use Compose.io API to dynamically create databases using NodeJS July 28, 2015

The project I'm working on has a database per client architecture. The database is created when a client registers to the service. In the first phase,

Avoiding unnecessary Gulp plugins

Avoiding unnecessary Gulp plugins July 16, 2015

There are many cases where Gulp plugins are not necessary and can cause more problems than real benefits. Let's take gulp-kss as an example. It is

Purchasing services for client work

Purchasing services for client work July 10, 2015

We (digital services providers) use a lot of different kind subscription based services in our work. Managing service subscriptions, licenses and domains is still an unsolved

Design is not a democracy

Design is not a democracy June 30, 2015

The consulting company X had decided that they need to update their brand as it was out-of-date and gave misleading impression about the company. The former

Add lesser-known lodash gems to your toolbox - Objects

Add lesser-known lodash gems to your toolbox - Objects June 24, 2015

This is a part two of lodash series. Strings Objects Removing falsey values from object I asked from the community to share some lodash/underscore tips

4-day work week - Lessons learned

4-day work week - Lessons learned June 19, 2015

It's been 1.5 years of freelancing and 4-day work weeks (30h / week). The original plan was to use the fifth day for non-billable work such

Add lesser-known lodash gems to your toolbox - Strings

Add lesser-known lodash gems to your toolbox - Strings June 04, 2015

This is a part one of lodash series. Strings Objects lodash has a lot of hidden gems and by using them you can avoid copy-pasting untested

Self-publishing AngularJS book - Q&A with author Tero Parviainen

Self-publishing AngularJS book - Q&A with author Tero Parviainen May 26, 2015

What things you should consider when planning to self-publish a tech book? How to validate is there enough interest for the topic? Very inspiring discussion with

Q&A with RiotJS author Tero Piirainen

Q&A with RiotJS author Tero Piirainen May 20, 2015

I had a pleasure to have a lunch with Mr. Tero Piirainen JavaScript expert extraordinaire. He has written popular JavaScript libraries such as RiotJS, HeadJS and

What does it cost to be a Freelancer? See real-world example

What does it cost to be a Freelancer? See real-world example May 15, 2015

Last year was my first full year as a freelancer. In this post I'm going to share with you what kind of costs I had during

Self-deception habits of the Software Developer

Self-deception habits of the Software Developer May 08, 2015

Self-deception is a process of denying or rationalizing away the relevance, significance, or importance of opposing evidence and logical argument. Once in a cafe I was

Podcasts for Web developers, designers and curious minds

Podcasts for Web developers, designers and curious minds May 02, 2015

The Web development and it's tools, libraries and best practices are constantly evolving and keeping yourself up-to-date is sometimes difficult. What I like to do is

Programmatically adding DNS entries to DNSimple using Node

Programmatically adding DNS entries to DNSimple using Node April 24, 2015

We had a case where each customer would get their own sub-domain. Let's say Nokia would be one of the clients. They would get nokia.ourapp.

Getting rid of "Terminate batch job Y/N" while developing Node application on Windows

Getting rid of "Terminate batch job Y/N" while developing Node application on Windows April 17, 2015

When you close Node application on Windows with Ctrl + C. You get a "Terminate batch job Y/N" question. The annoying part is that it doesn't

How node package deprecation works

How node package deprecation works April 10, 2015

You have probably encountered a warning message saying: "npm WARN deprecated packageX: Use packageY instead, see {link to the repository/web-site}". This warning is displayed because

Adding compiled Riot tags to your Gulp + Browserify build

Adding compiled Riot tags to your Gulp + Browserify build April 03, 2015

What are we trying to achieve? In the previous blog post (titled: Riot compiler explained) we briefly touched the topic of adding Riot tag compilation to

Collecting your sales leads using LinkedIn, Google Spreadsheets and Trello

Collecting your sales leads using LinkedIn, Google Spreadsheets and Trello March 28, 2015

Why LinkedIn -> Trello? When you're starting freelancing or any kind of business to business sales you need to get list of potential clients aka sales

Riot compiler explained

Riot compiler explained March 19, 2015

The compilation All Riot custom tags must compiled before use. The compilation step converts tag definition (HTML + JavaScript) to JavaScript code. <clock> <div

Riot custom tag by example

Riot custom tag by example March 13, 2015

Riot Riot brings custom tags to the browsers (even on IE8). This means that we can write reusable components that contain all the required structure (HTML)