Hello readers of 2coffee.dev. Lately, I haven't been publishing many new articles, and I haven't had much time to maintain my daily reading habit. So what's going on? Well, I've been drawn into a new programming language: Rust!
The first time I heard about Rust was probably 1-2 years ago, back when Blockchain game projects were thriving. I had a friend who was heavily invested in that field, and one day, he mentioned Rust as a language used for writing Smart Contracts, followed by a long presentation on how it works. I couldn't quite grasp it at the time. Did someone really create a new language just for Blockchain? That's what I thought.
It's not that I wasn't interested, but at that time, I was fascinated by another language - Golang! Yes, the green gopher with its sleek and cute design. But beneath that exterior lay a powerful speed demon named Go! Go! Go!... Golang appeared as a savior because the Node.js I was using felt like a hungry monster, ready to devour anything "random." I needed to replace this "black hole" with a more friendly mouse!
Recently, Rust has been mentioned so much that I began to wonder why it's so popular. Honestly, I've only seriously read Rust documentation for the past few days, and I'm already captivated. It's hailed as the most loved language of the year, boasts a powerful memory management mechanism, and offers exceptional speed. While I'm not one to chase trends, these compelling aspects have piqued my interest.
I'm concerned that I might not be truly committed to learning. Time is limited during the day, and if I spend too much time studying, where will I find time to write new articles, attend classes, go to work, or add new features for my readers? That's why I came up with a solution that benefits both sides: learning and documenting what I learn. It's like a commitment to the learning process. You get new articles, and I get to learn. It's a win-win.
Rust sits atop the list of most loved programming languages, as per StackOverflow surveys. Rust introduces a memory management mechanism that sets it apart from most common programming languages, delivering outstanding performance and speed. If I learn to apply Rust effectively, I can create various command-line tools or web servers with "expectable" performance.
What makes you apprehensive when starting to learn a new language? For me, it's the language's documentation. I've been a JavaScript developer and loyal to it for many years. A while back, I learned Golang's syntax, and its documentation was straightforward and comprehensive, making the learning process faster. Shortly after, I could transition my entire server to Go. But if you try to find JavaScript documentation, there's a plethora of information. Honestly, even though I'm not that young anymore, every time I look at the extensive JavaScript documentation, I feel somewhat overwhelmed.
Rust's documentation is detailed and thorough. While I haven't read it all, skimming through a few sections, the presentation, and explanations are clear and detailed. They even include illustrations and explanations for why a piece of code doesn't work, as well as how to fix errors or issues. Honestly, it's almost as if Rust's creators have a background in writing novels!
Rust can do many things I've heard of, like building compilers, command-line tools, some system services, software, or even web servers... There's so much that's exciting, and I'm not sure if I'll know it all. But it's probably worth learning and applying to my practical projects.
My ultimate goal is to become proficient in Rust (sounds determined, doesn't it? - but I wonder how long I can maintain it). I want to use it to develop additional services or tools for 2coffee.dev. And if possible, I'd like to apply it to my company's projects as well.
To achieve that, we need a short and long-term roadmap. First and foremost, I'll read the entire Rust documentation at The Rust Programming Language. An interesting thing is that the Rust community has "forked" their documentation to another repository, where they've added questions and short quizzes in most sections. You can find it at The Rust Programming Language + Quiz. I'm currently reading and practicing with the forked documentation.
Once I've completed the documentation, the next step is to explore Rust's libraries and frameworks using the keyword "Rust awesome". Here, I'll gain a comprehensive overview of what the community offers and what Rust is capable of.
Next, I'll write one or more services for 2coffee.dev. An interesting development is that I've already migrated my blog to Cloudflare Worker & Pages. Perhaps Cloudflare was quick to catch the trend when their officially supported Workers for Rust were released. What could be better than having a place to run your code immediately?
Lastly, the learning journey never ends. Grasping the basics doesn't mean it's over. There's still plenty of advanced knowledge and best practices to discover with this language. Though this might extend beyond my "1-month learning Rust" timeframe, I still have to document it to remind myself of what I need to do.
In the coming days, I'll make an effort to write more articles about the learning process, what I've learned, explanations, and try to convey them to you in an understandable manner. As I mentioned, coming from a JavaScript background, you may find me "trying" to equate some Rust concepts to JS for easier visualization. Today is 09/21/2023. I hope that by 10/21/2023, we'll come back with even more promising developments!
Hello, my name is Hoai - a developer who tells stories through writing ✍️ and creating products 🚀. With many years of programming experience, I have contributed to various products that bring value to users at my workplace as well as to myself. My hobbies include reading, writing, and researching... I created this blog with the mission of delivering quality articles to the readers of 2coffee.dev.Follow me through these channels LinkedIn, Facebook, Instagram, Telegram.
Comments (2)