Yihang Ho bio photo

Yihang Ho


Twitter Github Email

All Posts


DOM Positioning Primer

We explore the intricacies of positioning DOM nodes.


Tips for Redux

Note: This post is not about what Redux is or how to use Redux. This is writtenunder the assumption that you have dec...

Blind Animation with CSS and JavaScript

TL;DR: We want to achieve this animation effect:jQuery UI calls such animation the blind effect. For the lackof a bet...

Customizing Ruby on Rails forms

The form builder is a mechanism that Rails exposes for us to customize thetemplate and behavior of HTML forms. We wil...


Introducing require_params

require_params ensures that parameters that your Rails API actions require are present.


How Percent-Encoding Works

It is one of those things that we use frequently, yet we don't know/care how it works.BackgroundCharacters like /...

Java Nested Classes: Behind the Scenes

Java supports nested classes - classes that exist in the body of other classes. As we know, when a piece of Java code...


What on Earth is Rack?

Understanding Rack and Middleware.

Rails Cross-Origin Resource Sharing

The Ruby way of solving this problem.

AngularJS modules on Google Hosted Libraries

You can access AngularJS modules (like the $route module) on Google Hosted Libraries (a.k.a. Google CDN) by replacing...

My first Pull Request

My first legitimate pull request was (finally) accepted, it is right over here.For people who are not familiar with t...


A Ruby gem that can draw Bézier curves

Spritz for Jekyll

Bringing Spritz to Jekyll

Biology and Computer Science

Another pleasant surprise from learning something new


Building Android app with Ruby

Emoji for Jekyll as a Ruby Gem

A little while ago I wrote a plugin for Jekyll that helps enabling Emoji on sites generated by Jekyll. It is really e...

Setting up Contest Management System

I spent the weekend trying to set up the Contest Management System (CMS) used during IOI 2012 and 2013 for the coming...

Linux Mint on MacBook Pro

Roughly how I did it


D-Code Bootcamp Silicon Valley - City Hall, Nathan Gold and Torsten Kolind

The 3rd of December started with a morning walk with the other D-Coders and John to the City Hall to attend a confere...

D-Code Bootcamp Silicon Valley - Rushing and Waiting

Getting from Malaysia to San Francisco across the Pacific Ocean is not an easy task.

Articulation Point and Bridge

The choking points of a graph

Emoji for Jekyll

Emoji for Jekyll

Scribble 2.0

A new iteration of Scribble

Phusion Passenger on OS X

Setting up Phusion Passenger on OS X with GCC 4.8 installed

CakePHP - JSON and XML response explained

The hows why trying to respond with JSON and XML in CakePHP

Homebrew and ClamXav

Getting Hombrew and ClamXav to work together

Data attribute with JavaScript and jQuery

Acessing data attributes with JavaScript and jQuery

Cloud IDE III - Koding

Take a look at Koding

Migrating from WordPress to Jekyll

The hows of moving from WordPress to Jekyll

Why is web development cool

My thoughts on doing web development


That famous static pages generator

Chrome Extension Development in a Nutshell

What Chrome Extension development is about


A Chrome extension that I was working on

Cloud IDE II - Nitrous.IO

Take a look at Nitrous.IO

Cloud IDE I - Introduction

Take a look a various Cloud IDEs that I've found

Scribble Beta and OpenShift

Moving Scribble to a new PaaS

How to run Rails server in the background quietly

The usual way of running Rails server can be a little noisy. Let's make it quiet.

C Strings Length

It is not as fast as you imagine

Ruby on Rails and Heroku

Serving static assets when using Rails on Heroku

Ruby on Rails

The awesome framework. Period.

Homebrew and TrueCrypt

Getting Homebrew and TrueCrypt to work together

Creating Raspberry Pi OS SD Card on OS X

The proper way that works.

My experience with Apple warranty claim

There are people who complains and people who praises.

Getting BasicTeX to work

Installing the basic LaTeX package on OS X

Add folder to the Sidebar of Finder in OS X

Go to finder, select the folder that you wanted it to appear on the sidebar.Press ⌘T.I can never remember this...

Raspberry Pi vs. Chromebook (for education use)

Two very cheap yet promising machines.

Chromebook for serious business

Chromebook is fancy. But is it suitable for serious use?

Reinstall OS X Mountain Lion (and probably other versions too)

For whatever reason that it might be, here's how to do it. Spoiler: It's easy. Easier that Microsoft Windows.

Reading Linux file system on OS X

Linux != Unix. So let's bridge the gap.