Let's Encrypt Let's Encrypt Intranet How to use Let's Encrypt to get certificates for internal websites?
monorepo Multirepo vs Monorepo Here's a conversion I keep hearing recently: A: Let's put all our projects in one repo. B: Why? A: Because Google and Facebook do monorepo. Whenever I hear this, I'm very tempted to show this picture. Finding the origin of this picture is left
HTTP Be wary of http/client.go Recently, I found out an interesting problem in Go. The problem can be reduced to a simple client request to a HTTP server. Suppose we have a HTTP server, which serves only one rooted path /foo/. package main import ( "io" "log&
Kubernetes Keeping configurations sane for multiple projects on Google Container Engine In my previous post, I present the easist and most secure way to get kubectl working for one project. But what about mutiple projects? Juggle mutiple projects on Google Container
Kubernetes kubectl Authentication Made Simple While working on a continuous delivery pipeline to automate deployment to Google Container Engine (GKE), I found that getting kubectl to work is very complex and convoluted, especially when it needs to be noninteractive. So I want to find out the easiest way to
ssh Speed Up SSH Recently I worked on a project where executing remote commands is very slow to start. This is expected because an SSH connection has to be established first. $ time ssh server exit ssh server exit 0.04s user 0.01s system 0% cpu 7.901
Ruby Ruby and Java Stack Level While coding for an algorithmic problem, I discovered that Ruby's stack level is much shallower than Java. This caused a recursive DFS solution written in Ruby failed due to stack level too deep (SystemStackError), while the same code written in Java passed. Whether recursion
Docker Docker Workflow In my previous posts, I demoed how to orchestrate Docker with Swarm and Kubernetes. They all assume the Docker image chenglong/simple-node is already there and ready to be deployed. But how to develop that image in the first place? How to streamline and
Docker Orchestrating Docker with Kubernetes This is my second post on Docker orchestration. In the first post, I demonstrated orchestrating Docker with Swarm, Machine, Compose and Consul. This post is to demonstrate orchestrating the same
Docker Orchestrating Docker with Swarm, Machine, Compose and Consul With multi-host networking ready for production and the announcement of Swarm 1.0, I think it's time to give Docker a serious try. This post details the steps I took to orchestrate a multi-host and multi-container app. Architecture This is a simple Node app
Gmail Gmail Sending Limit Many people use Gmail as personal emails. Companies use Google Apps for Work. Everyone is happy using it. Not until you hit its limits. I recently learnt its limits (shown below) in a hard way. I will hightlight the most restrictive constraints from the
Testing Life is Short. Run Tests in Parallel If you are doing Rails, chances are that you have RSpec and Cucumber tests. They are great tools to give you the confidence that your software is working as expected. But as project grows, you may find that your tests are getting slower and
HTTP HTTP/2 What is HTTP/2 and Why HTTP/1.1 has been serving most part of the Web since 1997. As websites get more and more sophisticated and resource intensive, it starts to show its limitations, e.g. one outstanding request per TCP connection. So
Docker Using Docker for Rails Development Why There are many use cases of Docker. I see people primarily using it for Continous Integration and deployment. But Docker is also good for development. The obvious advantages of
Nginx Let's Encrypt Nginx Update [2017 Aug 5]: Certbot has been developed by EFF and others as an easy-to-use automatic client that fetches and deploys SSL/TLS certificates. I would recommend using it. Why
Java Gradle Offline Build The Problem In a recent project, I have to do Gradle build on a CI server in a very constrained environment. The constraints are: NO Internet connection NO Gradle installed
bundler Speed up bundle install TL;DR Next time, when you need bundle install, do bundle install --jobs X, where X is the number of your machine cores. It will save you huge amount of time. Some blog suggests that setting the number of jobs to X-1 is statistically
git Less frequently used git commands From time to time, I find myself or my peers not using git correctly or efficiently. This is largely due to the fact that some git commands are less well
Mobile Full Access to Mobile Technologies Is NOT a Previlege, It's a RIGHT It's the end of 2013. I would like to share some thoughts on the new mobile trend. Several events happened in the second half of 2013: hongmi is released for RMB799 (~$132) and become extremely popular Moto G is released for $179 Honor 3C