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.


Introduction to Phoenix LiveView

Phoenix LiveView is a library that allows to write interactive, real-time user interfaces with server-rendered HTML without using JavaScript. LiveView shares view functionality with standard server side rendered HTML. The difference is that LiveViews views are stateful with support of bidirectional communication between client and server. This allows to push updates to the client and reacts to client’s events. Server events are also supported.


Deploying ETL on Amazon EMR

Amazon offers a lot of cloud-based services hence getting started with AWS can be tough. Which one to use? Services usually do not have expressive names and one might get even more confused when it comes to combining multiple services.

The idea was to deploy a Spring Boot application performing ETL (extract, transform, load). Any application can be deployed using EC2. But there is one special thing: it is a Spark application. Therefore we opted for EMR.


Dependency inversion: how to mock time in tests?

Time is an integral part of our lives — the same for the applications we develop. From the software engineering perspective, time is just another dependency which we introduce to our systems. And that’s OK. The situation might start to be problematic when some parts of the system are more dependent on time. How to test this component? How to mock the time?

In this article, I’m going to show you our approach to develop and test components which depend on time. We’ll get rid of time-dependency by creating a proper abstraction and applying the dependency inversion principle. Ultimately, we’ll create a mechanism to mock time in tests. Ready?


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