Just to remind ourselves of basic and common security recommendations for most of the cases.

1. Use HTTPS (and HTTP/2) whenever possible.

With services like Let’s Encrypt you don’t have an excuse anymore. It won’t affect much your performance/resources/budgets either. Don’t believe me? Have a look at a (really old now) study from Google.

2. Disable obsolete TLS v1.0/1.1 and insecure algorithms.

This might be challenging, depending on what framework/software you’re using, but you need to disable insecure protocols and use TLS 1.2/TLS 1.3 only. Some of the environment already disabled them by default (like rustls for example), but for others, you need to do it yourself.

This is one of my configs for JDK…


I’ve decided recently to give it a shot and try to do some programming in Rust. I remember those days when I used to code in C/C++ (and even on devices with 48Kb RAM), so it was a bit indeed nostalgic for me as well. Nowadays, I’m using mostly Scala, Java, Haskell.

This would be my personal experience, so all opinions are my own and subjective.

Tools

I’ve started my journey with IntelliJ IDEA Rust plugin and that was the first my mistake. Surprisingly, afterwards, I found out that there are two different versions of Rust plugin from IntelliJ. …


Catamorphism (e.g. ‘fold’) is a great concept in purely functional programming. It is a common case when you want to “fold” the whole structure into another with the initial value.

However, sometimes it might be confusing even in simple cases.

Let’s say you want to sum your list of int values (which, of course, has been already implemented as sum for you in the Scala Collection Library).

This should be easy:

List(1,2,3,4,5).foldLeft(0)( _ + _ )

Now let’s say you’d like to stop counting and computation if your sum is more than some specified max value:

val max = 5
List(1,2,3,4,5).foldLeft(0)…


Let me be clear from the beginning:

Concurrent locks generally are naughty and bad, and you should avoid them at all costs. However, sometimes you just can’t. In my experience, it is mostly for the cases when you have to implement a third-party API implementation that supposed to be reentrant, concurrent and has to manage some state and lock access to it efficiently.

Motivation

There two common ways to use concurrency in Java:

  • A high-level synchronized keyword
  • Java Concurrent API (java.util.concurrent.*)

For many cases the synchronized would be good enough, but sometimes you just need more control on locks to avoid…


If someone hasn’t heard about FizzBuzz:

Fizz buzz is a group word game for children to teach them about division.
Players take turns to count incrementally, replacing any number divisible by three with the word “fizz”, and any number divisible by five with the word “buzz”.
- Wikipedia

I intentionally took one of the simplest algorithms ever, just to talk more about Scala and surrounding its libraries, frameworks and approaches, instead of discussing a particular algorithm.

Basic

Let’s start with a straightforward (lazily computed) implementation in Scala:

Parallel

Let’s do it using Scala Parallel Collections. However, before we implement it, we…


I have the simplest tastes. I am always satisfied with the best.
Oscar Wilde

API design is a vital topic for software developers and architects. Creating software as a software engineer, even to use it internally and personally, you are also creating an API as well, at least implicitly.

However, there are surprisingly very few available books, studies and courses related to the API design in general. In case you know something outstanding, modern and inspirational in this area, let me know, please.

Of course, it is hard to ignore that API design principles are tightly dependent on used…


It should be a piece of cake for many software developers, but it always surprises me how often date/time issues and misunderstandings how to handle them in computer software occur.

So, what are the common issues?

Forgetting about the Physics of Time

It’s kind of obvious, but still, you have to keep in your mind that:

At the exact moment when you are opening your bottle to celebrate your 01 Jan, somewhere else it is still sad 31 Dec. So, at the same moment, it is 31.12 for one user and 01.01 for another one. …

Abdulla Abdurakhmanov

Software Developer & Architect

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