Prabhu Eshwarla is the author of Practical System Programming for Rust Developers, we got the chance to sit down with him and find out more about his experience of writing with Packt.
Q: What is/are your specialist tech area(s)?
Prabhu: Rust, Blockchain, Web and backend distributed systems
Q: How did you become an author for Packt? Tell us about your journey. What was your motivation for writing this book?
Prabhu: One of the Packt acquisition leads had approached me in 2018 for writing a book on Golang. I had then proposed some changes to the book structure, but that eventually didn’t move forward. At that time, I was focusing on the Blockchain space, and realized that a lot of the newer blockchain teams started using Rust to build the core components. When I started to dive deeper into Rust, I was deeply attracted to the language and its principles. I then started to use it for my client projects, and realized how immensely powerful Rust is as a programming language, while also being very modern. But Rust is not easy to learn, so I wanted to share my experience with Rust to newcomers, and started to write a few blog posts. In early 2020, I got an idea for a book, and had started to write a book on Rust programming for advanced beginners. After a few chapters I realized that I would benefit from collaboration with a professional publisher especially in terms of creating something that has a product-market fit. That’s when I approached, the Packt contact who earlier had approached me. But by then, that person had left Packt and was kind enough to connect me with Karan, another acquisitions editor in Packt. Karan, after discussion with the Packt Board asked if I would be willing to write a book on System Programming in Rust. I was initially not interested, because I already had an idea for another Rust book that I began to write. But after a few calls with Karan, I got convinced to take up this project. That’s how it began.
Q: What kind of research did you do, and how long did you spend researching before beginning the book?
Prabhu: When I started learning Rust in 2018, the resources available were scarce (it is still the case, I think). The Rust ‘Book’ is a fantastic resource, but while it explains the concepts very well to get started, there weren’t many quality resources that teach how to apply Rust concepts like ownership, lifetimes, memory safety etc. in a practical context. I pretty much devoured whatever was available on Rust in public domain, including blog posts from Rust core dev members, official documentation, tutorials from other early learners, GitHub repos, YouTube videos, podcasts of Rust experts, conference talks, reading others’ code, looking into third-party crates from crates.io, stack overflow answers, and most importantly, writing lots of Rust code myself from scratch without copy/paste, but I did all these simply to understand Rust better as part of my learning process (I had no intention to write a book then). I also developed software for a few clients and deployed Rust into production environment, which further strengthened by understanding of the language and ecosystem.
Q: Did you face any challenges during the writing process? How did you overcome them?
Prabhu The topic of system programming is vast and deep. It was my first challenge to contain the scope and length of the book. Secondly, designing example projects in Rust that are small enough to explain within one chapter, yet complex enough to be practical and meaningful for the reader, was a challenge. I wrote, rewrote and threw away a lot of code to arrive at the final set of projects for the book.
Q: What’s your take on the technologies discussed in the book? Where do you see these technologies heading in the future?
Prabhu: Rust is the programming language that will be around for the next 40 years, I’d say. I say this confidently because C has dominated the world of software systems programming for the last 40 years or so, and Rust is simply a better and more modern language than C for memory safety, while retaining all its low-level resource-control characteristics. Beyond system programming, Rust is very versatile to be used in many different problem domains including web and backend development, blockchains and embedded systems. Rust is here to stay, and will soon be taught as part of standard CS curriculum in universities.
Q. Why should readers choose this book over others already on the market? How would you differentiate your book from its competition?
Prabhu: The book differentiates itself with its focus on the target reader and the teaching methodology. There are tons of material on systems programming, most of them focused on C/C++. Very little coherent material is available to teach how to do them in Rust. Someone who has dipped their feet in Rust and are eager to learn how to apply it to systems programming will find this book valuable. In terms of methodology, each chapter contains a succinct introduction to the concepts for one of the system programming resources (such as files, memory, multi-threading etc.), what features Rust provides to control that system resource with lots of code snippets, and concludes with an example project that is both useful and fun to code along.
Q. What are the key takeaways you want readers to come away from the book with?
Prabhu: For businesses and organizations, I’d say Rust is a viable alternative to C/C++ for doing systems programming, and shines above them in writing memory-safe programs for mission-critical tasks. For system developers, I’d say that Rust is a fun language to work with because of its modern and functional programming features, and makes your life a lot simpler because the compiler simply prevents you from writing many classes of bad code. It also means you come out looking good as a developer and, as a bonus, don’t have to spend countless hours debugging common memory-safety or data race issues in production.
Q. What advice would you give to readers learning tech? Do you have any top tips?
Prabhu: You first need to understand the philosophy of the Rust language and be convinced about it (it helps to fall in love with it). Without this, learning Rust can be frustrating. Because in the initial stages, devs will tend to compare how easy a particular task is in another language compared to Rust. But it’s in these times that your firm belief in the philosophy of Rust will sail you through, because Rust makes you write software products that are built to last. Once you get past the learning curve, you will swear by Rust, like me. But if you don’t see the power of Rust’s unique ownership model, or if you don’t come with an open mind to learn Rust (especially if you are deeply attached to another programming language), it is not likely to work out, because you will not have the stamina to fight the Rust borrow checker and make it your friend.
Q. Do you have a blog that readers can follow?
Prabhu: I usually blog on Medium and LinkedIn, but in the last year I was busy with my book writing engagements, so haven’t blogged much recently.
Q. Can you share any blogs, websites and forums to help readers gain a holistic view of the tech they are learning?
Prabhu: The Official Rust book is where I’d start. On an ongoing basis, Rust Reddit & SO forums, ‘This week in Rust’ newsletter, official twitter handles of Rustlang and its core devs, are all good places to stay abreast of what’s going on.
Q. How would you describe your author journey with Packt? Would you recommend Packt to aspiring authors?
Prabhu: It’s very organized and intensive. Packt forces you as an author to upfront spend a lot of time to clearly think through what you are going to write about to the level of chapter subheadings, so when the clock starts to tick, you can stay focused on the writing. The team I’ve worked with is very professional and responsive, and helped me to release the book as per the planned dates with no delay.
Q. Do you belong to any tech community groups?
Prabhu: I actively follow a wide set of tech forums including web, system, mobile and application development, blockchains, distributed systems, databases and system programming. My current professional focus is on decentralized finance.
Q. What are your favorite tech journals? How do you keep yourself up to date on tech?
Prabhu: I follow writings of individuals more than journals, because when people write in an individual capacity and discuss/debate on topics they are passionate about (like on Reddit or discord), they express unfiltered opinions that stimulate thinking. Also, I prefer to understand any new tech myself deeply, try it out and assess its worth. I’m naturally curious about what’s going on in the tech world, so I try to find time to catch up with what’s going on, but it’s not always easy on a day-to-day basis.
Q. How did you organize, plan, and prioritize your work and write the book?
Prabhu: Writing a book was in addition to my day job, and other personal responsibilities, so it was very demanding on my time. I had to carve out a few hours every evening/night and practically most weekends to keep to the book schedule. Each chapter involves multiple rounds of reviews from content and tech editors, and these iterations have to be done in parallel with the original chapter schedule. It was not easy, but then when the book was completed finally, it gave a sense of accomplishment. This is my first complete book as a tech author.
Q. What is that one writing tip that you found most crucial and would like to share with aspiring authors?
Prabhu: No matter how technically brilliant you think you are, remember that you are writing not to showcase your knowledge, but to teach someone to acquire a practical skill. This mindset shift is important, and shapes everything from the book scope, to the tone and level of the writing, the chapter structure, selection of examples etc.
You can find Prabhu’s book on Amazon by following this link: Please click here