Original photo by SaladDayZ published on https://www.reddit.com/r/mildlyinteresting/comments/3gmenb/this_is_what_shipping_containers_look_like/

In our company, we currently run all internal services on dockers, for example, Gitlab, YouTrack, and Jenkins. It gives is high flexibility but also produces specific issues. Today I want to talk about one of them — docker inside docker. I assume that you already know Docker, Jenkins, and Ubuntu (or other Linux), because we use them as an example.

For our CI, we decided to use Jenkins. We use the dockerized version: https://hub.docker.com/r/jenkins/jenkins/. We build multiple different projects, which require different environments. Because of that, we choose to run all tasks in separate dockers. This way, we can have…

In the last article, which you can read here, we discussed two SOLID principles: the single responsibility principle and the open-closed principle. Today we’ll take a look at three other:

  • Liskov substitution principle
  • interface segregation principle
  • dependency inversion principle

All of them will help you create a better, more readable object-oriented code. They are all about designing your code, dividing code into classes/interfaces, building abstractions. If you haven’t read the previous article I encourage you to do it first and then back here.


  • Liskov substitution principle — if you have a specific class, you should be able to replace…

What are the SOLID principles? What SOLID stands for? SOLID is an acronym from five class design principles presented by Robert C. Martin in his paper “Design Principles and Design Patterns”:

  • single responsibility principle
  • open-closed principle
  • Liskov substitution principle
  • interface segregation principle
  • dependency inversion principle

All of them will help you create a better, more readable object-oriented code. They are all about designing your code, dividing code into classes/interfaces, building abstractions. Even if they were created with some specific thing in mind, they are universal and scalable. I want to present and explain them to you. …

Web developers, testers, and ops need to run scripts or check logs on a server. They probably use docker or another virtualization tool for the local environment. In some cases, the same settings and virtualization are used in the test and production environments.

If you have access to the host, you can easily connect to docker with one of the docker commands. Let’s assume that you used an image containing bash, and your container name is “app_container”. You can use:

docker exec -it app_container bash

If you use a docker-compose, the situation will be similar. Let’s say that your service…

If you work in web development, you probably use Docker as a virtualization tool. There is also a high probability that the same images your team use locally are used in stage or production. Probably your stage/production uses HTTPS communication. In that case, you need Docker with HTTPS. Let me show you how we do it for the LAMP stack. I’ll explain to you why we do it and how we do it.

Why Docker with SSL

Like many other companies, we use Docker for a dev environment. We use it also for tests and preview for clients. It gives us the possibility to…

These days interactions and animations are everywhere on the Internet. Static content becomes less attractive, and even little transitions can change how the page is received. Most visual effects can be done with pure CSS, but still, interactions are written in javascript. What if user action affects only visualization and does not change any data? Today I’ll show you a straightforward trick and a few examples of tracking UI state without javascript.

Base concept

We’ll discuss the general idea with a simple example. In our case, we have three buttons. Each button represents color. When a user clicks on a specific color…

There are a lot of hosting providers. If you need to host a single page application or static page (for example created with GatsbyJS or gridsome), you do not need anything fancy. You just need file storage with the possibility to set a custom domain. Also if you want to make your page public you should include SSL. Today we’ll check how to do it with AWS.

Let’s assume that we set up everything on AWS. We’ll deploy vue.js single page application. We’ll use a few services:

  • S3, to host files
  • Route 53, to manage our domains
  • CloudFront for CDN…

Photo by Łukasz Pawłowski

Many companies are adopting chatbots in context of client service and in-house support. Most of these solutions are connected with some messaging platform like Facebook Messanger, Whats App, Telegram, etc. At the same time, there are great voice assistants (like Alexa, Google assistant, etc.) used privately by non-company users. Not long ago, chatbots were just another interface for some application (mostly web apps), but now they are getting their own identity, humor, knowledge base, personality. They have become more like assistants, instead of question/answer interface, which collect and present data for your system. Voice interface is more natural to human…

Photo by Łukasz Pawłowski

Code’s comments are always overlooked subject. Many times developers add them chaotically, ignore or misuse them. Bad comments can be harmful, while good one can be a very useful tool. In this article I want to summarize most important things, which I discussed with other developers in our company. I also want to present my personal approach for commenting code.


You should use comments in few situations:

  • use annotations and dock blocks to create documentation of your API
  • explain unintuitive code solutions — say why, not how
  • explain complex algorithms — mostly say why, not how. If situation required…

Łukasz Pawłowski

Web developer, tech advisor, manager, husband & father. CTO at VAO

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