Hello there!

Welcome to my blog! My name is Tim and I'm a computer science student at University College London and California Institute of Technology. I mostly write about my studies and the projects I work on. Check out the About section for more info.

All
 

MyAnimeTimeline and Kuristina

This article has been sitting in my drafts for a while now, I decided to add some minor details and publish it. Apologies if it might seem incomplete.

Blitz: Yet Another Static Site Generator

A small disclaimer: I was planning to write this article for a long time now, and somewhere between now and the time I released Blitz I've realised that this project was doomed from the start. Initially, this post was going to be about me telling you how cool Blitz is...

Readability buff

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.

Lost project: Auth-chan

Before I realised I should probably make the source code of my projects public (instead of just dumping tens of hours into them and forgetting about them), I made a bunch of cool things that I've never shared with anyone.

Akko Music Visualisation Framework

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 (ActiveVisualiser, Envision) but the solutions were very obviously imperfect: first of all, I had no idea what I was doing, and secondly, they were...

Panoramas from my trip to Japan in 2016

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

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

Returning an array of JSON objects in PostgreSQL

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

TCP client in a UWP Unity app on HoloLens

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

Automatic Node.js testing and linting using Git hooks

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

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

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)

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

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

I've finally gotten to customising my Linux setup and put some of my dotfiles on GitHub, including a pretty handy installation script (gave up the installation script in favour of yadm). Check out the README.md file in the repo linked above to see the description of the tools I used.

Discord Spoiler Bot

I was elected as the treasurer of UCLU Anime Society 2016/17, and since I was a computer science student I was also responsible for IT in our society. Half way into the academic year we created a Discord chat for our society, and people begun requesting various features. One of...

Spotify playback and volume control using keyboard shortcuts on Linux

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

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

Useful Links

I tend to go through quite a lot of various programming articles every day and once in a while I find something that I really want to share with the world, or at least save it for future reference. This page will serve said purpose by storing the links to...

Presenting to Steve Guggenheimer, Corporate VP of Microsoft

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

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

As a part of COMP204P/COMP205P 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, namely the Reality group. In this article I'll be talking about PEACH Reality itself and...

Spark: Ambient Lighting System

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. This was the core...

Reflex PHP

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. The primary application would be in development of apps that rely on some API that has not been made available...

Higher order functions in C

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

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

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 website, as...

Digit recognition in JavaScript

During the summer of 2016 I took an interest in the concepts behind neural networks and machine learning and after doing researching I decided to apply my newly acquired knowledge. Recently I've begun working with TypeScript quite a lot and decided to stick with it as my primary language of...

LaTeX Bootcamp

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

JS Gaussian Elimination

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. The result was this gaussian elimination visualiser...

Reddit Themes

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

HyperBlocks

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. You find a video of HyperBlocks editor in...

Dota 2 Icons

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. I no longer mod Dota 2 so I have no idea...

Active Visualiser

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.

Synlighter

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. Sadly, I'm no longer developing it so...