[{"content":"PSciT (Philosophy, Science, and Technology) is a private library I founded and maintain in Hanoi, Vietnam. As a lifelong skeptic and curious reader, I built this collection to preserve and share books that have deeply influenced my thinking—primarily in philosophy, science, and technology, along with select titles in history, sociology, fiction, and practical domains. All books are handpicked and mostly read, with titles in both English and Vietnamese.\nThe accompanying website is a full-featured library management system that allows users to browse books, explore authors and categories, request or approve reservations, and receive email notifications. I built the core functionalities in just one week using Cursor for accelerated development.\nDespite running on a cost-effective single-node Vultr instance, the system is production-grade with automated CI/CD, security, observability, and configurability in mind. It features:\nBackend: Golang, PostgreSQL, Docker, Kubernetes, GitHub Actions, HAProxy Observability: Loki, Prometheus, Grafana (Monitoring dashboards are available at grafana.zenoa.space, both username and password are guest) Frontend: React.js, hosted on AWS S3, served via AWS CloudFront Domain Management: AWS Route 53 and AWS Certificate Manager This project combines my interests in software engineering, infrastructure, and knowledge-sharing.\n","permalink":"https://portfolio.zenoa.space/posts/pscit/","summary":"PSciT is a private library and web app I built to share curated books on philosophy, science, and technology, featuring a production-grade stack, all developed and deployed in just one week.","title":"PSciT Library"},{"content":"I built Knowledge Repo RAG Chatbot to learn how Retrieval-Augmented Generation (RAG) applications work end-to-end. It’s a chatbot that answers questions using resources from my own knowledge repository.\nThis is a Node \u0026amp; React project has two flavors:\nLocal stack: Qdrant (vector DB), Nomic embeddings (via vLLM), and a LLaMA model with GPT4All. Cloud stack: OpenAI embeddings, Qdrant Cloud, and GPT completions via OpenAI API. Key features include:\nData ingestion pipeline Real-time chat with token streaming Chat memory, history, and automatic title generation Automated build and deployment Planned improvements:\nPipeline to auto-update the vector store when the repo changes Account system, authentication, rate-limit ","permalink":"https://portfolio.zenoa.space/posts/knowledge-repo-chatbot/","summary":"I wanted to understand how a Retrieval-Augmented Generation (RAG) application works, so I built this chatbot from scratch to answer questions using resources from my knowledge repo.","title":"Knowledge Repo - RAG Chatbot"},{"content":"I\u0026rsquo;m a lifelong learner. Learning is my commitment-it gives my life meaning and purpose. Everything else is a means to that end, tools that support and enable my learning.\nBy most standards, I\u0026rsquo;m a strong learner (I believe). Recently, without any formal background in finance or economics, I completed the CFA (Chartered Financial Analyst) Level 1 in just 3 months, scoring in the top 10%. The curriculum is broad and demanding, often compared to a graduate-level program. I also earned the AWS Solutions Architect Associate certification within 1 month of studying, despite having no prior production experience with AWS. I don\u0026rsquo;t believe there\u0026rsquo;s any subject I can\u0026rsquo;t learn-given enough time and effort.\nTo support my learning, I\u0026rsquo;ve been maintaining this personal knowledge repository since 2021. It\u0026rsquo;s where I distill and document what I\u0026rsquo;ve learned, primarily from books, but also from other types of material. The topics are broad, spanning philosophy, science, software engineering, and business.\nBeing effective matters-because time is limited. That\u0026rsquo;s why I not only focus on what I learn, but also how I learn. I\u0026rsquo;m constantly experimenting with new methods to improve comprehension, retention, and application: new ways to practice, conceptualize, and structure information. Most importantly, I study epistemology-the theory of knowledge-to refine my critical thinking and sharpen my ability to distinguish real knowledge from pseudo one. This helps me focus my efforts on what truly matters.\n","permalink":"https://portfolio.zenoa.space/posts/knowledge-repo/","summary":"I\u0026rsquo;ve been maintaining this \u003ca href=\"https://github.com/hungcq/knowledge-repo\"\u003epersonal knowledge repository\u003c/a\u003e since 2021. It\u0026rsquo;s where I distill and document what I\u0026rsquo;ve learned. The topics are broad, spanning philosophy, science, software engineering, and business.","title":"Knowledge Repository"},{"content":"Admittedly, open source contributions haven\u0026rsquo;t been my main focus, as my previous work was mostly with closed-source libraries and tools. However, I plan to contribute more as I explore new technologies and encounter opportunities for improvement.\nRecently, at NinjaVan, I led the adoption and production deployment of Temporal.io, including developer training. While working with Temporal\u0026rsquo;s Helm chart and documentation, I fixed outdated docs and misconfigurations, ensuring smoother onboarding for future users. Additionally, I corrected errors in Solana\u0026rsquo;s developer resources after identifying issues in their Quickstart Guide.\n","permalink":"https://portfolio.zenoa.space/posts/open-source-contributions/","summary":"Though my experience with open source is limited, I have made improvements to Temporal.io and Solana documentation, and plan to contribute more as I work with new technologies.","title":"Open-Source Contributions"},{"content":"This project showcases my approach to designing and developing robust, production-ready distributed systems through the lens of a real-time, Kahoot-style quiz platform. It was created as part of a system design and coding challenge during my interview process with ELSA.\nIn this project, I take you through not only the implementation of the central real-time quiz flow, but the end-to-end system design process, including:\nMapping user journeys and anticipating edge/error cases, Justifying architectural decisions and technology selections, Detailing data flow, scalability considerations, and observability approaches. The technologies that I used are: React.js, Golang, Socket.IO over WebSocket, Kafka, Temporal.io, and Redis.\nIf you\u0026rsquo;re interested in how I approach problems such as:\nReal-time user collaboration at scale, System resilience and exception handling, Balancing performance with reliability and maintainability, Making technology choices, Designing for observability and operations-readiness from day one, then this project provides a detailed case study-from architecture diagrams and component breakdowns to hands-on implementation and operational strategies.\nFor a deep-dive walkthrough, check out: ","permalink":"https://portfolio.zenoa.space/posts/realtime-quiz/","summary":"This project showcases my approach to designing and developing robust, production-ready distributed systems through the lens of a real-time, Kahoot-style quiz platform.","title":"Realtime Quiz"},{"content":"This project is a backend application for tracking and calculating scores in ten-pin bowling, implemented in Golang. It emphasizes modularity through a clear separation of concerns, using a port-adapter architecture that keeps game logic independent from APIs and storage, ensuring long-term maintainability and flexibility for future improvements.\nA cornerstone of this project is its rigorous, sustainable test suite. I hold myself to exceptionally high standards for unit testing-not just achieving broad coverage but prioritizing clarity, reliability, and maintainability. Tests focus on public API behaviors, employ real implementations and fakes where practical, and avoid brittle coupling to implementation details. Each test is named for the behavior it verifies, structured for readability with clear \u0026ldquo;given-when-then\u0026rdquo; patterns, and written to read naturally so intent and outcomes are always explicit. This principled approach enables fast, safe evolution of the codebase and gives developers complete confidence in the system\u0026rsquo;s correctness.\n","permalink":"https://portfolio.zenoa.space/posts/bowling-score-tracker/","summary":"This backend, built in Golang, tracks and calculates ten-pin bowling scores. The project is defined by a rigorous, maintainable test suite that emphasizes not just coverage, but clarity and reliability.","title":"Bowling Score Tracker"},{"content":"In 2021, my cousin approached me with a problem: he and his team spent countless hours manually filling out hospital procurement documents required to purchase medical equipment. For each bidding process, the same information-such as bidding package details, departments involved, and contractor information-needed to be painstakingly entered into more than 20 different documents. This repetitive work was not only time-consuming but also prone to errors, resulting in the need for multiple rounds of error checking and correction.\nTo address this, I envisioned a simple solution: a static website that runs entirely in the browser, allowing users to input the required information once, fill all the necessary documents automatically, and download them as a zip file. I quickly brought this idea to life in about 30 minutes, leveraging React.js for the frontend and docxtemplater for document processing, then deploying the app using AWS S3 and distributing it via AWS CloudFront.\nAlthough simple, the app has saved the team thousands of hours of manual, error-prone work. Now, they only need to fill out a single form to generate all required documents with consistent and accurate information. This experience reaffirmed my belief that well-targeted software-even small, focused projects-can deliver immense value and solve real problems, especially for those underserved by existing solutions.\n","permalink":"https://portfolio.zenoa.space/posts/medical-template/","summary":"This simple browser-based app automates the process of filling out hospital procurement documents, saving my cousin\u0026rsquo;s team hours of repetitive work and greatly reducing errors. It shows how even a small, well-designed software solution can have a significant real-world impact.","title":"Medical Contract Template"},{"content":"In 2019, for my graduation thesis at Hanoi University of Science and Technology, my classmate Huy and I developed a real-time e-learning system designed to bridge the gap between traditional classrooms and remote education. Working closely together, Huy introduced me to advanced architectural concepts such as single sign-on, microservices, hexagonal architecture, and event sourcing-ideas that deeply shaped both my technical skills and my understanding of scalable system design.\nBuilding on these foundations, we chose cutting-edge technologies including React.js, Redux.js, Socket.IO (over WebSocket), Node.js/Express, Google Cloud Platform (for Storage and Firestore), and Heroku, enabling us to create a responsive, interactive, and extensible web platform. Our system delivers real-time, replayable online lectures-bringing together seamless authentication via the university\u0026rsquo;s account system, robust lecture management tools for teachers (with live video streaming, synchronous slide/drawing/YouTube sharing), and engaging attendance and interactive replay capabilities for students.\nReflecting on my graduation thesis, I\u0026rsquo;m proud of the rigor in our requirement gathering, architectural choices, documentation, and thorough development process-which have all influenced my approach to software engineering since. The detailed specification and the end-to-end design we produced became a benchmark for my future technical writing. Ultimately, we contributed both our research and source code to the university, where Dr. Nguyen Thanh Hung-the head of IT and our thesis supervisor-integrated the system into the university\u0026rsquo;s IT infrastructure. It was an incredible learning journey, and a deeply satisfying contribution.\nIf you\u0026rsquo;re curious, I\u0026rsquo;ve included the short and full demo videos below: ","permalink":"https://portfolio.zenoa.space/posts/hust-elearning/","summary":"I co-developed a real-time e-learning system for my graduation thesis, applying modern architectures and technologies. Our project was adopted by the university, enhancing remote education.","title":"Realtime e-Learning System"},{"content":"My blog is where I confront questions that seem simple, but reveal complexity the deeper you examine them. If you\u0026rsquo;re wondering what to expect, the answer is rational critique. I question traditions and challenge entrenched beliefs, whether that means dissecting the concept of freedom, poking holes in relativism, or examining what \u0026ldquo;engineering\u0026rdquo; really means in software.\nIf you\u0026rsquo;re interested in thoughtful critique of everyday assumptions-whether about life goals, medicine, work culture, or societal norms-and aren\u0026rsquo;t afraid of the occasional blunt opinion, you\u0026rsquo;ll likely find something here worth reading (or arguing with).\nAbove all, I believe it\u0026rsquo;s worth striving for a life examined, not merely lived.\nIt is a static website built with Hugo, hosted on AWS S3, and distributed via AWS CloudFront.\n","permalink":"https://portfolio.zenoa.space/posts/blog/","summary":"My blog is where I confront questions that seem simple, but reveal complexity the deeper you examine them. I question traditions and challenge entrenched beliefs, whether that means dissecting the concept of freedom, poking holes in relativism, or examining what \u0026ldquo;engineering\u0026rdquo; really means in software.","title":"My Personal Blog"},{"content":"Revisiting these early projects for my portfolio, I\u0026rsquo;m reminded of how much fun learning to program has always been for me-and still is today. From my first Pascal script that printed a heart on the console for my high school ex, to building an MVC \u0026ldquo;SuperCar\u0026rdquo; game in Java, and creating the \u0026ldquo;Do It Later\u0026rdquo; task-reminder Android app, I\u0026rsquo;ve always been thrilled by bringing my ideas to life on the screen. For me, programming isn\u0026rsquo;t just about what I\u0026rsquo;ve accomplished, but about the endless possibilities it unlocks-limited only by my imagination.\nHere are some demo videos set to Two Steps From Hell; I hope you find them as fun as I do! :D ","permalink":"https://portfolio.zenoa.space/posts/learning-projects/","summary":"Programming has always been a joyful, creative journey for me, from simple early projects to full apps and games-unlocking endless possibilities and excitement which  I\u0026rsquo;m thrilled to share through my demo videos.","title":"Learning Projects"}]