Cognitive Biases In Software Development

A couple of years ago, I started my first job as a programmer. On the first day, I entered the office, sat in my new chair, turned on the computer, checked out a project from the version control system and opened it in IDE. The first-ever piece of the code I saw looked like that: // TODO it works, but it's ugly, rewrite function init() { // some code } As you may already have guessed, this code remained untouched for a couple of years, until the project became obsolete and was archived and longer used.
Read more...

Flyway Migrations in Multi-Module Maven Projects

Flyway is a database migration management tool, which allows you to deliver and validate changes of the database. It’s a powerful tool with a lot of useful features, but my favorite use-case is an ability to use Flyway migrations as part of an application. You can execute migrations when application starts, having your DB updated and application deployed in one seamless process. Also, it stimulates you to store migrations code very close to code of your application — in the same project.
Read more...

Kotlin Static Analysis Tools

Kotlin did an amazing job saving and including into its scope most of all valuable Java libraries, frameworks, and tools. But there is one type of tool that can’t be easily imported and reused — static code analyzers. Java developers have implemented a lot of tools for code analysis, therefore, if you have worked with Java you might be familiar with some of the following projects: PMD, checkstyle, findbugs, spotbugs, etc.
Read more...

Number of Categories for K-Means: Elbow and Silhouette Methods

K-Means is a very common and powerful clusterization algorithm widely used in an unsupervised machine learning tasks for dividing data into categories. The only decision you have to make is the number of clusters you want your data to be divided into — k number. Sometimes you already know how many categories you need to have. It depends a lot on the type of your problem, your data, and the problems you are solving.
Read more...

Categorizing Instagram Tags with K-Means

Over the last couple of years Instagram, Facebook and many other social media have gotten rid of the chronological order in their post feed. While frustrating at first, this decision encouraged one part of social media that I like most of all: your content can be seen, discovered and rated not only by your friends and followers, but also by many other new people. To make your content discoverable you can use features such as hashtags, geolocations, tagging other people and so on.
Read more...