{"componentChunkName":"component---src-templates-index-js","path":"/","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"id":"54f0fc9b-8880-5c7f-bf5e-402514c8bd75","excerpt":"Recently, I got a chance to build a simple chat and server chat app using Sendbird Chat API. The source code and demo are available at mw86…","frontmatter":{"title":"Some Thoughts on Building a Chat App","date":"26 May 2021","path":"/thoughts-on-chat-app","author":null,"excerpt":"Recently, I got a chance to build a simple chat and server chat app using Sendbird Chat API. Here are a few thoughts I had from reflecting on this rather technical project.","tags":["javascript","api","cloud","saas","chat"],"coverImage":null}}},{"node":{"id":"00d16b00-96f9-5db4-8fbc-39461afe269c","excerpt":"I recently started to build a Raspberry Pi cluster for self-hosted container workloads using the latest Model 4B 8GB. Though many official…","frontmatter":{"title":"Raspberry Pi and Multi-arch Docker Images","date":"22 September 2020","path":"/raspberry-pi-and-multi-arch-docker-images","author":null,"excerpt":"Using a new tool called Docker buildx, I managed to build multi-platform Docker images on my MacBook Pro powered by QEMU emulation.","tags":["arm","docker","raspberry-pi","containers"],"coverImage":null}}},{"node":{"id":"1359e37c-b4f3-561e-b4c2-d44956535f2e","excerpt":"You are reading my new personal blog built on Jamstack. Here are my experience and thoughts from building it. For my experience and…","frontmatter":{"title":"Welcome (Again) to My Blog v4 and How I Built It ","date":"28 August 2020","path":"/welcome-v4","author":null,"excerpt":"You are reading my new personal blog built on Jamstack. Here are my experience and thoughts from building it...","tags":["v4","web","developers","devops","github","gitlab","gatsby","netlify-cms","netlify","jamstack"],"coverImage":null}}},{"node":{"id":"c4500b94-569b-5334-bff8-d57614ee6187","excerpt":"It's surprisingly easy to publish my existing GitLab page to Workers site. Step 1: Test locally Just follow the tutorial Start from an…","frontmatter":{"title":"Add Cloudflare Workers Site to GitLab Pages","date":"02 October 2019","path":"/workers-site","author":null,"excerpt":"It's surprisingly easy to publish my existing GitLab page to Workers site...","tags":["gitlab","web","jekyll","cloudflare","cloudflare-workers"],"coverImage":null}}},{"node":{"id":"1741bb71-0da5-5dfe-9f28-733e56a82c5a","excerpt":"I was looking for a TCP-based application for testing  Cloudflare Spectrum stateless well known but not HTTP most importantly, fun! That's…","frontmatter":{"title":"Deploy Nyancat Server to Google Cloud using containers in 5 mins","date":"02 October 2018","path":"/nyancat-spectrum","author":null,"excerpt":"I was looking for a TCP-based application for testing  Cloudflare Spectrum...","tags":["docker","container","telnet","google-cloud"],"coverImage":null}}},{"node":{"id":"fdafbfa0-14c4-5287-b321-a224a442c4e1","excerpt":"Last year, I had some fun building a Github Page alternative with AWS CloudFormation and Travis CI. In retrospect, there was some clear…","frontmatter":{"title":"To GitLab Pages from AWS CloudFormation and Travis CI","date":"03 September 2018","path":"/gitlab-pages","author":null,"excerpt":"Last year, I had some fun building a Github Page alternative with AWS CloudFormation and Travis CI. In retrospect, there was some clear indication of over-engineering...","tags":["gitlab","web","jekyll","aws","travis-ci","cloudflare","v3"],"coverImage":null}}},{"node":{"id":"68dc2176-2e70-5c67-9011-82a7c1534090","excerpt":"I am extremely excited to announce my release (read \"graduation\") last month as part of the version 3 of Master of Computer Science from…","frontmatter":{"title":"Release Notes: My Graduation from Cornell Tech CS v3","date":"15 June 2017","path":"/cornell-tech","author":null,"excerpt":"I am extremely excited to announce my release (read \"graduation\") last month as part of the version 3 of Master of Computer Science from Cornell Tech in the New York City...","tags":["cornell-tech","cornell","master","mba","cs","nyc"],"coverImage":null}}},{"node":{"id":"f13d6f5f-f2f3-5331-9cd7-dd20632af854","excerpt":"I have been hearing about Let's Encrypt for a while, and luckily enough I have the opportunity to get my hands on it (virtually, of course…","frontmatter":{"title":"Building a simple HTTPS webpage using Let's Encrypt on Apache HTTPD ","date":"26 April 2017","path":"/letsencrypt-apache","author":null,"excerpt":"I have been hearing about [Let's Encrypt](https://letsencrypt.org/) for a while, and luckily enough I have the opportunity to get my hands on it (virtually, of course)...","tags":["web"],"coverImage":null}}},{"node":{"id":"3e858abc-e381-5fe6-bbb2-59e505d322c1","excerpt":"I have been using GitHub pages for my personal website  for a while. The GitHub Pages provides a free Jekyll-based static web hosting…","frontmatter":{"title":"Building a Self-managed Alternative to GitHub Pages","date":"26 April 2017","path":"/self-managed-gh","author":null,"excerpt":"I have been using GitHub pages for my personal website for a while. The GitHub Pages provides a free Jekyll-based static web hosting solution, and hence its popularity. However, I recently decided to build a self-managed version of this setup for the following reasons:...","tags":["web","jekyll","aws","travis-ci","cloudflare","nginx","letsencrypt"],"coverImage":null}}},{"node":{"id":"67b17257-11be-5a78-aba7-803ffe0f9b9e","excerpt":"Like many people, I started building this website to establish a web presence.\nA personal website is also a great way to learn the modern…","frontmatter":{"title":"Building a Personal Website","date":"01 February 2017","path":"/personal-website","author":null,"excerpt":"Like many people, I started building this website to establish a web presence. A personal website is also a great way learn the modern web technology.","tags":["web","v1","wordpress","github-pages","aws","bluehost","jeklyll","git"],"coverImage":null}}}]}},"pageContext":{"pageNumber":0,"humanPageNumber":1,"skip":0,"limit":10,"numberOfPages":2,"previousPagePath":"","nextPagePath":"/2"}},"staticQueryHashes":["1425477374","3128451518"]}