Xiaoru Li's Profile Pic

Xiaoru "Leo" Li is a computer science student at Karlsruhe Institute of Technology, Germany. He loves to teach himself cool stuff like machine learning and web technologies and write about them.

Checking Node Version on Runtime

21 April, 2019

Some times we have to ask the users to update their Node version, but how do we do that programmatically?

Type Or Interface in TypeScript?

03 April, 2019

In TypeScript, we can define our own "types" with either keyword "type" or "interface". So when to choose one over the other, and what are the real differences between them? Let's explore it in this article!

ES6 Modules Explained

23 March, 2019

While building a web app, it is always important to divide our project into modularized chunks in order to reuse and share code. In this article, I will explain how to use the powerful new "modules" syntax in modern JavaScript introduced since ES6.

Kruskal's Algorithm - Step by Step

10 March, 2019

Kruskal's algorithm is an algorithm for finding minimum spanning trees - how to connect all nodes in a graph while keeping the sum of edge weights the smallest.

Setting Breakpoints for the DOM

24 February, 2019

When building a web app, sometimes we need to approach it top-down. Let's see how to do that with DOM breakpoints!

Light Type Checking With JSDoc

10 February, 2019

Want to add type checking to your JS project but don't wanna pull out the big guns like TypeScript or Flow? Use JSDoc!

6 Visual Studio Code Tricks to Boost Your Productivity

27 January, 2019

I've been using VS Code for everything from coding to taking notes for more than 2 years now, and here are 6 tricks that I cannot live without.

Distributing Python Scripts

13 January, 2019

Writing Python scripts to help your non-programmer friends automate tasks can be easy, but how are they supposed to install all the right versions of dependencies by themselves?

Dart Tips

29 December, 2018

I have been playing with the Dart language a lot recently and here are some tips which I find very useful!

Modern Web Apps with Babel and Parcel

16 December, 2018

Setting up modern JavaScript projects is much easier nowadays!

NO console.log()

02 December, 2018

Debug your JavaScript code with not-only console.log()

Accelerate Your Workflow with Git Hooks

18 November, 2018

Git hooks are customizable shell scripts that will be executed during life cycle of a Git command, here for you to accelerate your workflow!

Superpower Your React App with MobX

26 October, 2018

Why MobX? Because state management can be a hard thing to do.

Git Tricks

21 October, 2018

I will be constantly updating this post for new tricks I learnt about Git. :)

Fun with Javascript Regex

07 October, 2018

Regex, or regular expressions in its full name, can feel like some kind of scary dark witchcraft if you are not familiar with them.

Falling in Love with the Compose Key

12 August, 2018

Extend your keyboard with special characters from all over the world.

Playing with Tmux

29 July, 2018

I've been playing with Tmux recently, and find it super helpful to manage terminal sessions, especially when doing remote things.

Adding Disqus to Gatsby

10 July, 2018

The migration from Hugo to GatsbyJS continues!

A New Start of This Blog (a.k.a. Migrating to GatsbyJS)

30 June, 2018

Just migrated from Hugo to Gatsby v2 beta, and here are some thoughts on the new start of this blog!

Functors and Map

06 June, 2018

In this post, we'll be exploring what functors and map function really are in the context of functional programming!

Implementing Gradient Descent from Scratch

10 January, 2018

Gradient descent is one of the most important concepts in machine learning. In this post, I'll be explaining what gradient descent actually is, and implement it in Python from scratch.

Functions, Pure Functions, Immutability

28 November, 2017

Today, I'll be explaining some of the most important concepts in functional programming, pure functions and immutability!

Functional Programming Is Awesome

27 November, 2017

Simply better, cleaner code.