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 (optionally) instance

Clean inter-process communication in Electron

Published on December 29, 2018

Recently, I was working on an Electron app and I had to write a module for inter-process communication (IPC), namely between the main process ("backend") and the renderer ("browser window" or "frontend"). This is a pretty common concern for Electron developers - they often need to perform some logic in

Summer internship at UCL Surgical Robot Vision lab

Published on December 29, 2018

In the summer of 2017 I had the pleasure of spending several months as a research intern at UCL's Surgical Robot Vision (SRV) lab. I was primarily working with HoloLens, developing a system for tracking different surgical tools and displaying relevant information as holograms. Almost a year has passed since

Clearing local costmap in ROS when using PointCloud2

Published on June 16, 2018

Recently, I finished developing a simple framework for autonomous exploration of 3D environments using drones in ROS. It was my final project for Caltech's ME 134 Autonomy class. I was using the move_base navigation stack and I ran into a weird issue where my local costmap would correctly display

Emphasizing the active pane in Vim using ColorColumn

Published on May 25, 2018

Around a month ago I switched to using Vim full-time. I've already been using Vim for all of my command-line editing, but now I've enabled Vim emulation in all of the other editors I use (namely those coming from JetBrains). To keep my Vim skills versatile, my Vim configuration uses

How I got into coding

Published on January 31, 2018

I had to move from London, UK, to Pasadena, CA, USA for a year as a part of a study abroad program. Unfortunately, I couldn't take my battlestation with me so I had to bring one of my old laptops instead. While looking through my old coding projects, I found

Responsive placeholders for lazy-loading images

Published on December 26, 2017

I was adding bits and pieces to a small project of mine (I wrote about it here) 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

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. Not only that, I'd

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

Published on November 17, 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.

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, just like the one on the gif. It looked nice and was certainly fun to implement, but god was it not readable at all. I decided to fix that. Home page

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

PostgreSQL with Node.js: Migrations and schema dumps

Published on August 05, 2017

While working on the Fizzyo project for one of my summer internships I've noticed the lack of articles on database migrations and database integration testing for Node.js projects. Don't get me wrong, there are plenty of resources talking about each part separately, but you still have to do the

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. Alternative solution was to handle all the logic using JavaScript and

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. My

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. As

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. The video

HoloLens Development: First Steps

Published on June 14, 2017

As you might've found out from other posts in my blog, 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. If you have the time,

My trip to Japan in Summer 2016 (Pictures)

Published on May 06, 2017

In June of 2016 I spent 2 weeks travelling around Japan with a bunch of friends. We've covered a fair bit of southern Japan, including Hiroshima, Osaka, Kobe, Nara, Kyoto, Atami and Tokyo. It was an amazing experience and since I'm no wordsmith but I still wanted to document my

COMP207P Compilers Guidelines Part 2: Java Bytecode Optimisation

Published on April 06, 2017

As described in the previous article, during my time in UCL I had to work on several pieces of coursework related to the development of compilers. In this article I'll be expressing some thoughts and suggestions about the second coursework, the one concerned with altering Java bytecode to implement things

My Linux dotfiles

Published on March 10, 2017

I've finally gotten to customising my Linux setup and put some of my dotfiles on GitHub, including a pretty handy installation script. Check out the file in the repo linked above to see the description of the tools I used. As I'll keep updating that readme as I

Spotify playback and volume control using keyboard shortcuts on Linux

Published on February 18, 2017

Recently I've been playing around with my new Ubuntu setup (using bspwm, seen below) 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 and this

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

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. Presentation The presentation itself lasted around 15 minutes during which my team had a

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. Solution To avoid wasting your time, let's jump

Higher order functions in C

Published on September 02, 2016

It's not a secret that for almost all people attempting to learn C pointers are a grey area. I personally was struggling quite a lot understanding them but I was saved by a huge amount of amazing guides on pointer usage you can find online. That said, I still feel

Understanding two-way data binding in JS

Published on August 29, 2016

In the recent years, two-way data binding has become a very popular technique among all sorts of JavaScript frameworks and other tools, and I felt like an article about the basic concepts behind it might be useful for someone who wishes to understand how exactly two-way data binding works. In

Foxy Panda Source

Published on August 21, 2016

Source code First of all, you can find Foxy Panda source code on its GitHub page. If you're interested, there is also a repo of an older version of Foxy Panda written on Angular 2. Below you can find some more information about the history and the purpose of this

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. Naturally, after