Eric Hripko
Software Engineer
Redev Ltd
University of Leeds
Leeds, UK
on in Antlr4

Writing parsers: the right way

At least once in your coding adventures you will land on writing your own parser. Whether it is to read a custom text format or interpret a custom language, the ultimate structure and solution will likely be the same. You will need to create a module that takes strings as input and produces meaningful data structures out of it. Let’s see what the best approach to this task is by taking on a parsing problem on a simple language and ‘evolving’ a solution of our own.

on in Docker

Accelerating Docker in Gitlab CI

One thing you may notice when building Docker is that builds may take quite a long time. This is especially true when Docker is used in CI/CD scenario, as it often results in no image cache being present (since a different CI worker is chosen on each build). Below you can see the typical time it takes to build a Gitlab pipeline without any caching involved.

on in Docker

Containerising Jekyll website

I am a big fan of Docker as the tool to create predictable development, CI and production environments. The ability to build and/or run pretty much any software with just Docker installed is stunning and outstandingly useful. This is why I utilise Docker for my private server to run all the required services. In this blog post we will look at how I containerised this blog: applying Docker for both building and execution.

on in Docker

Upgrading Docker on Ubuntu

For one of my projects (this blog actually!), I needed to upgrade the Docker engine running on my server. To be exact, my provider Scaleway unfortunately only offers image for Docker 1.12.2, which is extremely outdated in Docker terms.
Choosing image with Scaleway provider

on in Azure

'On-premise' Azure Storage

Recently I needed to extend one of our products with an abstract implementation of file system access. Specifically, we needed to be able to access files and directories in both Windows and Azure Blob Storage. After looking for something suiting our needs online, I could not find anything but System.IO.Abstractions. However, it seemed like a bit of an overkill to use it for such a small subset of operations. So, I wrote a module from scratch to ensure that it’s both lightweight and fulfils all the requirements given. Later, I have used the module to implement document synchronisation between different client workstations based on Microsoft SyncFramework.

on in Android

Breaking an Android app to fix it

I planned to go to a gym today - I packed, prepared and hurried to my bus stop. However, when I tried to open First mTicket app, I was greeted with the following morbid screen. After trying all possible combinations of device reboots and application force stops, I faced reality - I am not getting on a bus today. As customer service in First does not work over weekend, I was basically stuck without transport till Monday evening in the best case. Buying daily/weekly tickets is unfortunately not an option for me now. So, given a lot of free time that I got from a night without gym - I sat down determined to figure out why the app keeps crashing on the startup.