1 Month Learning Rust - Goals and Roadmap

1 Month Learning Rust - Goals and Roadmap

Daily short news for you
  • Since the Lunar New Year holiday has started, I won't be posting anymore. See you all after the holiday! 😁

    » Read more
  • Continuing about jj. I'm wondering if there are any GUI software made for it yet to make it easier to use. There are already so many similar to git that I can't count them all.

    Luckily, the author has compiled them all together in Community-built tools around Jujutsu 🥳

    » Read more
  • Turso announces that they are rewriting SQLite in Rust. This adds another piece of evidence supporting the notion that Rust is "redefining" many things.

    But the deeper reason is more interesting. Why are they doing this? Everyone knows that SQLite is open source, and anyone can create a fork to modify it as they wish. Does the Turso team dislike or distrust C—the language used to build SQLite?

    Let me share a bit of a story. Turso is a provider of database server services based on SQLite; they have made some customizations to a fork of SQLite to serve their purposes, calling it libSQL. They are "generous" in allowing the community to contribute freely.

    Returning to the point that SQLite is open source but not open contribution. There is only a small group of people behind the maintenance of this source code, and they do not accept pull requests from others. This means that any changes or features are created solely by this group. It seems that SQLite is very popular, but the community cannot do what they want, which is to contribute to its development.

    We know that most open source applications usually come with a "tests" directory that contains very strict tests. This makes collaboration in development much easier. If you want to modify or add a new feature, you first need to ensure that the changes pass all the tests. Many reports suggest that SQLite does not publicly share this testing suite. This inadvertently makes it difficult for those who want to modify the source code, as they are uncertain whether their new implementation is compatible with the existing features.

    tursodatabase/limbo is the project rewriting SQLite in Rust mentioned at the beginning of this article. They claim that it is fully compatible with SQLite and completely open source. Limbo is currently in the final stages of development. Let’s wait and see what the results will be in the future. For a detailed article, visit Introducing Limbo: A complete rewrite of SQLite in Rust.

    » Read more

The Issue

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.

Why Rust?

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.

Goals and Roadmap

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.

Conclusion

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!

Premium
Hello

The secret stack of Blog

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

As a developer, are you curious about the technology secrets or the technical debts of this blog? All secrets will be revealed in the article below. What are you waiting for, click now!

View all

Subscribe to receive new article notifications

or
* The summary newsletter is sent every 1-2 weeks, cancel anytime.

Comments (2)

Leave a comment...
Avatar
Ẩn danh6 months ago
Hi bạn, mong bạn viết tiếp về quá trình học Rust :D
Reply
Avatar
Xuân Hoài Tống6 months ago
Úi có độc giả ủng hộ là lên bài liền. Ok ạ :D
Avatar
Ẩn danh1 year ago
Xin chào, tôi bình luận ẩn danh và đang kiểm tra nó có hoạt động hay không?
Reply
Scroll or click to go to the next page