Everything Projects Blog posts

Making i3 windows float without for_window

Published on July 13, 2019

i3 configs often include bindings to launch applications. For example, to run Konsole terminal when Super+Enter is pressed, one would add this line to their config: bindsym --release Mod4+Return exec "konsole" The standard approach to make windows flaot is to find out the window's class and

Clean inter-process communication in Electron

Published on December 29, 2018

There are many different to handle inter-process communication in Electron. I'll take about a clean, promise-based IPC approached that worked super well for me.

Summer internship at UCL Surgical Robot Vision lab

Published on June 17, 2018

Almost a year has passed since I joined SRV for a two month internship. I've since forgotten some minor things, but there are important lessons I have learned that are still with me now.

Clearing local costmap in ROS when using PointCloud2

Published on June 16, 2018

If you use ROS move_base navigation stack with a depth point cloud (to reveal obstacles), you might run into the issue of the local costmap not getting cleared, resulting in lingering "fake" obstacles. This article talks about several possible solutions.

Emphasizing the active pane in Vim using ColorColumn

Published on May 25, 2018

I've made a lot of quality-of-life adjustments to my Vim config, including colour scheme tweaks. One of such tweaks is changing the style of the active pane to make it more obvious - which is also the focus of this article.

2018 So Far: Von, Rammy, Trek*

Published on May 12, 2018

Although I didn't post anything in the last few months, I've been working on some things, including several open source projects. In this post, I'm going to tell you about a few of them: Von, Rammy and Trek*.

How I got into coding

Published on January 31, 2018

While looking through my old coding projects, I found a couple of nice images and blog posts I wrote. This sparked some memories of how I first got into coding, so here's a short article about it.

Responsive placeholders for lazy-loading images

Published on December 26, 2017

I was adding bits and pieces to a small project of mine when I came across an interesting problem. I had a bunch of images that were aligned in one row and resized using `display: flex;`, so that all of them would have the same height.

Better native logging in Node.js

Published on November 21, 2017

I often have to read through piles of logs for different programs. Levels of sophistication and approaches to logging differ from program to program, but I think everyone would agree that there is a certain bare minimum of data your logs should contain to be useful.

"Always use single quotes in JS" or how to protect yourself from XSS using SQL injections

Published on November 12, 2017

Now that I'm enjoying my time as an exchange student at Caltech, I decided to look back at some of the great things that happened to me in UCL. This particular time I'll tell you about an effective way to shield your website from various exploits: by introducing more vulnerabilities.

MyAnimeTimeline and Kuristina

Published on October 15, 2017

One day I was looking through the MyAnimeList (MAL) account of mine and I've noticed that I've specified the start and finish for every single title I've watched. Now that isn't really impressive, but noone else using MAL actually does that.

Blitz: Yet Another Static Site Generator

Published on October 15, 2017

After trying a bunch of existing static site generators, I decided that none of them were worthy of being used by me. And this, ladies and gentlemen, is precisely how Blitz was born.

Readability buff

Published on October 14, 2017

If you've ever visited this website before October 2017, you might've seen some cool animations and a dynamic grid. It looked nice and was certainly fun to implement, but god was it not readable at all. I decided to fix that.

Lost project: Auth-chan

Published on October 14, 2017

Today I've discovered another gem I've made back in August of 2015 (according to file timestamps). To give myself some closure, I'm going to immortalise Auth-chan in this blog post, and forget about her again.

Akko Music Visualisation Framework

Published on October 14, 2017

It's a life-long dream of mine to invent a robust yet accessible music visualisation framework. I've tried a bunch of times in the past using Java but the solutions were very obviously imperfect: first of all, I had no idea what I was doing, and secondly, they were written in Java.

Panoramas from my trip to Japan in 2016

Published on September 05, 2017

As you might've found out from a previous post of mine, in Summer of 2016 I spent a couple of weeks travelling around Japan. The previous post focused on the pictures I've taken with my camera, while this one has a bunch of panoramas I've taken during the trip using my phone.

PostgreSQL with Node.js: Migrations and schema dumps

Published on August 05, 2017

In this article I'll be talking about how I tackled PostgreSQL migrations and database schema, pointing out useful tools and techniques. This is less of a tutorial and more of a description of one possible approach.

Returning an array of JSON objects in PostgreSQL

Published on July 24, 2017

For my internship with Microsoft and UCL Institute of Child Health I had to work with PostgreSQL. My back-end was running on Node.js, so naturally I was interested in getting JSON formatted data out of Postgres whenever possible.

TCP client in a UWP Unity app on HoloLens

Published on July 21, 2017

If you've ever had the pleasure of implementing a TCP client that would work in both the Unity editor (for development/debugging) and UWP on HoloLens (for production) you will know how painful the whole process is. Below you can find some info on how I tackled this problem.

Automatic Node.js testing and linting using Git hooks

Published on June 29, 2017

In Summer 2017 I was working on an internship with Microsoft and UCL. I was put in charge of designing and developing the backend architecture for a reasonably big system. Continuous integration (CI) and deployment (CD) were a must, so I tried to automate as many things as possible.

PEACH Reality featured on official HoloLens homepage

Published on June 29, 2017

Today was truly an amazing day. A video about the project I worked on, PEACH Reality, was featured on the official homepage of Microsoft HoloLens. It was a very interesting journey and I'm very thankful to Microsoft for helping us out and shooting this video about the project.

HoloLens Development: First Steps

Published on June 14, 2017

I've spent quite a lot of time developing a Microsoft HoloLens application during my 2nd year in UCL. In this post I'd like to outline several things that beginner HoloLens developers might find useful.

My trip to Japan in Summer 2016 (Pictures)

Published on May 06, 2017

I spent 2 weeks travelling around Japan with a bunch of friends. It was an amazing experience and since I'm no wordsmith but I still wanted to document my trip, I ended up taking around a thousand and a half pictures of various places and events in Japan.

COMP207P Compilers Guidelines Part 2: Java Bytecode Optimisation

Published on April 06, 2017

In this article I'll be expressing some thoughts and suggestions about the second COMP207P coursework, the one concerned with altering Java bytecode to implement things like constant folding and constant propagation.

My Linux dotfiles

Published on March 10, 2017

This post is a short overview of my Linux dotfiles. It is somewhat outdated (as of May 2018).

Discord Spoiler Bot

Published on February 25, 2017

I was elected as the treasurer of UCLU Anime Society , and I was also responsible for IT in our society. We created a Discord chat for our society, and people begun requesting various features. One of them was a bot that would somehow hide spoilers, which is how Discord Spoiler Bot was born.

Spotify playback and volume control using keyboard shortcuts on Linux

Published on February 18, 2017

I've been playing around with my new Ubuntu setup and I needed to get my keyboard playback and volume controls working to use Spotify efficiently. While this topic has been covered extensively on the web, the knowledge is currently spread among multiple websites.

COMP207P Compilers Guidelines Part 1: Lexing and Parsing

Published on February 17, 2017

During my 2nd year as a computer scientist at UCL I got a chance to work on an amazing compilers coursework. It was a part of COMP207P Compilers module and together with 2 of my teammates I was faced with a challenge to develop the compiler front-end for a fictitious Z language.

Presenting to Steve Guggenheimer, Corporate VP of Microsoft

Published on February 13, 2017

On December 5th, 2016, I got a chance to present the PEACH Reality project I've been working on to Steve Guggenheimer, who is (at the time of writing) the Corporate Vice President & Chief Evangelist at Microsoft.

Hiding compiled JavaScript or CSS from GitHub diff

Published on February 04, 2017

While working on Blitz, a static site generator I'm developing, I wanted to prevent compiled JavaScript from cluttering the diffs. I was using TypeScript which was compiled into JS, so I was really only interested in the changes to TS source code.

UCL PEACH Reality with Microsoft HoloLens

Published on November 20, 2016

As a part of System Engineering modules in my 2nd year of study in UCL I've been given a chance to work with Microsoft HoloLens and I became a part of the PEACH project. In this article I'll be talking about PEACH Reality itself and the things I've done during my team working on it.

Spark: Ambient Lighting System

Published on November 10, 2016

I have recently put together a new rig, and it just so happened I had several LED strips leftover from one of my previous projects. Sadly, I couldn't get my hands on a monitor with built-in ambient lighting so I decided to build my own solution.

Reflex PHP

Published on October 30, 2016

I was thinking about an easy way to simulate various APIs, and I was looking for a reusable solution that doesn't require much setup and if possible is platform/language independent.

Higher order functions in C

Published on September 02, 2016

I feel like implementation of higher order functions in C deserves more exposure that it currently has and this article is my attempt to contribute to this cause.

Understanding two-way data binding in JS

Published on August 29, 2016

I felt like an article about the basic concepts behind two-way data binding might be useful for someone who wishes to understand how exactly two-way data binding works. In this article, I'll try to cover as much of it as possible without going too deep into the mechanics of JavaScript.

Foxy Panda Source

Published on August 21, 2016

After years of rewriting the source code of this blog from scratch, a handful of domain name changes and numerous attempts of implementing something that would even remotely resemble a decent content management system I've finally overcome my NIH syndrome and decided to stick with Ghost

Digit recognition in JavaScript

Published on August 17, 2016

I took an interest in the concepts behind neural networks and machine learning. After doing some learning I tried to apply my newly acquired knowledge.

LaTeX Bootcamp

Published on April 30, 2016

During my first year as a computer scientist at UCL I found myself using $\LaTeX$ quite a bit, and I have to be honest here - for someone with absolutely no prior knowledge in that area it wasn't an easy road and the learning curve was quite steep.

JS Gaussian Elimination

Published on March 12, 2016

While doing some coursework for MATH6301 module for uni I decided that it takes too damn long to write out basic Gaussian elimination operations. Additionally, I felt like procrastinating and doing something that will involve using gulp which I have only recently discovered.

Reddit Themes

Published on July 24, 2015

Some time around 2014 I was an avid reddit user (I mostly lurk nowadays) and I made quite a lot of themes for various subreddits. Below you can see some of the themes I have actually released. In reality, there were a bit more but I've never gotten a chance to complete them.


Published on March 21, 2015

HyperBlocks is a WYSIWYG editor for sidebar content on Reddit. Its main aim is to allow moderators to easily organise the contents of sidebars in their subreddits in a neat and well-structured way without any prior knowledge of CSS or Markdown syntax.

Dota 2 Icons

Published on January 17, 2015

I used to make various mods for Dota 2, and as you've probably guessed some of these mods were icon mods for various heroes. In this post you can see some of the icon sets I bothered to complete.

Active Visualiser

Published on January 17, 2015

Back in 2014 I decided to develop a music visualiser, and since I was mostly working with Java at the time my choice fell on this very language. Sadly, I couldn't find any decent tutorials or examples of music visualiser implementation in Java, so I decided to make one myself.


Published on April 10, 2014

Synlighter is a simple syntax highlighting plugin I developed a while ago. I used it primarily as an exercise to study regular expressions, so it is still far from being called a complete product and it only supports HTML, CSS and JS highlighting.