TK Changelog #020
The summary of all TK's activities, goals, achievements — writing, compiler engineer, and books
Hi, it's TK here! 👋
I didn't do much this past month but I accomplished some of my goals. And as I promised myself, I want to keep this habit of writing the newsletter monthly and more consistently.
I feel this is also a way to keep myself accountable and push myself to execute everything I have in mind.
In the last newsletter, I talked about these goals
Writing: I'm carving more and more time to write. I have a lot of ideas but I don't have much time to work on all of those right now. So I will slowly (but surely) write about them all.
Compiler Engineering: to become a compiler engineer, I need to practice, and I need to learn more about PL theory.
Books: Keep reading and writing reviews and analyses of so many interesting books I still want to read.
This is basically the changelog of this current newsletter.
Writing
I've written 3 blog posts this past month, 1 note on a tech talk, and I'm still working on another one now.
I've started this project to write notes on tech talks, lectures, or any other resource I find useful. This helps me better to digest and think through the content and knowledge shared. The bonus is, it's online and public for everyone.
The first note I wrote is about Starting a Dedicated Web Performance Team. Pretty useful knowledge and how to do it properly. You can pretty much apply it for any new team and scope.
This is even more useful for me because I intend to create a performance working group and team in the future.
The new one is regarding Rendering Architecture. I've been studying and researching the impact of rendering architectures on performance on the web.
In the context of React.js, the gist is Client Side Rendering (CSR) → Server Side Rendering (SSR) → Streaming SSR + Server Components.
I want to write about how CSR is slower in terms of loading and making the website interactive, how SSR solves the loading part and its performance bottlenecks (Sync steps or lack of parallelization & hydration), and using Streaming SSR + Server Components to address these issues.
This is actually a project I'm doing at work and I'm pretty excited about the research and the performance and business we can have with it. It's getting a lot of traction at work and we're going to start executing it.
Compiler Engineering
I've just finished the compiler! 🎉✨ What a ride! 2 years with a lot of gaps, and inconsistent work, but I've finally finished the book and the compiler implementation.
This is the list of all the Pull Requests I've done to implement each part of the compiler:
The compiler has support for integers, booleans, strings, arrays, hashmaps, builtin functions, and closure. I had a lot of fun working on it and wow! I've definitely learned A LOT reading the book.
Books
Talking about books, I have finished two and just started a new one.
I had a ton of learnings reading the High Output Management by Andy Grove. The one that stuck the most for me was how to think about leverage and valuable deliveries.
Understanding the big picture of a project, software, product, and process
Focus on the high-quality output
Identify limiting steps to fix, improve, or optimize them
Monitor to maintain quality
Even though I am an individual contributor, I saw a lot of value in reading this book. See the full book review here: High Output Management.
And you already know now, I've finished the Writing an Interpreter in Go book. If you always wondered how programming languages are made, I highly recommend this book. It's a difficult topic and Thorsten Ball does a pretty good job of making it very accessible for any software engineer.
I've never written any line of code in golang but could parse everything in my head. I would just recommend you understand the basic stuff of programming (variables, conditional statements, loops) and are comfortable in a programming language of choice to be able to implement it from scratch. I did it: Crafting an Interpreter.
Right now, I'm reading a lighter book: “Build: An Unorthodox Guide to Making Things Worth Making” by Tony Fadell. It's a fun and super fast reading. I'm enjoying it.
Interesting Links
On PLs
On Web Performance
The Future (and the Past) of the Web is Server Side Rendering
The Benefits of Server Side Rendering Over Client Side Rendering
What Is Server-side Rendering And How Does It Improve Site Speed?
On the Web