College, Software Engineering fundamentals, Web Performance, compsci Research
Updates on what I've been doing, my web perf and programming language theory research, college, and improving my craft by focusing on software engineering fundamentals.
Hey, It's TK here! Long time no see.
It's been more than 4 months without sending a new newsletter, right? I know! The good part is that I have a lot of things to say and share with you. Here are the topics I'll cover in this newsletter log:
What I've been doing
College
Fundamental knowledge in software engineering
New articles I have written
Current job and what I've been doing after quitting QuintoAndar
My website improvements and updates
Updates about my research: web performance (A LOT of stuff!), programming language theory
Other stuff: health & books
Next steps
The next big article I'm working on
Roadmap for the website
Write about algorithms
Keep researching
Keep working on the fundamentals
So let's start, we have a lot of topics to cover.
What I've been doing
College
I'm back in college. A couple of years ago, I dropped out of college because I wanted to focus on building products, building my software engineering skills, and being part of startups. At that time, college was a distraction for me. But not now.
Today I want to study computer science because, first, I like computer science topics and I want to learn them more in-depth. And second, I want to do a PhD in computer science, more specifically in Applied Programming Language Theory. I like compilers, theory in programming languages, and web browsers. I want to do applied research on these topics.
For this year, everything seems to be going as planned. Let's see in 5 years if I reach this goal of doing official research on those topics.
Fundamental knowledge in software engineering
I've been working on it for quite some time now but this is the real focus. I want to use my time to focus on the fundamentals of software engineering and frontend engineering. What does that mean?
I'm studying computer science, learning and practicing algorithms & data structures, crafting my architectural skills, and understanding how things work under the hood.
Computer science: I already mentioned this earlier. Studying computer science at college will help me learn these topics or at least be the starting point to learn these topics in depth.
Algorithms & Data Structures: algorithms and data structures implemented from scratch and problems solved. Everything is documented in this Algorithms repository and also in my problem-solving twitter thread.
Architectural skills: I divide this into four steps (or, better, circular cycles) — 1. designing, drawing high-level architecture of the application I want to build; 2. going into implementation; 3. code review, feedback, review possible architectural problem, learn, and revisit architecture; 4. create a framework to tackle system design / architectural problems for real-world applications.
Building from scratch: to understand things, I like to build them from scratch. Some topics I have already implemented like memoization function, promise, event emitter, debounce, throttle, bundlers, compilers, and so on.
Fundamental knowledge is really important because most things are created on top of these ideas. Having a good foundation of engineering knowledge is essential to navigate through different concepts and learn new shiny things.
Current job
After leaving QuintoAndar, I decided to join SmartNews, one of the biggest startups in Japan. There I worked on different projects but mostly working on frontend infrastructure projects: design system tokens & components and our ads allocator algorithm (mostly improving the DX of the project: adding e2e/integration tests, optimizing the performance, optimizing the build system — trying out swc and esbuild in favor of other slower tools).
As I decided to stay in Brazil for a while, it didn't make sense to keep working for SmartNews, mostly because of the timezone — it's 12 hours of difference between Brazil and Japan.
So now I'm working for a Dutch startup called FindHotel. I went to Amsterdam for a while and I loved the city. Such a nice place to travel.
I'm working as a fullstack software engineer: mostly TypeScript and React in the frontend and node and TypeScript in the backend. Other contributions are design system improvements and web performance optimizations. Having fun and learning a lot there.
My website improvements and updates
I created a microblog within my blog. If you go to iamtk.co/microblog, you see the compilation of microposts I wrote. Still small of posts but it will definitely grow over time.
I also created this Twitter thread with the microblog compilation.
As a Brazilian, I also want to provide content for my fellow Brazilian friends. This is why I have been translating all my blog posts to Portuguese. One of the first pieces of content translated into Portuguese was my Functional Programming Principles in JavaScript post.
This will also grow over time as I don't have time to focus only on that now. One post at a time.
To make my blog more interactive, I created a repository (github.com/imteekay/iamtk.co) to handle different things:
bugs, typos, improvements: you’ll be able to request anything
questions (about any blog post or ama - ask me anything)
feature request: new feature for the website you want
you can follow the iamtk.co roadmap for new features and improvements
Updates about my research: web performance & programming language theory
Now that most of my time I'm working and studying at college, I don't have much time to do research in PLT. I wish I had more time to work on these interesting things. For the next months, I will reorganize my agenda and I need to prioritize this research.
In 5 years I want to start my official research in Applied PLT, so I want to be prepared as much as possible. There are a lot of resources I need to read. I just need more time.
Regarding web performance, I could study it more. I even had time to write two new pieces of content:
I started attending the webperf working group sessions now. It's nice to be close to web performance experts and enthusiasts. It's mostly about standards and discussions about Web APIs related to performance.
It's been very interesting to learn about this topic. With more time and experience, I feel more skilled and feel more mature about the knowledge I've been gaining through projects.
But I still have a lot to learn, research, and study.
Other stuff: health & books
Health is a big part of my priorities. Eating well. Sleeping well. And consistently exercise. The trio I keep doing and building as my health habits.
Running is the sport/exercise I found that I really enjoy doing. I have a Strava account to keep track of every running and track the quantity and quality of my exercises during the week and month. I also have a Twitter thread showing my week of running as a way to document and show notes and insights.
As always, I'm reading a lot of books. And as a slow reader, I'm reading different books at the same time. I carefully take a lot of notes and write down my thoughts. This is why I never finish books, or at least, it takes a lot of time to finish them.
I have a blog post I want to write about that will be called “A commonplace book: how I read books”, or something around this idea. Being a slow reader is how I make my reading experience richer, this is how I do and I feel I get the most out of books.
Next steps
The next big article I'm working on: I'm writing about how I improve my craft, a big essay about self-improvement, a lot of research, studies, and learnings.
Roadmap for the website: I created the roadmap, now I need to create time to work on those features and improvements for the site.
Write about algorithms: document my algorithm solutions into posts and make them available. Also, write about algorithm patterns I found while working on these problems.
Keep researching: more research and studies on web performance. I'm investing money in my college studies (computer science / PLT research) and I'll invest in courses and workshops/conferences about web performance.
Keep working on the fundamentals: algorithm problems, building things from scratch, and architecture. I'll always be crafting the fundamentals.
I hope I can be more present and send a newsletter consistently, like, 1 per month, maybe? It's not a promise, but I will try.
Well, that's it for today! Keep studying and coding! Until next time. ✌️