Category: Technology

Say hello to “Darek”

There is nothing more annoying than driving to work, spending more than half an hour trying to find a free parking space and once you get into the office you find out that office parking is almost empty, right? Okay, okay…Frankly? Lack of coffee is the worst 😛  The whole office often discussed this, who should have access (and the remote controller) to the company’s parking. With no result. After years (yes… years of discussions) I came up with an idea to try to push the button remotely… but how?


Node.js + microservices = Moleculer

If you have an enormous application that grows year by year, there will be a day when you realize that in your team there are only one, or maybe two people who understand code. So what shall you do with this knowledge? There are few possibilities:

  • Rewrite whole app like Microsoft is doing with Windows.
  • Refactor code – pay technological debt.
  • Do nothing just live with this (many companies are working like this way).

However, there is another choice…microservices. Imagine a system splitted into plenty of small apps communicating through one message broker. These small apps would be easier and faster to analyze. We, developers could focus only on logical part of application and write code instead of analyzing thousands of code lines.

Ok… We now know that microservices could be the resolution for our problems. But we have heard that this approach is difficult to design and even more difficult to implement. How can we do this? Well, we have many choices, but I would like to focus on using great framework called Moleculer.
It has its own CLI, allows to manage nodes and supports plenty of message brokers.


Decomposition of a monolithic beast

Sit down in your chair and relax. Close your eyes and think about a system that you wouldn’t like to work on. What would it be like? Let’s check how much in common it would have with the one we have “inherited”.

  • Unsupported PHP 5.6
  • Unsupported Laravel 4.2
  • jQuery snippets used all over many different HTML files produced by Blade – Laravel’s templating engine.


That would be for the beginning. This system was supposed to be fed by an API and it partially was, however, during the most active development phase over 20 tables appeared in its own database, in most cases very “loosely related”, if at all. I believe that happened to speed up delivering short term functionality, but it actually illustrates the scale of the problem.


When should I use blockchain?

Different cases require different solutions. Although blockchain’s main and still leading use case is cryptocurrencies, it gains popularity in other areas. One research points out that besides traditional banking and trading usage, blockchain applications are rarely known even among Computer Science students.


Blockchain Trilemma

Blockchain characteristics are determined by their type and have particular implications. It is not an appropriate solution to use cases that necessitate a high level of privacy. If a solution is needed for a homogeneous environment where everyone trusts each other and has full control over the flow of data, and the environment itself is not exposed to any external threats – blockchain is going to be a very slow and disturbing database.
The technology becomes relevant if dealing with a lack of trust in the network. But before analysing specific blockchain use-cases, let’s break down the problems.


Blockchain 101

In 2009 Satoshi Nakamoto released the first decentralised cryptocurrency – Bitcoin. It was the first implementation of blockchain technology.

Blockchain is mainly associated with cryptocurrency. Yet the specific blockchain type utilised for this relatively new financial use case is just a tip of an iceberg. Recent approaches incline towards enterprise usage. Employing blockchain into Supply Chain Management (SCM) enables to track product or service subsequent states in the business flow. Business partners can join the blockchain network to either read or write information to the ledger history.


Speed up docker using NFS volumes

Containers not only change the way of deploying applications but, they affect the way we develop these apps. Thanks to Docker, we can run a variety of services on our local machines. No need to worry about installing extra apps, libraries, and other dependencies.

Docker for Mac, however, is much slower than it’s on Linux. Docker server uses lots of Linux kernel-specific features, so it’s hard to port it to systems like macOS or Windows. Today’s implementation of a docker server based on virtual machines comes with poor performance if it is not tuned for specific OS.

I’m going to show you how to improve the performance of the application running on Docker For Mac by using NFS volumes.


Strangler Pattern: How to strangle your legacy system

One of the most unavoidable things in software development is software aging. Technology, standards, patterns, and hardware are getting older and changing fast. One of the developer’s tasks is to maintain and keep the software up to date in order to make software age as slow as possible. Unfortunately, it’s easier said than done. New features and lack of resources leads to neglect of the software and makes it a so-called legacy system. Do you know how to save your system from becoming a legacy? Are you aware of the effects of having a legacy system? In this article, I answer these and some more questions.


Introduction to OTP

OTP (Open Telecom Platform) is a collection of Erlang runtime system, ready-to-use components and design principles. It is used to build scalable, distributed, concurrent and fault-tolerant applications. OTP behaviours are formalized design patterns that encapsulate common patterns (think of them as contracts or interfaces in object-oriented languages). They consist of a generic part (behaviour module) and a specific part (callback module). This article will focus on two behaviours: GenServers and Supervisors. We will see how we can use them to store todos.


We use cookies to enhance your user experience. By continuing to browse the site, you are agreeing to our use of cookies.
Read more