Callbacks in Java and Kotlin

Quite frequently there can be a situation in any project when simply passing a value to a function (method) is not enough. For example, some action should be run asynchronously at the end of processing. Or the function (method) may operate in a different context and may not know what to do with the data passed to it. In such […]

What is a hash function?

Generally speaking, a hash function is a way of transforming data of arbitrary size into a fixed-size representation. A hash function should always produce the same result for the same given data. However, even slight changes in the data should drastically change the resulting hash value. The result of the hash function always has a fixed size, it does not […]

How does Blockchain technology work?

Blockchain has gained popularity recently. It can be relatively difficult to understand in-depth, however, fairly easy to grasp the basics. So, what is Blockchain? If you want to have a brief introduction, checkout the video below. First, it is a database. Initially, it can store arbitrary data, while infamous Bitcoin uses Blockchain as a ledger to store records of financial […]

A short guide to Scrum

Scrum – a framework for developing and sustaining complex products. developed by Ken Schwaber and Jeff Sutherland based on an iterative incremental approach has roles, events, artifacts, rules Scrum pillars Transparency (understandable to everyone) Inspection (visible progress and results) Adaptation (easily changeable based on inspection outcome) Scrum Roles Product Owner one person (not a group of people) manages Product Backlog […]

Cryptography encryption and signing

Today we are going to take a look at how to use cryptography encryption and signing in the Java programming language. Let’s start with a bit of theory first. Encryption is a process of transforming data in a form that only authorized parties should be able to interpret. Encryption is a purely mathematical process – there should be raw data […]

Creating database from scratch tutorial – part 2

In the first part of this tutorial, we started with ‘append writes’, and a ‘full read’ of the whole database in memory. No doubt it is not very efficient (the database might be quite large), and we probably need to read some smaller parts of data at a time for our business applications. In this part, we will look at […]

Creating database from scratch tutorial – part 1

In recent years, because of huge technology advancements, an average computer program shifted from mainly providing functionality, towards data processing. Most computer programs nowadays operate megabytes and gigabytes of data with some of them dealing with terabytes and petabytes. Databases also evolved significantly and became quite complex to remain efficient in processing data. However, every database (or data storage of […]

Algorithm time complexity

While interviewing people for a Software Engineer position in different countries, I’ve noticed that pretty often any question related to algorithms execution complexity (whether it is time or space complexity) is rarely being answered correctly. Truth be told, there are very rare occasions at any company when an engineer needs to develop a new (or a combination of existing) algorithm […]