<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering-Leadership on Vinh-Phuoc Tran</title><link>https://phuoc.dev/en/tags/engineering-leadership/</link><description>Recent content in Engineering-Leadership on Vinh-Phuoc Tran</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 11 Apr 2025 15:15:00 +0700</lastBuildDate><atom:link href="https://phuoc.dev/en/tags/engineering-leadership/index.xml" rel="self" type="application/rss+xml"/><item><title>Bookmarks</title><link>https://phuoc.dev/en/bookmarks/</link><pubDate>Fri, 11 Apr 2025 15:15:00 +0700</pubDate><guid>https://phuoc.dev/en/bookmarks/</guid><description>&lt;p&gt;These are some of the resources I found or stumbled upon on the internet throughout my life; most of the things here I personally found to be valuable and/or funny. I try to only add free web content here, so that you only need a web browser to access, no bs required. Enjoy! Hope you like it.&lt;/p&gt;
&lt;h2 id="software-design"&gt;Software Design&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://refactoring.guru/"&gt;Design Patterns&lt;/a&gt; - Refactoring.Guru&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Introduction to a lot of common design patterns, plus the humor.&lt;/p&gt;</description><content>&lt;p&gt;These are some of the resources I found or stumbled upon on the internet throughout my life; most of the things here I personally found to be valuable and/or funny. I try to only add free web content here, so that you only need a web browser to access, no bs required. Enjoy! Hope you like it.&lt;/p&gt;
&lt;h2 id="software-design"&gt;Software Design&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://refactoring.guru/"&gt;Design Patterns&lt;/a&gt; - Refactoring.Guru&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Introduction to a lot of common design patterns, plus the humor.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://microservices.io/"&gt;Microservice Architecture&lt;/a&gt; - Chris Richardson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Writings on microservices design and patterns.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://grugbrain.dev/"&gt;The Grug Brained Developer&lt;/a&gt; - grug brain developer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;grug brain love simple.&lt;/p&gt;
&lt;h2 id="engineering-career--leadership"&gt;Engineering Career &amp;amp; Leadership&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/KClAPipnKqw"&gt;Technical Leadership and Glue Work&lt;/a&gt; - Tanya Reilly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I first learned about this talk through &lt;em&gt;Staff Engineer: Leadership beyond the Management Track&lt;/em&gt; by Will Larson. Reilly&amp;rsquo;s perspective helped me understand what it takes to be an effective senior engineer, particularly the often-invisible glue work that keeps a team moving. The talk also explains the risk of taking on that work too early, before it is properly recognized or rewarded. I don&amp;rsquo;t think overcommitting to glue work is one of my problems, but the warning is useful nonetheless.&lt;/p&gt;
&lt;p&gt;I was surprised by how engaging the talk was. It felt especially relevant given my aspiration to become a Staff+ engineer.&lt;/p&gt;
&lt;h2 id="languages--runtimes"&gt;Languages &amp;amp; Runtimes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/"&gt;What Color is Your Function?&lt;/a&gt; - Robert Nystrom&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In my university days, I was extremely frustrated about using async while working with Google Firebase for my Android classes. So I went onto the internet to find the echo chamber that validates my frustration! And hey! I found this! Good read.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://craftinginterpreters.com/contents.html"&gt;Crafting Interpreters&lt;/a&gt; - Robert Nystrom&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Find out how programming languages&amp;rsquo; interpreters work, and make one yourself.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://wiki.python.org/moin/GlobalInterpreterLock"&gt;Global Interpreter Lock&lt;/a&gt; - Python&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ever heard people keep on saying that Python is slow and can&amp;rsquo;t run multiple threads? This here is why.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html"&gt;What is Ownership?&lt;/a&gt; - The Rust Programming Language&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An interesting and unique way of handling computer memory.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://go.dev/talks/2012/concurrency.slide"&gt;Go Concurrency Patterns&lt;/a&gt; - Rob Pike&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://go.dev/blog/pipelines"&gt;Go Concurrency Patterns: Pipelines and cancellation&lt;/a&gt; - Sameer Ajmani&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Introduction to some Go concurrency patterns, so that you don&amp;rsquo;t have to write atrocious concurrency code (like me)!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://tip.golang.org/doc/gc-guide"&gt;A Guide to the Go Garbage Collector&lt;/a&gt; - Go&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Garbage collector? What is that? This will answer these questions. Although this is Go-specific, the mark-sweep garbage collecting pattern can be found in most garbage-collected languages.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://goperf.dev/"&gt;Go Optimization Guide&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Patterns and Techniques for Writing High-Performance Applications with Go.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://youtu.be/sQXFhh_PiG4"&gt;Which Programming Language Can Handle the Most Users on a $12 Server?&lt;/a&gt; - Arjay McCandless&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An interesting video on benchmarking various languages and runtimes. I was pleasantly surprised by how pragmatically McCandless approaches the topic. His reasoning behind the load testing setup and the later discussion of how Postgres becomes the new bottleneck after language-level optimizations were especially informative.&lt;/p&gt;
&lt;h2 id="distributed-systems"&gt;Distributed Systems&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://redis.io/docs/latest/develop/use/patterns/distributed-locks/"&gt;Distributed Locks with Redis&lt;/a&gt; - Redis&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Managing locks on multiple threads of a single process is already hard! Managing them from multiple processes, machines, etc? Even harder! Here is one way to do it sanely.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html"&gt;How to do distributed locking&lt;/a&gt; - Martin Kleppmann&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A review of the Redlock algorithm for distributed locking.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://raft.github.io/"&gt;The Raft Consensus Algorithm&lt;/a&gt; - Diego Ongaro, John Ousterhout&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A good introduction to Raft, plus a listing of the primary sources: the paper, the dissertation, and implementations in just about every language.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://thesecretlivesofdata.com/"&gt;The Secret Lives of Data&lt;/a&gt; - Ben Johnson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Raft visualized.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://martin.kleppmann.com/"&gt;Martin Kleppmann&amp;rsquo;s Website&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A collection of articles on distributed systems, databases, and more.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cosmiclearn.com/dissys/"&gt;Introduction to Distributed Systems&lt;/a&gt; - CosmicLearn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A free tutorial that walks the whole field in order: networking and communication, time and coordination, consensus, consistency and replication, distributed transactions, storage, fault tolerance, and observability. I stumbled into this one and found it surprisingly good. The site has a lot of other categories too, which I have not gone through yet.&lt;/p&gt;
&lt;h2 id="databases"&gt;Databases&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.bkent.net/Doc/simple5.htm"&gt;A Simple Guide to Five Normal Forms in Relational Database Theory&lt;/a&gt; - William Kent&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ever-present question of how to effectively model real-world entities into data. This guide helps you answer it by explaining the core data normalization principles in an easy-to-understand manner.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://use-the-index-luke.com/"&gt;Use the Index, Luke!&lt;/a&gt; - Markus Winand&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NOOOOOOO!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://sqlite.org/docs.html"&gt;SQLite Documentation&lt;/a&gt; - SQLite&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I admit that I haven&amp;rsquo;t read all of it, but I found the &lt;strong&gt;Technical and Design Documentation&lt;/strong&gt; section especially helpful for understanding what problems a database can face and how databases (or at least SQLite) handle them.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.redbook.io/"&gt;Readings in Database Systems&lt;/a&gt; - Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Better known as the Red Book. An opinionated tour of the papers that shaped data management, from the classics to the more recent work, each chapter introduced by someone who helped build the field. A collection for readings on database internals and design; a good next step once you have used a database long enough to wonder what it is doing under the hood.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cosmiclearn.com/dbint/"&gt;Database Internals: DBMS Architecture Fundamentals&lt;/a&gt; - CosmicLearn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Storage engines, B+ trees and LSM trees, locking and MVCC, write-ahead logging and ARIES recovery, then query planning and execution, all with diagrams. A practical companion to the Red Book: the papers tell you why things ended up this way, this tells you how the pieces are put together.&lt;/p&gt;
&lt;h2 id="web-networking--security"&gt;Web, Networking &amp;amp; Security&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://docs.flutter.dev/ui/adaptive-responsive"&gt;Adaptive and responsive design in Flutter&lt;/a&gt; - Flutter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The first time I worked professionally on the front-end, I found out that there are multiple screen resolutions and many, many types of display devices, and managing all that drove me nuts. I will never say front-end development is easy again!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://hypermedia.systems/book/contents/"&gt;Hypermedia Systems&lt;/a&gt; - Carson Gross, Adam Stepinski, Deniz Akşimşek&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A revisit to the old way of web development in the modern technological landscape.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://hpbn.co/"&gt;High Performance Browser Networking&lt;/a&gt; - Ilya Grigorik&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Learn how various network protocols work, and their implication on web performance.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Performance/Guides/How_browsers_work"&gt;Populating the page: how browsers work&lt;/a&gt; - MDN Web Docs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An answer to &amp;ldquo;what is happening after you type google.com into the web browser?&amp;rdquo; type of interview questions.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://cheatsheetseries.owasp.org/index.html"&gt;OWASP Cheat Sheet Series&lt;/a&gt; - OWASP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Got hacked recently? Or just want to make sure your web application is secure? This is a great place to start.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://dnsimple.com/comics"&gt;DNSimple Comics&lt;/a&gt; - DNSimple&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Comics explaining how network protocols such as DNS and HTTP work.&lt;/p&gt;
&lt;h2 id="machine-learning"&gt;Machine Learning&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://christophm.github.io/interpretable-ml-book/"&gt;Interpretable Machine Learning&lt;/a&gt; - Christoph Molnar&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ever wonder which parameters, among thousands if not millions of parameters, have influence on your machine learning or deep learning models, and what do they stand for, what do they represent? Then this book is for you.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://scikit-learn.org/stable/modules/outlier_detection.html"&gt;Novelty and Outlier Detection&lt;/a&gt; - Scikit Learn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Found this while working on my bachelor&amp;rsquo;s thesis, thanks to our professor, the topic was detecting hate speech on social media texts (comments, posts, etc.). The main problem? Turns out hate speech is not as common as we thought, they just happened to be loud. The skew in our dataset was like nine to one, and we were cherry-picking the data. A traditional classifier was simply ineffective on such a skewed dataset. So we tried this technique, and&amp;hellip; it didn&amp;rsquo;t work as well as we had hoped, but I still found this to be an interesting one. So here it is as a memento of those days.&lt;/p&gt;
&lt;h2 id="philosophy"&gt;Philosophy&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://gutenberg.org/cache/epub/1998/pg1998-images.html"&gt;Thus Spake Zarathustra&lt;/a&gt; - Friedrich Nietzsche&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Modern classic philosophical work on life, morality, and belief.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.gutenberg.org/files/10715/10715-h/10715-h.htm"&gt;Counsels and Maxims&lt;/a&gt; - Arthur Schopenhauer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A pessimist&amp;rsquo;s (as in the pessimist school of thought, not your typical pessimist) take on life and happiness.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://gutenberg.org/cache/epub/5827/pg5827-images.html"&gt;The Problems of Philosophy&lt;/a&gt; - Bertrand Russell&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An interesting read about reality, existence, nature, perception, etc.&lt;/p&gt;
&lt;h2 id="tidbits"&gt;Tidbits&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://people.kernel.org/monsieuricon/creepy-crawlies"&gt;Creepy crawlies&lt;/a&gt; - Konstantin Ryabitsev&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A funny little post about AI crawlers whose story felt uncannily familiar. Long before the current AI boom, I worked in e-commerce intelligence, and our scraping evolved along almost exactly the same path: plain HTTP requests, spoofed user agents, residential proxies, reverse-engineered request signatures, and even image processing and machine learning for solving CAPTCHAs. The motivation may have been different, but the cat-and-mouse game was the same.&lt;/p&gt;
&lt;p&gt;Defend too aggressively and you hurt UX and SEO; be too permissive and infrastructure costs rise, or bots buy up discounted stock wholesale. Scraping exhausted me enough to remove it from my résumé, yet I still consider it one of the most technically challenging kinds of work I have done. Now that I sometimes find myself on the crawled side, all I can say is: that&amp;rsquo;s karma for you.&lt;/p&gt;</content></item></channel></rss>