It's not uncommon for a normal JavaScript application to have thousands of dependencies. Once you s…
Building an online shop can be complex, and there are many factors to consider, not to mention comp…
Developing content is hard work, and it takes consistent effort to become a successful content prod…
Analytics is a big topic. What you don't know, you cannot optimize. To learn more about it, I am i…
Although React is a UI library, that doesn't mean you couldn't write full-stack applications around…
One of the tricky parts of JavaScript is dealing with asynchronous behavior. The language itself ha…
Developing your products is both exciting and challenging. There's both the business side and the d…
For me, it's always amazing how complex infrastructure it's possible to configure these days. If yo…
When developing user interfaces with React, you often create a set of basic primitives. Another opt…
It's cool to write small web applications for the sake of learning. You can set the boundaries your…
If you look into what happened during the past few years in the world of JavaScript, you can see th…
Preloading data is useful yet perhaps underused web development technique. When it comes to perform…
When you apply for a new position or a business case, often people want to see your CV (Curriculum …
Doing a paper release of a book comes with additional thrill as once you go paper, there's no going…
Developing user interfaces with React tends to require effort and often it's done at the level of c…
Developing multi-platform applications is difficult. Thankfully the advent of JavaScript has made i…
As you might know, configuring webpack isn't the most fun thing in the world and that's exactly the…
Webpack 5 has been available for a couple of weeks by now. The previous release of the book covered…
Testing is topic that comes up often in software development as it's an important part of verifying…
Setting up and maintaining a search on a static site is often a chore. You could handle indexing yo…
I've encountered many Ukrainian developers during my career and even visited the country a couple o…
Static site generation is a topic that is becoming increasingly popular due to the rise of JAMStack…
I recently received an interesting question from a reader that changed his career path and headed t…
There's a lot of excitement about machine learning and its applications. The question is, what can …
What if you could create programs without coding? If you've ever used something like Microsoft Exce…
One of the great things about being a developer is that you can literally create your own tools to …
Webpack 5 is getting near and it felt like a good time to update the book. Although it's still in b…
Serverless computing is one of those approaches that has taken the world by storm. The idea is to m…
When developing APIs, you often get questions like how to combine and control data coming from diff…
Testing mobile applications is a tough topic as you have to worry about different devices, and the …
Anything you don't measure or test, you cannot improve. The wisdom applies particularly to web as w…
Given JavaScript dominates the world of web development, it has become a good target for malicious …
As a developer, font is something you end up using every day at your work. One year ago I teamed up…
Debugging JavaScript is one of those topics where people tend to be divided into two camps - those …
Developing user interfaces can be complex as you have to think about different ways it's going to b…
If there's something that has changed during the past few years, it's the way we develop user inter…
If there's one web technology I never looked that much into, it's VPNs (Virtual Private Networks). …
What is it like to grow an IT business? At least in my experience, it's not the easiest thing to do…
Although tools like create-react-app (CRA) are great, they can at times be inflexible. They might p…
There's more than one way to code, and you'll find multiple programming styles. One aspect that's p…
I was invited to CSSCamp 2019 (17.07) and JSCamp 2019 (18-19.07) by David Pich, the main organizer,…
Often learning a new programming language like ReasonML can be an arduous process as you have to se…
I was invited to WorkerConf 2019 (27-28.06) as a speaker. I also participated a workshop and went h…
If there's one thing that transformed my life, it's the adoption of the Getting Things Done (GTD) m…
When building web applications and sites using React, you have to think carefully about the user in…
One of the developments that has began to change the way we style our applications and sites is the…
Webpack is infamous for being a bundler that's not entirely easy to configure. That's one of the ma…
I've had the chance to observe the evolution of the ReasonML ecosystem up close. For me, it seems t…
If you are dealing with microservices, you get questions like how to manage and orchestrate them. …
I was invited to typeof 2019 (27-29.03) as a speaker and a workshop instructor. It was a small-scal…
If there's one programming style I like a lot, it's functional programming. Although it's not the b…
If there's one thing developers have to deal with most of the days, it's APIs. For web developers, …
I've settled on using Emotion for styling my React applications. The API is close to styled-compone…
Often layouting a web page is an afterthought. Put a div here and there, sprinkle some CSS, and cal…
One of the unique aspects of the internet is that it makes us all equal in a strange way. What it m…
Developers spend most of their time reading and understanding code. That said, not much has changed…
When using webpack to bundle your project, it's important to keep an eye on the output. There are m…
Although state management solutions like Redux have become the standard, at least with React, there…
Managing webpack configuration can get tough especially if you try to track best practices and opti…
2018 was mostly a consulting year for me. I also did travel within Europe and discovered countries …
Usually, when you use webpack, you also have to set up its development server as well. Traditionall…
React has uses beyond application development. One of the perhaps surprising use cases is to integr…
So far design and development have been considered separate disciplines. Recently tooling has begun…
I was invited to HalfStack London 2018 as a guest as we are considering bringing the conference ser…
It is exciting to organize a conference, especially when it's the first of its kind in a region. To…
I was invited to WebCamp Zagreb as a speaker and a workshop trainer. I gave one of my webpack works…
I was invited to WebExpo 2018 as a visitor since I spoke at the conference last year. Prague is one…
It's difficult to write an application without side effects. Consider handling requests, dealing wi…
CSS is perhaps one of the most controversial parts of web development. For some, it's the favorite,…
Summer is over and I've made travel plans for the Fall. More details below. WebExpo - 21-23.09.201…
Let's say you are building a CMS or a blog with an admin interface. It won't take long until you wa…
Following the success of React Finland, we decided to organize another event this year. GraphQL Fin…
Even though the web started from content, it has transformed into an application platform. Approach…
You might be familiar with packages like Recompose that make it easier to compose components. Recom…
Summer is a great time to travel and see new places. So far I've scheduled three events for the Sum…
Tools like browserify and webpack popularized the idea of bundling. The idea is to transform your w…
Although linting a project is a good technique to adopt, it comes with a cost as you have to wait f…
Quite a bit has happened in the world of webpack. Most notably, the webpack reached version 4 recen…
In addition to writing and consulting, I do occasional training. Most often it's around my webpack …
I participated Concat 2018 at Salzburg this year. I held a four-hour webpack workshop with Tobias K…
If you develop JavaScript applications, you most likely use npm, the most famous package manager av…
State management is one of those topics that divides opinions. So far we've seen a couple of option…
One of the tricky things about writing React components meant for public consumption is making them…
I was invited to AgentConf 2018 on its second iteration about a month ago as one of the organizers …
One of the benefits of living in Vienna is that it's easy to reach central Europe and its conferenc…
One of the core features of this site is custom syntax highlighting. I had to figure out ways to de…
When you build a web application, you often have to communicate with a backend. It's not uncommon t…
Servers, servers, servers. I've written a lot of Node.js servers since I began using it. Initially,…
Developing large scale applications requires a certain amount of discipline. Sometimes it is enforc…
It was quite a year for me. You could say a life-changing one even. I visited at least ten countrie…
When you are writing applications, eventually you have to decide how to manage state. You can get f…
There are a lot of React conferences these days. React has become one of the most popular web techn…
Redux Saga is famous for being easy to test but what if it could be even more comfortable. redux-sa…
Forms are a frequent topic in web development as we saw in the earlier interview about a-plus-forms…
Although using Redux is straight-forward once you understand the approach and its nuances, after a …
As discussed in the maintenance book, typing your code can be valuable in many ways. In part, it's …
If you think about it, a lot of web development has something to do with forms. Every time you capt…
What do you do when you realize a book has become too big? You split it of course. The webpack book…
Testing is a lasting topic in software development. There are lots of tools, especially for JavaScr…
Even though React API is small, the implementation is quite sizable due to all the work it does beh…
There are a lot of React events out there these days and it seems a new one appears every week some…
Testing React components is a constant topic. You can test through solutions like Jest or Enzyme. O…
I was invited to WebExpo 2017 to discuss how I bootstrapped my business. Prague is one of the favor…
Redux took the React world by a storm when it was introduced. The simple idea provided a guideline …
I had the privilege to participate in React Next 2017 as an invited speaker. Participation gave me …
React gives a lot of freedom by default. You can choose which libraries to use to complement it. Fr…
Setting up a project can require a significant amount of effort if you want to control every single…
Since the early days of the web, people have wanted to visualize data to share with others. Even th…
Functional reactive programming allows us to think carefully about state and side effects. The ques…
Building universal web applications combining server side rendering with front-end is popular these…
Perhaps the greatest thing about React is how flexible it is. It contains some opinions but not too…
Routing is one of those classic topics that comes up again and again. HTML5 History API itself is q…
When you are using a library seriously, you will spend a lot of time with its documentation. It's o…
There's a lot of talk about universal web applications but developing them tends to be harder than …
Perhaps one of my favorite webpack performance related tricks is setting up DLLs so that you avoid …
Design is difficult as you have to come up with a set of rules to describe it – a system. You don't…
Even though I have traveled a lot this year already, it looks like more travel is in store. The tra…
Releasing new versions of npm modules is an npm publish away. But how do you make sure you don't ac…
Given JavaScript application source cannot be consumed easily through the browser "as is" just yet,…
If there's one thing that divides web developers, it's styling. A part of this has to do with the d…
There's one pain most JavaScript developers share - dependency management. More specifically, how t…
If there's one trend that has been nice to notice, it's the rise of reactive programming. You can s…
There are plenty of events out there. What is it like to organize one? I know it's hard work based …
Print on Demand services like KDP are ideal for self-publishers like me as they take a lot of pain …
Even though software development is often seen from a technical perspective, there's a softer side …
Data visualization is a big topic itself. When it comes to the web, D3 is perhaps the most well-kno…
Serialization, or the process of transforming data from a shape to another, is a common problem you…
There are times when a vanilla ` or ` doesn't cut it. What if you want to do something more complex…
It's time for another tour. This time around I'll be focusing on training. I have material specific…
Even though ES6 (ES2015) brought modules to the language, it missed one important thing - a loading…
In the beginning, there was a swamp, a hoe, and Jussi. Originally a large part of Finland was swamp…
One common way to deal with asynchronous concerns (fetching for example) in React is to push the pr…
Online tools are great for prototyping ideas and even workshops. You avoid the pain of setup while …
In this post, I will go through the biggest realizations gained in my Euro tour. I know it's a clic…
Dealing with the asynchronous code has always been a challenge in JavaScript. Callbacks are the cla…
Getting started with React can be daunting especially if you want to understand the entire setup. S…
YouTube and the web are filled with screencasts. They provide a great way to learn difficult concep…
Enough time has passed since the major release of the webpack book so it's a good time to evaluate …
If there's something that's easy, it's making mistakes while coding JavaScript. Overlook one detail…
Even though you can get far with JavaScript's native functionality, eventually you'll find yourself…
Here we go then. This is the big release I've been working towards for the past few months. Compare…
Micro-sized JavaScript libraries are a niche of their own. Often the idea is to use modern JavaScri…
You know how rockstars tour to support their albums? Who is to say a book author could not do the s…
What makes code good? How do you tell bad code from good one? Issues like this come to mind when yo…
If the previous release was a big step, this is another one. By the looks of it, the final paper ve…
Compared to the previous release this one has gained more weight. The PDF version of the book is cl…
Compared to the previous release we've proceeded a step or two closer towards paper. This time arou…
Describing what things are is an essential skill for a programmer. We might do that implicitly, but…
You might have noticed that webpack 2 reached a final release. That means it's a good time to updat…
A lot of people see isomorphic rendering as a holy grail given it gives advantages a SPAs lost comp…
New year, new chance to write. The previous release put the writing gear back on and it's time to c…
Styling is one of those topics that's under flux. My React styling chapter alone covers quite a few…
Alright, here we go again. It has been a while since the previous release and it's time for a big W…
One of the cool things about React is that it managed to pull a lot of people into the component wo…
If jQuery gave us proper control over the DOM, and React brought components to the limelight, what'…
It's almost funny how far a simple idea can fly sometimes. When writing my first book, I ran into t…
Comparing different JavaScript projects is surprisingly tough. This is a problem encountered by man…
Sometimes small is beautiful. Juha Lindstedt's FRZR, a 4kB view library, was a nice example of that…
If you ask multiple React developers their styling approaches, you will also get multiple different…
I have chosen one approach when it comes to teaching JavaScript and related topics. Books are just …
What's more fun than making applications with React? Making games of course! I remember coding Pong…
If there's one thing that has set React community apart, it's the focus on developer experience (DX…
Writing a little HTML table isn't particularly hard. It all gets more complex when you need logic l…
If you have written a web application or site, you have had to deal with various assets like images…
It's interesting how JavaScript development proceeds in cycles. While a lot of people might be happ…
Testing is a complicated topic. Just peppering your code with unit tests isn't often enough. You'll…
You might have heard about Mostly Adequate Guide to Functional Programming (in JavaScript) by Brian…
Given JavaScript is loosely typed, it can be amazingly productive language for prototyping. The pro…
When developing front-ends, handling asynchronous behavior is always bit of a challenge. Yassine El…
If you have been using React, you have used one implementation of virtual DOM perhaps without think…
Compared to the previous release this is a conservative release. There are certain bug fixes and co…
As I lamented earlier this year, it's increasingly difficult to find npm packages. One way to descr…
It is tedious and boring to do the same thing over and over. That's where generator tools come in a…
It has been a while since the previous release and a lot has happened. In addition to ramping up my…
Builder by Formidable Labs is one of those projects tackling the boilerplate issue. It is a project…
As I've been working towards splitting the first book, I realized I must do one more release of thi…
Boilerplate code is perhaps one of the leading causes of JavaScript fatigue. You often have to go t…
npm alone has more than three thousand JavaScript boilerplates. Often it's easier to maintain your …
One of the challenges of being a web developer is keeping up with the world. The field moves ahead …
Compared to the first release a couple of weeks ago, this version has matured quite a bit. I've bee…
Often when you pick up a JavaScript library it's going to be a little chunky - tens, or even hundre…
It has been a while since the previous release and quite a bit has happened. As you might have noti…
Even though I've spent a lot of time with web development, I never really delved into the world of …
I'm currently in process of splitting up the big book (SurviveJS - Webpack and React). The split al…
Given there's a lot going on in the React ecosystem, it can be difficult to keep up. Jeff Winkler m…
More often than not, you are going to need a back-end for your application. Particularly RESTful AP…
There is always some level of tension between getting things done and learning new technologies. A …
People have been developing style guides for their sites and applications for quite a while. They d…
When I started this project roughly a year ago I had no idea how rewarding and demanding one it wou…
The previous release candidate prompted a nice amount of feedback. I've taken that into account in …
There has been talk of JavaScript fatigue. It's true the field is progressing fast. And as you move…
When it comes to testing, often you assert certain truths. At the very least you might have simple…
If the previous release candidate had few changes, this one is the opposite. I consider this good n…
Not a lot has happened since the previous release candidate. The biggest change has to do with a li…
Since the beta was launched, I've been working on remaining improvements. This has mostly meant tun…
Performing big changes to a codebase is always a little daunting. Doing each change by hand is time…
I know the common wisdom is that you shouldn't write technical books. It's a difficult way to earn …
The long awaited 2.0 is getting very close. babel-plugin-react-transform reached version 2.0 last W…
I remember, when a few years ago a friend asked me what JavaScript game engine to use. As a result,…
This is perhaps the last release before the long awaited 2.0. Alt reached version 0.18. As a result…
It is amazing what a great year this turned out to be. I launched this site around July. Since then…
I discussed my React component boilerplate earlier on. It is focused and deals only with the fronte…
It's time for another maintenance release with minor tweaks here and there. Probably the biggest ch…
When people ask about what routing solution to use with React, they often get pointed at react-rout…
You could say a lot has happened since the previous release. React 0.14 came out mere hours after i…
I remember running into Baobab through Christian Alfoni's post about it. In short, it's a library t…
If you try searching GitHub for React boilerplates, you'll find over thousand results. Nothing is h…
Bootstrap is easily one of the most popular CSS frameworks out there. Beyond grids and basic layout…
Compared to 1.8.0, 1.9.0 can be seen as a more conservative release. There are plenty of smaller fi…
I ran into Christian Alfoni through his original blog early this year (2015). He had written a nice…
It's always impressive when people take an idea and turn it into a concrete service. Andrew Ray did…
If there's one thing that has been bubbling below for a couple of years now, it must be reactive pr…
I remember seeing these strange webpack.config.js files in JavaScript projects for a long time. I d…
We have once more new chapters in the book. I'm going to try a new model with these. For now the fu…
Technological progress is both exhilarating and terrifying thing. And by the looks of it, it just k…
I've written about book publishing earlier at my personal blog. It is an interesting yet difficult …
Onwards we go. v1.7.5 can be characterized as a refinement release. I went through "React and Flux"…
As React deals only with the view layer you will often have to complement it with something else. F…
I skipped doing a public post for v1.6 as I was too tired (berry season is taxing). Now I'm going t…
As an author I like to keep an eye on the market. You have to know who you are against after all! I…
Compared to the previous tagged release (v1.1.0, 10th of July) this new one (v1.5.0) is a monster. …
If you had to describe my approach to web design in one word the word would be scrappy. I rather get…
In my previous post I discussed some of the difficulties of related to technical publishing. I also …
If there's one thing technical authors have in common, it's that they all want to help other people.…
Given I'm a first time author I've done my fair share of mistakes with SurviveJS - Webpack and React…