41554 blogs · [ { "id": "01a08c59-3376-7132-ab0e-7caab00fb8c1", "title": "Some concerns about Ladybird's bylaws", "url": "https://tuananh.net/2026/06/06/ladybird-bylaws/", "published_at": "2026-06-06T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab0dae1cd", "title": "My tech stack (2026)", "url": "https://tuananh.net/2026/06/04/tech-stack/", "published_at": "2026-06-04T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab134ae77", "title": "Why your next mobile app is probably headless", "url": "https://tuananh.net/2026/03/18/why-your-next-mobile-app-is-probably-headless/", "published_at": "2026-03-18T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab1cde164", "title": "Relicensing with AI-assisted rewrite", "url": "https://tuananh.net/2026/03/05/relicensing-with-ai-assisted-rewrite/", "published_at": "2026-03-05T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab20adbbc", "title": "BuildKit: Docker's Hidden Gem That Can Build Almost Anything", "url": "https://tuananh.net/2026/02/25/buildkit-docker-hidden-gem/", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab2b2b96a", "title": "A Bug is a Bug, but a Patch is a Policy: The Case for Bootable Containers", "url": "https://tuananh.net/2026/02/20/patch-is-policy/", "published_at": "2026-02-20T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab3303baa", "title": "Hope Is Not a Security Strategy: Why Secure-by-Default Beats Hardening", "url": "https://tuananh.net/2026/02/09/hope-is-not-a-security-strategy/", "published_at": "2026-02-09T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab41482c2", "title": "Shifting Left of CI", "url": "https://tuananh.net/2026/02/05/shifting-left-of-ci/", "published_at": "2026-02-05T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab4a3e315", "title": "The Post-Agentic World: The Economics of Abundant Intelligence", "url": "https://tuananh.net/2026/01/23/the-post-agentic-world-the-economics-of-abundant-intelligence/", "published_at": "2026-01-23T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab5347baf", "title": "I was wrong about AI agent sandboxing", "url": "https://tuananh.net/2026/01/22/i-was-wrong-about-ai-agent-sandboxing/", "published_at": "2026-01-22T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab56b48da", "title": "Achieving a 0-CVE OS for VMs: The End of Traditional Patching", "url": "https://tuananh.net/2026/01/21/achieving-a-0-cve-os-for-vms-the-end-of-traditional-patching/", "published_at": "2026-01-21T00:00:00+00:00" }, { "id": "01a08c59-3376-7132-ab0e-7caab63f9957", "title": "What has Docker become?", "url": "https://tuananh.net/2026/01/20/what-has-docker-become/", "published_at": "2026-01-20T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2a47f61d", "title": "Digital Footprint in the AI Era", "url": "https://tuananh.net/2026/01/19/digital-footprint-in-the-ai-era/", "published_at": "2026-01-19T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2af2bc4b", "title": "All Flash NAS Upgrade", "url": "https://tuananh.net/2026/01/18/all-flash-nas-upgrade/", "published_at": "2026-01-18T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2b839c18", "title": "Phần mềm gõ tay", "url": "https://tuananh.net/2026/01/17/phan-mem-go-tay/", "published_at": "2026-01-17T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2bb45349", "title": "Architecture for Disposable Systems", "url": "https://tuananh.net/2026/01/15/architecture-for-disposable-systems/", "published_at": "2026-01-15T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2cb2c3fd", "title": "Fix Battle.net agent went to sleep BLZBNTBNA00000005", "url": "https://tuananh.net/2025/05/01/fix-battle.net-agent-went-to-sleep-blzbntbna00000005/", "published_at": "2025-05-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2db1d8d8", "title": "Execution is cheap(er)", "url": "https://tuananh.net/2025/04/12/execution-is-cheaper/", "published_at": "2025-04-12T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2e232fca", "title": "On MCP security", "url": "https://tuananh.net/2025/04/06/on-mcp-security/", "published_at": "2025-04-06T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2e6e0fb6", "title": "AI không còn là điểm khác biệt chiến lược của sản phẩm nữa", "url": "https://tuananh.net/2020/02/20/ai-khong-con-la-diem-khac-biet-chien-luoc-cua-san-pham-nua/", "published_at": "2025-02-22T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2f601a76", "title": "Download view-only Google Sheets", "url": "https://tuananh.net/2025/02/21/download-view-only-google-sheets/", "published_at": "2025-02-21T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c2fb30966", "title": "Writing your first Arch Linux package", "url": "https://tuananh.net/2025/02/14/writing-your-first-arch-linux-package/", "published_at": "2025-02-14T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c301354f8", "title": "Lite Youtube Embed for Hugo", "url": "https://tuananh.net/2025/02/13/lite-youtube-embed-for-hugo/", "published_at": "2025-02-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c30e3e221", "title": "OBS - Fedora fiasco", "url": "https://tuananh.net/2025/02/13/obs-fedora-fiasco/", "published_at": "2025-02-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c31332d36", "title": "In market for a new TV in 2025", "url": "https://tuananh.net/2025/02/05/in-market-for-a-new-tv-in-2025/", "published_at": "2025-02-05T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c31cdcfd9", "title": "How to install Cursor CLI on Linux", "url": "https://tuananh.net/2025/01/16/how-to-install-cursor-cli-on-linux/", "published_at": "2025-01-16T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3228315e", "title": "0x0.st - temporary file hoster", "url": "https://tuananh.net/2024/12/26/0x0.st-temporary-file-hoster/", "published_at": "2024-12-26T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c32bdb836", "title": "PaX basic", "url": "https://tuananh.net/2024/11/01/pax-basic/", "published_at": "2024-11-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c33b254ac", "title": "On adopting Chainguard Images", "url": "https://tuananh.net/2024/06/28/on-adopting-chainguard-images/", "published_at": "2024-06-28T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c33d6ab32", "title": "Machine learning rig", "url": "https://tuananh.net/2024/02/28/machine-learning-rig/", "published_at": "2024-02-28T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c341f5633", "title": "Roblox on Linux", "url": "https://tuananh.net/2024/02/01/roblox-on-linux/", "published_at": "2024-02-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c34daf66d", "title": "Cloud cost optimization at scale part 1", "url": "https://tuananh.net/2024/01/21/cloud-cost-optimization-at-scale-part-1/", "published_at": "2024-01-21T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c35790618", "title": "Reproducibility", "url": "https://tuananh.net/2024/01/21/reproducibility/", "published_at": "2024-01-21T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c35ec28ed", "title": "Writing your first Wolfi package", "url": "https://tuananh.net/2024/01/13/writing-your-first-wolfi-package/", "published_at": "2024-01-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3643d5be", "title": "Almost** instant k8s secret update for your application", "url": "https://tuananh.net/2023/03/03/almost-instant-k8s-secret-update-for-your-application/", "published_at": "2023-03-03T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c37334e42", "title": "Assume role without instance profile", "url": "https://tuananh.net/2023/02/20/assume-role-without-instance-profile/", "published_at": "2023-02-20T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3759cb68", "title": "CS:GO launch failure fix", "url": "https://tuananh.net/2022/03/18/csgo-launch-failure-fix/", "published_at": "2022-03-18T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c375b2f25", "title": "Public ECR and private subnets", "url": "https://tuananh.net/2021/12/27/public-ecr-and-private-subnets/", "published_at": "2021-12-27T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c37864130", "title": "Shure MV7 working on Linux", "url": "https://tuananh.net/2021/09/21/shure-mv7-working-on-linux/", "published_at": "2021-09-21T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c381f4c59", "title": "Using k8s kind \"rootlessly\" without Docker", "url": "https://tuananh.net/2021/09/03/using-k8s-kind-rootlessly-without-docker/", "published_at": "2021-09-03T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c38df91d1", "title": "Làm quen với Pod Security Admission (PSA)", "url": "https://tuananh.net/2021/08/19/l%C3%A0m-quen-v%E1%BB%9Bi-pod-security-admission-psa/", "published_at": "2021-08-19T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c39c08a8c", "title": "My blogging setup these days", "url": "https://tuananh.net/2021/08/14/my-blogging-setup-these-days/", "published_at": "2021-08-14T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c39fb74fe", "title": "How to write Node modules with Rust", "url": "https://tuananh.net/2021/08/13/how-to-write-node-modules-with-rust/", "published_at": "2021-08-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3a9505ae", "title": "What the fuck is even GitOps", "url": "https://tuananh.net/2021/06/04/what-the-fuck-is-even-gitops/", "published_at": "2021-06-04T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3aec6af0", "title": "Distributed tracing is the new structured logging", "url": "https://tuananh.net/2021/04/12/distributed-tracing-is-the-new-structured-logging/", "published_at": "2021-04-12T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3b91b266", "title": "The state of Linux on desktop (2020)", "url": "https://tuananh.net/2021/02/13/the-state-of-linux-on-desktop-2020/", "published_at": "2021-02-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3c29c890", "title": "Using Cloudflare Warp on Linux", "url": "https://tuananh.net/2021/02/09/using-cloudflare-warp-on-linux/", "published_at": "2021-02-09T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3cf39117", "title": "An extremely fast streaming SAX parser for Node.js", "url": "https://tuananh.net/2020/06/01/an-extremely-fast-streaming-sax-parser-for-node.js/", "published_at": "2020-06-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3de2dccc", "title": "camaro v6", "url": "https://tuananh.net/2020/05/19/camaro-v6/", "published_at": "2020-05-19T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3dfdaf35", "title": "From Zsh to Fish on macOS", "url": "https://tuananh.net/2020/05/17/from-zsh-to-fish-on-macos/", "published_at": "2020-05-17T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3e3c5735", "title": "kubectl run generators removed", "url": "https://tuananh.net/2020/05/12/kubectl-run-generators-removed/", "published_at": "2020-05-12T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3e6a80c3", "title": "Using Synology NFS as external storage with Kubernetes", "url": "https://tuananh.net/2020/05/01/using-synology-nfs-as-external-storage-with-kubernetes/", "published_at": "2020-05-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c3f63ccbc", "title": "Debugging Kubernetes: Unable to connect to the server: EOF", "url": "https://tuananh.net/2020/04/25/debugging-kubernetes-unable-to-connect-to-the-server-eof/", "published_at": "2020-04-25T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c402e0f41", "title": "How to setup reverse proxy for homelab with Caddy server", "url": "https://tuananh.net/2020/04/01/how-to-setup-reverse-proxy-for-homelab-with-caddy-server/", "published_at": "2020-04-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c40c4eb8d", "title": "Tips for first time rack buyer", "url": "https://tuananh.net/2020/04/01/tips-for-first-time-rack-buyer/", "published_at": "2020-04-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c41111e26", "title": "How to setup a home VPN with Synology NAS", "url": "https://tuananh.net/2020/03/31/how-to-setup-a-home-vpn-with-synology-nas/", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c41bb93ce", "title": "How to adopt UniFi Security Gateway to an existing network", "url": "https://tuananh.net/2020/03/30/how-to-adopt-unifi-security-gateway-to-an-existing-network/", "published_at": "2020-03-30T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c41f760ff", "title": "Dynamic DNS with CloudFlare", "url": "https://tuananh.net/2020/03/27/dynamic-dns-with-cloudflare/", "published_at": "2020-03-27T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c423c3141", "title": "Traffic from #1 post on Hacker News", "url": "https://tuananh.net/2020/03/02/traffic-from-top-post-on-hacker-news/", "published_at": "2020-03-02T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c42886793", "title": "The story behind my talk: Cloud Cost Optimization at Scale: How we use Kubernetes and spot instances to reduce EC2 billing up to 80%", "url": "https://tuananh.net/2020/02/20/the-story-behind-my-talk-cloud-cost-optimization-at-scale/", "published_at": "2020-02-20T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c429f66f6", "title": "Thoughts on Workers KV", "url": "https://tuananh.net/2020/02/13/thoughts-on-workers-kv/", "published_at": "2020-02-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c435743f1", "title": "reader", "url": "https://tuananh.net/2020/02/09/reader/", "published_at": "2020-02-09T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c43f1d442", "title": "Experiment with Cloudflare Workers", "url": "https://tuananh.net/2020/01/29/experiment-with-cloudflare-workers/", "published_at": "2020-01-29T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c44a61ef6", "title": "Brag document", "url": "https://tuananh.net/2020/01/02/brag-document/", "published_at": "2020-01-02T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c44d94077", "title": "Debugging with git bisect", "url": "https://tuananh.net/2019/12/18/debugging-with-git-bisect/", "published_at": "2019-12-18T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c44e4133c", "title": "The state of tiling window manager on Windows 10", "url": "https://tuananh.net/2019/12/01/the-state-of-tiling-window-manager-on-windows-10/", "published_at": "2019-12-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c458c33c6", "title": "A beginner guide to CPU air cooling", "url": "https://tuananh.net/2019/10/27/a-beginner-guide-to-cpu-air-cooling/", "published_at": "2019-10-27T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4650e003", "title": "Advanced filtering and sorting with redis (part 2)", "url": "https://tuananh.net/2019/10/07/advanced-filtering-and-sorting-with-redis-part-2/", "published_at": "2019-10-07T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c46eb38bd", "title": "Pi-hole", "url": "https://tuananh.net/2019/09/25/pi-hole/", "published_at": "2019-09-25T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c47ce7272", "title": "Microsoft Sculpt Ergonomic Desktop review", "url": "https://tuananh.net/2019/09/01/microsoft-sculpt-ergonomic-desktop-review/", "published_at": "2019-09-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c480817f0", "title": "Optimal team size", "url": "https://tuananh.net/2019/08/26/optimal-team-size/", "published_at": "2019-08-26T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4823f96f", "title": "From macOS to Windows 10", "url": "https://tuananh.net/2019/08/07/from-macos-to-windows-10/", "published_at": "2019-08-07T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c48442826", "title": "Tips on reducing WASM file size with Emscripten", "url": "https://tuananh.net/2019/07/01/tips-on-reducing-wasm-file-size-with-emscripten/", "published_at": "2019-07-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c489a9d09", "title": "Choosing a wireless router in 2019", "url": "https://tuananh.net/2019/05/27/choosing-a-wireless-router-in-2019/", "published_at": "2019-05-27T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c497cd360", "title": "Some lessons learnt after converting a native module to WebAssembly", "url": "https://tuananh.net/2019/05/22/some-lessons-learnt-after-converting-a-native-module-to-webassembly/", "published_at": "2019-05-22T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c49fbe5a2", "title": "How to delete Redis keys using pattern", "url": "https://tuananh.net/2019/05/09/how-to-delete-redis-keys-using-pattern/", "published_at": "2019-05-09T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4a4b00ea", "title": "Autocomplete at speed of light", "url": "https://tuananh.net/2019/02/07/autocomplete-at-speed-of-light/", "published_at": "2019-02-07T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4a4d8a58", "title": "2018: year in review", "url": "https://tuananh.net/2018/12/26/2018-year-in-review/", "published_at": "2018-12-26T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4b25f8ec", "title": "My keyboard layout", "url": "https://tuananh.net/2018/12/01/my-keyboard-layout/", "published_at": "2018-12-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4bae1e91", "title": "Favorite QMK hacks", "url": "https://tuananh.net/2018/11/15/favorite-qmk-hacks/", "published_at": "2018-11-15T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4c9b0bad", "title": "Fastest way to transform XML to JSON in Node.js", "url": "https://tuananh.net/2018/08/30/fastest-way-to-transform-xml-to-json-in-node.js/", "published_at": "2018-08-30T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4c9ed94d", "title": "Sharding and IDs", "url": "https://tuananh.net/2018/08/06/sharding-and-ids/", "published_at": "2018-08-06T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4cf38076", "title": "Advanced filtering and sorting with redis (part 1)", "url": "https://tuananh.net/2018/06/12/advanced-filtering-and-sorting-with-redis-part-1/", "published_at": "2018-06-12T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4dce948b", "title": "Notes on GraphQL", "url": "https://tuananh.net/2018/05/23/notes-on-graphql/", "published_at": "2018-05-23T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4eb93b92", "title": "Kubernetes Meetup #2 slide", "url": "https://tuananh.net/2018/05/01/kubernetes-meetup-%232-slide/", "published_at": "2018-05-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4f3585f1", "title": "The Birth & Death of JavaScript", "url": "https://tuananh.net/2018/01/21/the-birth-death-of-javascript/", "published_at": "2018-01-21T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4f509fea", "title": "Advice to new managers", "url": "https://tuananh.net/2018/01/16/advice-to-new-managers/", "published_at": "2018-01-16T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c4fdb8118", "title": "DejaLu - a new open source email client by Sparrow's author", "url": "https://tuananh.net/2018/01/10/dejalu-a-new-open-source-email-client-by-sparrows-author/", "published_at": "2018-01-10T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c50b3e453", "title": "Series and parallel execution with async/await", "url": "https://tuananh.net/2018/01/09/series-and-parallel-execution-with-async/await/", "published_at": "2018-01-09T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c51a76641", "title": "2017: year in review", "url": "https://tuananh.net/2018/01/01/2017-year-in-review/", "published_at": "2018-01-01T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c51ca57a2", "title": "Building containers in pure Bash and C", "url": "https://tuananh.net/2017/12/25/building-containers-in-pure-bash-and-c/", "published_at": "2017-12-25T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c52b3854a", "title": "A better way to go through terminal command history", "url": "https://tuananh.net/2017/12/20/a-better-way-to-go-through-terminal-command-history/", "published_at": "2017-12-20T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c52b91e7f", "title": "The silence of the Lambda", "url": "https://tuananh.net/2017/12/15/the-silence-of-the-lambda/", "published_at": "2017-12-15T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c52ec650f", "title": "Traits of a good leader", "url": "https://tuananh.net/2017/12/14/traits-of-a-good-leader/", "published_at": "2017-12-14T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c53c405ec", "title": "node-prune", "url": "https://tuananh.net/2017/11/18/node-prune/", "published_at": "2017-11-18T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c53c45e46", "title": "kompression - koa compression middleware with support for brotli", "url": "https://tuananh.net/2017/11/17/kompression-koa-compression-middleware-with-support-for-brotli/", "published_at": "2017-11-17T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c53c64b4a", "title": "Docker Containers on the Desktop", "url": "https://tuananh.net/2017/10/27/docker-containers-on-the-desktop/", "published_at": "2017-10-27T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c53fe3efc", "title": "If Your Boss Could Do Your Job, You’re More Likely to Be Happy at Work", "url": "https://tuananh.net/2017/10/15/if-your-boss-could-do-your-job-youre-more-likely-to-be-happy-at-work/", "published_at": "2017-10-15T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c548b3642", "title": "Kubernetes-hosted application checklist (part 1)", "url": "https://tuananh.net/2017/10/13/kubernetes-hosted-application-checklist-part-1/", "published_at": "2017-10-13T00:00:00+00:00" }, { "id": "01a08c59-3377-7165-8567-758c5570a29c", "title": "Kubernetes-hosted application checklist (part 2)", "url": "https://tuananh.net/2017/10/13/kubernetes-hosted-application-checklist-part-2/", "published_at": "2017-10-13T00:00:00+00:00" } ] posts Claim your blog
Back to Tuan-Anh Tran
Blog · corpus.blog/blogs/tuananh.net/posts

Tuan-Anh Tran

tuananh.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017