A Journey of Exploration Driven by Curiosity
Introduction
Computer science has vast and diverse branches. Over the past few years, alongside frontend development, I’ve loved exploring many of these different fields. In this series, I want to share some topics I’ve explored and found fascinating, as well as topics I’m planning to dive into next.
I’m a big fan of first principles—looking at things from their very essence—especially when it comes to computers, which are a pinnacle of human civilization built layer upon layer of abstraction. The code I write primarily runs inside a browser, which in turn runs as software on an operating system, which itself runs on a CPU and various hardware components. To me, that is mesmerizing. While I won’t be able to cover every single topic, I’d like to share some of the areas that captivated me during my explorations.
We often take technological progress for granted, as if it naturally pushes forward on its own. But behind every technology lies the dedication of an individual or countless people, developed to solve the problems they faced at the time—some were even stumbled upon by pure accident.
Technology doesn’t improve on its own; it requires people willing to get their hands dirty and tackle hard problems. You don’t need prestigious degrees or extraordinary genius to make an impactful contribution. Everyone has the potential to be part of building and advancing technology.
People often ask: “If we don’t use trigonometry or linear algebra in daily life, why bother learning math at all?”
I have two rather romantic answers to this question.
Technology today has advanced to the point where you can live just fine without ever learning math.
The other answer comes from when I was reading about Fermat’s Last Theorem, quoting G. H. Hardy:
I have no mathematical theories of practical use; outside the realm of mathematics, it has done nothing to make the world more comfortable. But why should it? The pursuit of answers stems purely from an inner desire.
I easily get drawn to new things, yet my passion often burns out quickly. While that might not sound like a great trait, it has led me over the past few years to explore many fields I would never have dreamed of looking into before. Through this Ironman series, I hope to share these discoveries while deepening my own understanding.
Think of this series as thirty standalone (yet somehow interconnected) short essays. If you are already familiar with any of these topics, please feel free to leave a comment, share your thoughts, and join the discussion!
Overview of Topics
These are the topics I plan to write about over the next 30 days. They might be adjusted along the way, but they’re all related to IT—covering frontend, backend, broad computer science concepts, mathematics, hardware, and low-level protocols. In short, it’s quite a mixed bag.
Related Posts
- When a Measure Becomes a Target: From the Window Tax to Pull Request Counts I once wrote a script to tally how many PRs I contributed in a quarter, how many reviews I left, and how many tickets I closed, hoping to use numbers to prove my output to my manager. My manager simply remarked that performance isn't just about output. Years later, I finally understood—when a measure becomes a target, it ceases to be a good measure. From the British window tax and the Hanoi rat bounty to evaluating developers by PR counts today, the underlying mechanism is exactly the same.
- Using Cloudflare Images for Image Storage and Transformation Putting an image on a webpage is the simplest task in frontend development. But doing it properly—including resizing, generating multiple formats, and withstanding heavy traffic—is actually an entire end-to-end solution. Eventually, I offloaded everything to Cloudflare Images, keeping only a single original image.
- Stop Using AWS Access Keys Access Keys are an easily overlooked security risk in AWS. By pairing OIDC with IAM Roles, GitHub Actions can securely operate AWS resources without storing any secrets.
- Database Primary Keys: AUTO_INCREMENT, UUID, and UUIDv7 Backend developers often face the choice of primary keys: should you use auto-increment or UUID? What about collisions? How does UUIDv7 compare to created_at + index in performance? Here are the design decisions and benchmark results from testing 20 million rows.