Have a dream project, not a dream company
Being hands-on is the best way for you to learn. Practice interesting programming challenges like building your own BitTorrent client, Redis, DNS server, and even SQLite from scratch on CodeCrafters.
Sign up, and become a better engineer.
Have a dream project, not a dream company
Big Tech companies are dream companies for many, but the grass is not all green. Most people working at a Big Tech care about getting that promotion and going to the next level, and very few people are genuinely curious and want to learn and build things.
People have become laser-focused on quick wins and hitting metrics for promotions, leaving less room for exploring new ideas. This has created a culture of going slow and playing it safe over pushing boundaries.
The most rewarded employees are those who adhere to the company's processes and are good at navigating the corporate ladder. This is one of the reasons why passionate engineers rage quit.
So, instead of having a dream company to join, have a dream project that you want to work on in your career.
You can find this post on my LinkedIn and Twitter; do leave a like.
📹 Video I posted this week
This week I posted How DNS really works and how it scales infinitely.
DNS made the internet what it is today because it added much-needed convenience. Instead of remembering the IP addresses of the websites we wanted to reach out to, we typed in a human-readable and memorable name like "google.com". So, how does google.com get converted to the IP? Who does it?
In this video, we go in-depth about How DNS works, what the resolution process looks like, and the different systems and protocols involved in the process. More interestingly, we will find answers to the following questions Is DNS a single machine? how is it made fault-tolerant? how does it scale? what kind of traffic does it get? and Who keeps it updated?
🧠 Paper I read this week
This week I spent reading TiDB: A Raft-based HTAP Database
This paper presents TiDB, an open-source HTAP (Hybrid Transactional/Analytical Processing) database that uses Raft consensus to manage data consistency across distributed replicas.
Typical HTAP databases struggle to balance the needs of both transactional and analytical workloads. The paper proposes a multi-raft storage system to address this situation. It also promises strong isolation and real-time data availability for analytics.
You can download this and other papers I recommend from my papershelf.
Programming languages are evolving
Earlier programming languages were based on a single paradigm and hence were classified as OOP, imperative, or functional; and we were stuck with writing the code in the same prescribed style. For example, everything had to be a Class in Java.
But modern languages, like Go, Rust, Nim, etc are not siloed to some paradigm, but instead have chosen to be multi-paradigm. They pull in the best features from across the languages and provide them as tools that can be leveraged to get things done.
Even the existing languages are now evolving to provide multi-paradigm features. For example, you can now write functional programs alongside traditional OOP in Java.
This feels liberating as now we can again look at programming as a means to solve a problem without being stuck in some mold. Programming is an art, glad it is coming back to life.
You can find this post on my LinkedIn and Twitter; do leave a like.
📰 Interesting articles I read this week
I read a few engineering blogs almost every single day, and here are the three articles I would recommend you to read.
Thank you so much for reading this edition of the newsletter 🔮 If you found it interesting, you will also love my courses
I keep sharing no fluff stuff across my socials, so, if you resonate do give me a follow on Twitter, LinkedIn, YouTube, GitHub