• Introducing Windows Terminal

      We are beyond excited to announce Windows Terminal! Windows Terminal is a new, modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL.

      Windows Terminal will be delivered via the Microsoft Store in Windows 10 and will be updated regularly, ensuring you are always up to date and able to enjoy the newest features and latest improvements with minimum effort.

      Read more →
    • How to make possible micro-payments in your app

      This week I spent coding my very first public pet-app based on Telegram chat bot which acts as a Bitcoin wallet and allows to send and receive tips between Telegram users and other so-called “Lightning Apps”. I assume that you are familiar with Bitcoin & Telegram in general, i’ll try to post short and without deep jump into details. More resources about Bitcoin can be found here and Telegram is simply an instant messenger that allows you to create your custom apps (chat-bots) using their platform.

      What are the key points of such app?

      • Allows to rate other users ideas and answers with real value instead of
        ‘virtual likes’. This brings online conversation to completely new level
      • Real example of working micro-payment app which can act with other entities
        over internet using open protocol
      • All the modules are open-source projects and can be easy re-used and adjusted
        for your own project. App does not relay on third-party commercial services.
        Even it falls under e-commerce field, which is currently almost closed, the app
        is based on open solutions.

      What are the use-cases?

      something like this…

      Read more →
    • Indexes in PostgreSQL — 8 (RUM)

      • Translation
      We have already discussed PostgreSQL indexing engine, the interface of access methods, and main access methods, such as: hash indexes, B-trees, GiST, SP-GiST, and GIN. In this article, we will watch how gin turns into rum.


      Although the authors claim that gin is a powerful genie, the theme of drinks has eventually won: next-generation GIN has been called RUM.

      This access method expands the concept that underlies GIN and enables us to perform full-text search even faster. In this series of articles, this is the only method that is not included in a standard PostgreSQL delivery and is an external extension. Several installation options are available for it:

      • Take «yum» or «apt» package from the PGDG repository. For example, if you installed PostgreSQL from «postgresql-10» package, also install «postgresql-10-rum».
      • Build from source code on github and install on your own (the instruction is there as well).
      • Use as a part of Postgres Pro Enterprise (or at least read the documentation from there).

      Limitations of GIN

      What limitations of GIN does RUM enable us to transcend?

      First, «tsvector» data type contains not only lexemes, but also information on their positions inside the document. As we observed last time, GIN index does not store this information. For this reason, operations to search for phrases, which appeared in version 9.6, are supported by GIN index inefficiently and have to access the original data for recheck.

      Second, search systems usually return the results sorted by relevance (whatever that means). We can use ranking functions «ts_rank» and «ts_rank_cd» to this end, but they have to be computed for each row of the result, which is certainly slow.

      To a first approximation, RUM access method can be considered as GIN that additionally stores position information and can return the results in a needed order (like GiST can return nearest neighbors). Let's move step by step.
      Read more →
    • Even more secret Telegrams

        We used to think of Telegram as a reliable and secure transmission medium for messages of any sort. But under the hood, it has a rather common combination of a- and symmetric encryptions. Where's fun in that? And anyway, why would anyone trust their messages to the third-party?
        Spy vs Spy by Antonio Prohías
        TL;DR — inventing a private covert channel over users blocking each other.

        Read more →
      • Build tools in machine learning projects, an overview

          I was wondering about machine learning/data science project structure/workflow and was reading different opinions on the subject. And when people start to talk about workflow they want their workflows to be reproducible. There are a lot of posts out there that suggest to use make for keeping workflow reproducible. Although make is very stable and widely-used I personally like cross-platform solutions. It is 2019 after all, not 1977. One can argue that make itself is cross-platform, but in reality you will have troubles and will spend time on fixing your tool rather than on doing the actual work. So I decided to have a look around and to check out what other tools are available. Yes, I decided to spend some time on tools.


          This post is more an invitation for a dialogue rather than a tutorial. Perhaps your solution is perfect. If it is then it will be interesting to hear about it.

          In this post I will use a small Python project and will do the same automation tasks with different systems:

          There will be a comparison table in the end of the post.
          Read more →