On Computer Science, Web Performance, and Books
A summary of the last month, my studies and research, and next steps.
In this newsletter, I will update you with all the content I've been producing, projects I'm working on, my studies and research, and some life updates.
This is the agenda
Web Performance Research
PLT: Programming Language Theory
Rust studies
Algorithms & Data Structures
Books
Health
What I will keep doing
The best resources I have read this month
Let's go!
Web Performance Research
This past month, my main focus was web performance. I did a lot of research and interesting projects at FindHotel.
First things first: I bought a course on DevTools designed for performance by Harry Roberts: Setting up DevTools for Performance Testing.
This course gave a lot of interesting insights about how to get the most out of DevTools when it comes to performance profiling.
Also started the month writing about Why Web Performance, my reasons behind why working on webperf projects.
I broke it down into 3 parts: UX, Accessibility, and Sustainability. It's a short, 2-minutes blog post. Give it a try: Why Web Performance.
As I said, I've been working on some interesting web performance projects at FindHotel. One of the projects was a runtime performance optimization I shared in the last newsletter.
After 3 weeks of running these optimizations as an A/B test, I got some interesting results:
2.4% improvement in conversion
2.2% improvement in engagement
50% better FID score for desktop
85% better FID score for mobile
You can read the full post about these results with charts and also show more granular data on how improvements in performance can have a huge impact on less powerful devices like mobile devices: Runtime Performance Optimizations: Improvements & Results.
While running this A/B test experiment, I was working on reducing the bundle size of our application using different patterns and strategies for code splitting.
I wrote down an article with all the details about this whole process and also a case study: Web performance, code splitting strategies, and a React case study.
If you prefer, you can also read this content via Twitter threads:
Besides that, I'm reading and studying a lot of webperf-related content.
I'm reading two interesting books on this topic: one is Image Optimization by Addy Osmani and the other is High-Performance Browser Networking by Ilya Grigorik. These are pretty interesting books. Highly recommended.
I'll also be attending the Perf.now conference in Amsterdam. A lot of interesting talks.
There's also an experiment tool I'm building. It's called the “Web Performance Roadmap”.
This experiment will be grouping all important topics in Web Performance. If you click the topic, it opens up a dialog UI with links to different resources. You can have a sneak peek here: PoC implementation.
In the future I want to make it easier to “save” the resources you already consumed, something like “check”/”uncheck” the resources/links you studied. But it's still an experimental proof-of-concept yet. Let's see if I can make it live soon.
PLT: Programming Language Theory
I've already told you I'm back to college. And that I have a goal of doing a master’s or Ph.D. in computer science, more specifically in applied programming language theory (PLT).
It's a goal I want to accomplish 5 years from now, this is why I'm back to college and I'm already honing my skills to be prepared for this challenge in the future.
How? Now I'm reading the Browser Engineering book. It's pretty interesting and very hands-on. So I can learn the theory behind web browsers and implement one.
Web browsers are pretty interesting because they intersect many fascinating topics in computer science: algorithms, data structures, programming language theory, system programming, computer architecture, and so on.
Everything will be documented in future blog posts and here on the programming language research.
Rust studies
Why Rust you would ask. My very first argument is that I find it interesting to learn new languages with different paradigms.
Together with it, I think many interesting projects are using or started using Rust recently. To mention a few, Rust will go into Linux 6.1 and this is from the Azure CTO:
As I want to work with web browsers, I guess I'll code most of my time in C++, and learning Rust is a step forward in this goal and it shares similarities with C++.
I'm using the Rust book for now and I have a private Github repo. If you're interested in this repo, DM me, so I can give you access to it.
Algorithms & Data Structures
Working on my algorithm and data structures skills is an ongoing and never-ending project. Still solving a lot of problems and sharing them on my thread.
I have also learned that browser engineering has a lot of usage of interesting data structures. It's one more reason to keep learning this topic.
Also found this course on algorithms. It's free and it has high-quality content. I'm doing one class per day, so I can keep learning the theory behind this topic and not only focus on implementation/coding.
Health
It's been a lot of fun and work when I'm running. Around 40-50km per week. The best part: I've been consistent forever. That's the main secret. I'm focusing on my long-term health and that's what matters.
I'm kind of a nerd who likes in-doors activities, most of them using the computer. So I'm most of my time sitting in a chair, not exercising my body. Just my brain. And sometimes not even my brain, to be honest.
Physical exercise habits should always be part of my life and they will be for a long time.
It's easier when you are in shape when you feel motivated, and you created the habit of doing it. And I want to stick to it.
Another habit I'm building over time is cooking my own food and trying to understand more about it. Create the habit of not buying delivery food all the time.
With all that in mind, the results are pretty good. In the past 1 year and 6 months, I lost 16kg. In the last 3 months, I lost 6kg. I drastically changed my health life.
Books
There are so many books I want to read and that I'm currently reading. I don't stick to just one book. I read different books simultaneously. And that works *for me*.
The books I'm currently reading:
Steve jobs: the biography. Getting inspired by one of the greatest
Web Browser Engineering: learning about the web and building a web browser from scratch
Image Optimization: more about performance specifically on images
High-Performance Browser Networking: understanding how browsers and the network work. This will improve my understanding of performance
The Rust book: learning a new PL paradigm and getting used system programming
Paid Subscribers
I'm still thinking about what's the best approach to provide value for paid subscribers first. This month I tried to publish draft content on the things I'm working on and share the topics I'm studying and what are the next steps.
If you find it interesting, consider subscribing to the publication.
What I will keep doing
I want to keep everything I've mentioned in this newsletter:
Web Performance Research: keep exploring new problems, understanding RUM data, writing articles, honing my perf skills, and finally finishing the roadmap
PLT — Programming Language Theory: keep reading the Web Browser Engineering
Rust studies: keep reading the book and doing algorithm exercises
Algorithms & Data Structures: keep doing code challenges and learning and applying theory
Books: keep reading! 📚
Health: keep running and studying food
The best resources I have read this month
Web Performance
The Performance Inequality Gap by Alex Russell
Setting up DevTools for Performance Testing by Harry Roberts
Web performance course by Webpagetest
Web terminology by Ben
Algorithms & Data Structures
Course on algorithms and data structures by Frontend Masters
Patterns for Coding Questions by Design Gurus
PLT research
RenderingNG: the new chrome architecture by Google
Servo: Designing and Implementing a Parallel Browser by Mozilla
Productivity
Building an antilibrary by Ness Labs
9 Peak Performance Tips by Ryan Holiday
How To Read More by Ryan Holiday
3-Step System for Reading Like a Pro by Ryan Holiday