41554 blogs · [ { "id": "01a0c506-cd07-728d-a47a-0d707825dbeb", "title": "Soju IRC bouncer auth with LDAP (LLDAP + PAM)", "url": "https://dchua.com/posts/2026-09-18-soju-irc-bouncer-auth-with-ldap/", "published_at": "2026-09-18T05:59:26+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b84d2b740", "title": "The Problem About NAT MASQUERADE", "url": "https://dchua.com/posts/2026-08-16-the-problem-about-nat/", "published_at": "2026-08-16T02:39:12+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b84ed639a", "title": "I am (multi)-home!", "url": "https://dchua.com/posts/2026-08-15-i-am-multi-home/", "published_at": "2026-08-15T13:58:01+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b84f874f6", "title": "Keep the Streak", "url": "https://dchua.com/posts/2026-08-04-keep-the-streak/", "published_at": "2026-08-04T04:38:57+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b85e7d99f", "title": "What is my life's work?", "url": "https://dchua.com/posts/2026-07-31-what-is-my-lifes-work/", "published_at": "2026-07-31T10:00:08+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b86377dc4", "title": "Its the Rosuvastatins to the rescue!", "url": "https://dchua.com/posts/2026-07-28-its-the-rosuvastatins/", "published_at": "2026-07-28T15:22:36+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b86bebd8c", "title": "Publishing your Obsidian Vault with Quartz and Fyra", "url": "https://dchua.com/posts/2026-06-14-publishing-your-obsidian-vault-with-quartz-and-fyra/", "published_at": "2026-06-14T05:20:06+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b873e8d07", "title": "Simplifying Email for New Domains With Mailproxy", "url": "https://dchua.com/posts/2026-03-07-simplifying-email-for-new-domains-with-mailproxy/", "published_at": "2026-03-07T01:30:31+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b87c6d4ed", "title": "How I Finally Learnt To Summon Media Players", "url": "https://dchua.com/posts/2026-02-28-how-i-finally-learnt-to-summon-media-players/", "published_at": "2026-02-28T02:06:05+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8814eb13", "title": "Silverstone FLP02", "url": "https://dchua.com/posts/2025-10-29-silverstone-flp02/", "published_at": "2025-10-25T13:27:18+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b889b353d", "title": "Seasonic Focus GX 1000 PSU", "url": "https://dchua.com/posts/2025-09-21-seasonic-focus-gx-1000/", "published_at": "2025-09-21T06:26:11+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b88b07e72", "title": "How We Eliminated DNS Downtime with Systemd Socket Activation", "url": "https://dchua.com/posts/2025-07-25-zero-downtime-with-sockets/", "published_at": "2025-07-25T11:22:41+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b898c14cb", "title": "Used Datacenter SSDs - Better Value Than You Think", "url": "https://dchua.com/posts/2025-06-20-used-datacenter-ssds-better-value-than-you-think/", "published_at": "2025-06-20T15:24:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b899b2c9f", "title": "Replacing a new proxmox boot disk on ZFS", "url": "https://dchua.com/posts/2025-06-15-replacing-a-new-proxmox-boot-disk-on-zfs/", "published_at": "2025-06-15T20:16:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8a721eba", "title": "Dell iDRAC IP Recovery: Network Packet Capture Method", "url": "https://dchua.com/posts/2025-06-10-dell-idrac-ip-recovery-network-packet-capture-method/", "published_at": "2025-06-10T14:22:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8ad85466", "title": "How I got DecapCMS and Hugo Working", "url": "https://dchua.com/posts/2025-05-14-how-i-got-decapcms-and-hugo-working/", "published_at": "2025-05-14T17:12:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8b7df0ca", "title": "AWS SNS Webhooks: Stop fighting text/plain and use application/json instead", "url": "https://dchua.com/posts/2025-04-09-aws-sns-webhooks-stop-fighting-text-plain-and-use-application-json-instead/", "published_at": "2025-04-09T04:32:12+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8b9820ba", "title": "How I received notifications when users signup to our private beta on Relaye", "url": "https://dchua.com/posts/2025-04-07-how-i-received-notifications-when-users-signup-to-the-private-beta-on-relaye/", "published_at": "2025-04-07T02:36:02+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8c6226cb", "title": "My Notes from dealing with Email & SMTP", "url": "https://dchua.com/posts/2025-03-21-my-notes-from-dealing-with-email-smtp/", "published_at": "2025-03-21T07:06:14+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8c64724b", "title": "How I configured TrueNAS to send alerts to Telegram and Discord", "url": "https://dchua.com/posts/2025-01-16-how-i-configured-truenas-to-send-alerts-to-telegram-and-discord/", "published_at": "2025-01-16T03:33:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8cfb9bc4", "title": "Hyatt Regency Wujiaochang (五角场) Shanghai Hotel Review", "url": "https://dchua.com/posts/2024-12-22-hyatt-regency-wujiaochang-shanghai-review/", "published_at": "2024-12-22T01:00:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8d16917d", "title": "The Top 5 gameserver ping tools might be fake", "url": "https://dchua.com/posts/2024-12-02-the-top-5-gameserver-ping-tools-might-be-fake/", "published_at": "2024-12-02T02:48:08+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8dbc74bb", "title": "Retrying GRPC Stream Pattern in Golang", "url": "https://dchua.com/posts/2024-11-25-retry-grpc-pattern/", "published_at": "2024-11-25T00:51:19+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8ea524c6", "title": "Migrating User from Cpanel to Directadmin", "url": "https://dchua.com/posts/2024-10-15-migrating-user-from-cpanel-to-directadmin/", "published_at": "2024-10-15T02:35:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b8f85f041", "title": "Upgrading your Kubernetes Cluster before v1.24", "url": "https://dchua.com/posts/2024-09-29-upgrading-your-kubernetes-cluster-before-v1.24/", "published_at": "2024-09-29T14:45:59+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b905faed1", "title": "Disabling Systemd Service from Logging to Syslog", "url": "https://dchua.com/posts/2024-08-26-disabling-systemd-service-from-logging-to-syslog/", "published_at": "2024-08-26T02:33:26+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b911c21b9", "title": "Fixing Postgresql Replication Checkpoint Wrong Magic 0 Error", "url": "https://dchua.com/posts/2024-08-01-fixing-postgresql-replication-checkpoint-wrong-magic-0-error/", "published_at": "2024-08-01T02:36:51+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b920fab59", "title": "Weekly Changelog for July 2024 Week 30", "url": "https://dchua.com/posts/2024-07-29-weekly-changelog-jul-w30/", "published_at": "2024-07-29T04:15:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b92cde608", "title": "Weekly Changelog for July 2024 Week 29", "url": "https://dchua.com/posts/2024-07-22-weekly-changelog-jul-w29/", "published_at": "2024-07-22T04:15:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b937eee6b", "title": "Weekly Changelog for July 2024 Week 28", "url": "https://dchua.com/posts/2024-07-15-weekly-changelog-jul-w28/", "published_at": "2024-07-15T04:15:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b941a89dd", "title": "How I used my pinging service to figure out if I have a latency problem", "url": "https://dchua.com/posts/2024-07-10-how-i-used-my-pinging-service-to-figure-out-if-i-have-a-latency-problem/", "published_at": "2024-07-10T06:42:25+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b94f3479a", "title": "Weekly Changelog for June 2024 Week 27", "url": "https://dchua.com/posts/2024-07-08-weekly-changelog-jun-w27/", "published_at": "2024-07-08T02:15:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b952bac59", "title": "Setting up Grafana Image Renderer", "url": "https://dchua.com/posts/2024-07-07-setting-up-grafana-image-renderer/", "published_at": "2024-07-07T04:11:31+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b95c451b6", "title": "Weekly Changelog for June 2024 Week 26", "url": "https://dchua.com/posts/2024-07-01-weekly-changelog-jun-w26/", "published_at": "2024-07-01T02:15:44+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b95d31a3b", "title": "A Wakeup Call about Online Privacy", "url": "https://dchua.com/posts/2024-05-29-a-wakeup-call-about-online-privacy/", "published_at": "2024-05-29T02:34:55+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b96881522", "title": "OAuth2 to Webhooks", "url": "https://dchua.com/posts/2024-05-27-oauth2_to_webhooks/", "published_at": "2024-05-27T14:41:57+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9702e224", "title": "So long ICQ and thanks for all the fish", "url": "https://dchua.com/posts/2024-05-25-so-long-icq-and-thanks-for-all-the-fish/", "published_at": "2024-05-25T02:25:10+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b97c4271d", "title": "Making emojis work with vim", "url": "https://dchua.com/posts/2024-05-24-making-emojis-work-with-vim/", "published_at": "2024-05-24T00:28:26+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b97ff5cd0", "title": "Hello Again!", "url": "https://dchua.com/posts/2024-05-22-hello-again/", "published_at": "2024-05-22T03:56:26+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b98503d1f", "title": "Diagnosing too many open files", "url": "https://dchua.com/posts/2023-09-08-diagnosing-too-many-open-files/", "published_at": "2023-09-08T02:43:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b98a9cb2a", "title": "Capturing Groups in Sed", "url": "https://dchua.com/posts/2021-09-19-capturing-groups-in-sed/", "published_at": "2021-09-19T07:44:01+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9979e02c", "title": "About", "url": "https://dchua.com/about/", "published_at": "2021-09-19T01:59:04+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b99b92d7d", "title": "Blogroll", "url": "https://dchua.com/blogroll/", "published_at": "2021-09-19T01:59:04+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9a71d0dc", "title": "Sending your Structs across the wire (tcp connection)", "url": "https://dchua.com/posts/2017-06-23-sending-your-structs-across-the-wire/", "published_at": "2017-06-28T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9b151007", "title": "The Signal Pattern", "url": "https://dchua.com/posts/2017-06-28-the-signal-pattern/", "published_at": "2017-06-28T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9bcd4bbc", "title": "Using S2i (source-to-image) like buildpacks to deploy apps", "url": "https://dchua.com/posts/2017-06-21-using-s2i-like-buildpacks-to-deploy-apps/", "published_at": "2017-06-21T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9c8dc1e0", "title": "Load env variables from ConfigMaps and Secrets upon Pod boot", "url": "https://dchua.com/posts/2017-04-21-load-env-variables-from-configmaps-and-secrets-upon-pod-boot/", "published_at": "2017-04-21T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9ccb117b", "title": "How to access unexported embedded structs within composite literals in Golang", "url": "https://dchua.com/posts/2017-04-18-how-to-access-unexported-embedded-structs-within-composite-literals-in-golang/", "published_at": "2017-04-18T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9d00f369", "title": "Forwarding Vault audit logs to a remote Syslog server (like Graylog)", "url": "https://dchua.com/posts/2017-03-06-forwarding-vault-audit-logs-to-a-remote-syslog-server/", "published_at": "2017-03-06T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9da3374d", "title": "Alerting with Prometheus and AlertManager", "url": "https://dchua.com/posts/2017-02-28-alerting-with-prometheus-and-alertmanager/", "published_at": "2017-02-28T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9dfa175f", "title": "Deleting files and getting your diskspace back without rebooting", "url": "https://dchua.com/posts/2017-02-03-deleting-files-and-getting-your-diskspace-back-without-rebooting/", "published_at": "2017-02-03T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9eb29da5", "title": "Using Multiple Buildpacks in Deis", "url": "https://dchua.com/posts/2017-01-22-using-multiple-buildpacks-in-deis/", "published_at": "2017-01-22T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9f380ba5", "title": "Fixing OmniAuth Redirecting to a URI with Port", "url": "https://dchua.com/posts/2017-01-16-fixing-omniauth-redirecting-to-a-uri-with-port/", "published_at": "2017-01-16T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9f9f4dc6", "title": "Supercharge your Nginx with Openresty and Lua", "url": "https://dchua.com/posts/2017-01-01-supercharge-your-nginx-with-openresty-and-lua/", "published_at": "2017-01-01T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9fdbadd4", "title": "Monitor a Directory for File Changes with inotifywait", "url": "https://dchua.com/posts/2016-12-27-monitor-a-directory-for-file-changes-with-inotifywait/", "published_at": "2016-12-27T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9b9ff12174", "title": "Using Kubectl proxy to access your Kubernetes services", "url": "https://dchua.com/posts/2016-11-20-using-kubectl-proxy-to-access-your-kubernetes-services/", "published_at": "2016-11-20T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba05d44e1", "title": "Running Deis on Digitalocean - A Nginx/Haproxy LB Setup", "url": "https://dchua.com/posts/2016-10-25-running-deis-on-digitalocean/", "published_at": "2016-10-25T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba107c45d", "title": "How to get Kubernetes and Deis onto Azure", "url": "https://dchua.com/posts/2016-10-17-how-to-get-kubernetes-and-deis-onto-azure/", "published_at": "2016-10-17T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba1e7a9bc", "title": "Removing DNS caching on NGINX proxy pass", "url": "https://dchua.com/posts/2016-09-29-removing-dns-caching-on-nginx-proxy-pass/", "published_at": "2016-09-29T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba21312a0", "title": "Secure your Server - Send Slack Alert on SSH Login", "url": "https://dchua.com/posts/2016-08-17-secure-your-server-send-slack-alert-on-ssh-login/", "published_at": "2016-08-17T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba2b50153", "title": "Building a Kubernetes PetSet Cluster for your MongoDB ReplicaSet", "url": "https://dchua.com/posts/2016-08-08-building-a-kubernetes-petset-cluster-for-your-mongodb-replicaset/", "published_at": "2016-08-08T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba338437a", "title": "How to change instance size of an existing Kubernetes Cluster", "url": "https://dchua.com/posts/2016-07-27-how-to-change-instance-size-of-an-existing-kubernetes-cluster/", "published_at": "2016-07-27T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba3f7100f", "title": "How to set current_user in Tornado asynchronously", "url": "https://dchua.com/posts/2016-07-23-how-to-set-current_user-in-tornado-asynchronously/", "published_at": "2016-07-23T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba471d58a", "title": "Setting Up Amazon VPC to VPC Peer Connection", "url": "https://dchua.com/posts/2016-07-21-setting-up-amazon-vpc-to-vpc-peer-connection/", "published_at": "2016-07-21T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba4daa36a", "title": "Logging Tornado Logs To Graylog (with JSON)", "url": "https://dchua.com/posts/2016-07-19-logging-tornado-logs-to-graylog/", "published_at": "2016-07-19T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba52182f4", "title": "Painless ECR authentication for Docker", "url": "https://dchua.com/posts/2016-06-17-painless-ecr-authentication-for-docker/", "published_at": "2016-06-17T07:24:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba5774640", "title": "Speed up NPM install in Docker Containers", "url": "https://dchua.com/posts/2016-06-17-speed-up-npm-install-in-docker-containers/", "published_at": "2016-06-17T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba5f6a850", "title": "Getting Started with Jenkins using Docker", "url": "https://dchua.com/posts/2016-06-10-getting-started-with-jenkins-using-docker/", "published_at": "2016-06-10T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba6861be0", "title": "Installing Jenkins Plugins with their Dependencies in One Step", "url": "https://dchua.com/posts/2016-06-02-installing-jenkins-plugins-with-their-dependencies-in-one-step/", "published_at": "2016-06-02T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba7248817", "title": "Hooking up Jekyll to Facebook Instant Articles", "url": "https://dchua.com/posts/2016-04-24-hooking-up-jekyll-to-facebook-instant-articles/", "published_at": "2016-04-24T02:57:56+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba7cf04d4", "title": "Playing around with Facebook's Instant Articles", "url": "https://dchua.com/posts/2016-04-21-playing-around-with-facebooks-instant-articles/", "published_at": "2016-04-21T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba7dd99a7", "title": "A Python RethinkDB walkthrough", "url": "https://dchua.com/posts/2016-04-13-a-rethinkdb-python-walkthrough/", "published_at": "2016-04-13T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba81ddff7", "title": "Event Loop Tasks", "url": "https://dchua.com/posts/2016-04-11-event-loop-tasks/", "published_at": "2016-04-11T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba9179979", "title": "Packaging your Python Packages into PyPI (pip)", "url": "https://dchua.com/posts/2016-04-09-packaging-your-python-packages-into-pypi-pip/", "published_at": "2016-04-09T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9ba95bbfc2", "title": "Installing GRPC, Protobuf and its dependencies for Python Development", "url": "https://dchua.com/posts/2016-04-08-installing-grpc-protobuf-and-its-dependencies-for-python-development/", "published_at": "2016-04-08T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9baa297782", "title": "Debugging Websockets with wscat (Websocket CLI Terminal)", "url": "https://dchua.com/posts/2016-04-01-debugging-websockets-with-wscat/", "published_at": "2016-04-01T14:32:09+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9baad72ba3", "title": "Converting KML into GeoJSON for Mongoimport & Querying", "url": "https://dchua.com/posts/2016-03-31-converting-kml-into-geojson-for-mongoimport/", "published_at": "2016-03-31T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bab9fb1a6", "title": "Debugging in Python", "url": "https://dchua.com/posts/2016-03-30-debugging-in-python/", "published_at": "2016-03-30T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bac98d5e2", "title": "Understanding Python Decorators", "url": "https://dchua.com/posts/2016-03-29-understanding-python-decorators/", "published_at": "2016-03-29T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bad5d66b4", "title": "Running virtualenvwrapper with pyenv", "url": "https://dchua.com/posts/2016-03-27-running-virtualenvwrapper-with-pyenv/", "published_at": "2016-03-27T05:10:46+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bae5bdddc", "title": "Installing pyenv - RVM for Python", "url": "https://dchua.com/posts/2016-03-25-installing-pyenv---rvm-for-python/", "published_at": "2016-03-25T03:02:06+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9baec8fa4f", "title": "Writing a Serverless Python Microservice with AWS Lambda and AWS API Gateway", "url": "https://dchua.com/posts/2016-03-22-writing-a-serverless-python-microservice-with-aws-lambda-and-aws-api-gateway/", "published_at": "2016-03-22T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bafa4596c", "title": "Disable wordwrapping for easier markdown composing in vim", "url": "https://dchua.com/posts/2016-03-21-disable-wordwrapping-for-easier-markdown-composing-in-vim/", "published_at": "2016-03-21T15:32:45+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb066ba5f", "title": "Getting npm packages to be installed with docker-compose", "url": "https://dchua.com/posts/2016-02-07-getting-npm-packages-to-be-installed-with-docker-compose/", "published_at": "2016-02-07T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb141597c", "title": "4 Tips to Supercharge your Jekyll Static Site Hosting", "url": "https://dchua.com/posts/2016-01-21-proper-jekyll-deployment-workflow-to-s3-static-hosting/", "published_at": "2016-01-21T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb1bd331c", "title": "SSH Agent Forwarding with your Docker Container", "url": "https://dchua.com/posts/2016-01-15-ssh-agent-forwarding-with-your-docker-container/", "published_at": "2016-01-15T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb22c1923", "title": "Using Graylog Extractors to Split Logs", "url": "https://dchua.com/posts/2015-12-25-using-graylog-extractors/", "published_at": "2015-12-25T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb2e78422", "title": "Getting Multi-threaded Thin to Work in Development (Rails 4)", "url": "https://dchua.com/posts/2015-12-03-getting-thin-to-work-in-development/", "published_at": "2015-12-03T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb36aa1a3", "title": "Timestamp your bash output", "url": "https://dchua.com/posts/2015-10-24-timestamp-your-bash-output/", "published_at": "2015-10-24T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb3875174", "title": "Using Superagent in your Browser", "url": "https://dchua.com/posts/2015-09-29-using-superagent-in-your-browser/", "published_at": "2015-09-29T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb445cc92", "title": "Playing Hearthstone on Linux", "url": "https://dchua.com/posts/2015-09-23-playing-hearthstone-on-linux/", "published_at": "2015-09-23T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb450651e", "title": "Parsing S3 Logs with GoAccess and s3cmd Sync", "url": "https://dchua.com/posts/2015-09-03-parsing-s3-logs/", "published_at": "2015-09-03T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb52f23d0", "title": "Change your Vim Colorscheme", "url": "https://dchua.com/posts/2015-08-24-change-your-vim-colorscheme/", "published_at": "2015-08-24T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb5760fc2", "title": "Harden your SSL Security - The site is using outdated security.", "url": "https://dchua.com/posts/2015-07-10-harden-your-ssl-security/", "published_at": "2015-07-10T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb60900d2", "title": "Setting up OpenVPN AS with FreeRADIUS AND stunnel", "url": "https://dchua.com/posts/2015-07-08-setting-up-openvpn-as-with-freeradius-and-stunnel/", "published_at": "2015-07-08T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb60d6a1d", "title": "Find out which processes is using your swap", "url": "https://dchua.com/posts/2015-05-27-find-out-which-processes-is-using-your-swap/", "published_at": "2015-05-27T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb7006185", "title": "Fix freezing mouse-click issue on Spotify Linux", "url": "https://dchua.com/posts/2015-05-05-fix-freezing-mouse-click-issue-on-spotify-linux/", "published_at": "2015-05-05T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb76d4334", "title": "Debugging Redis and its Memory", "url": "https://dchua.com/posts/2015-04-28-debugging-redis-and-its-memory/", "published_at": "2015-04-28T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb7f7441a", "title": "Configuring Chef", "url": "https://dchua.com/posts/2015-03-24-configuring-chef/", "published_at": "2015-03-24T00:00:00+00:00" }, { "id": "01a0876a-26f0-7113-b847-3b9bb88c7012", "title": "Setting up Chef", "url": "https://dchua.com/posts/2015-03-24-setting-up-chef/", "published_at": "2015-03-24T00:00:00+00:00" } ] posts Claim your blog
Back to dchua.com
Blog · corpus.blog/blogs/dchua.com/posts

dchua.com

dchua.com

2026

2025

2024

2023

2021

19 Sept 2021

2017

2016

2015