Kaiwan N Billimoria is the author of Linux Kernel Programming – Part 1 and Part 2, 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)?
Kaiwan: Clearly, and only, the Linux OS: within this vast domain, what little expertise I possess centers around Linux systems programming, bash scripting, kernel internals, and embedded Linux work.
Q: How did you become an author for Packt? Tell us about your journey. What was your motivation for writing this book?
Kaiwan: This is my second book; the first too (Hands-On System Programming with Linux, Oct 2018) was with Packt which I’m very grateful for. This book is a rather ambitious attempt at covering the inner details (to a good extent) of a large, complex and continually moving target – the Linux kernel! I think it’s important: many, if not most, new technology products are in some manner tied in with the Linux OS… a deep enough understanding of its internals and the ability to program it well is critical for an aspiring systems developer. Not just that, real-world products have to be maintained; finding and fixing bugs is simply a part of life… the knowledge gained from here, will (fingers crossed!) be of immense value when not only developing kernel modules, drivers and code, but also in debugging the same. My motivation is simple really: to try and give back, in a small way, to the community from which I’ve gained so much…
Q: What kind of research did you do, and how long did you spend researching before beginning the book?
Kaiwan: There wasn’t an explicit ‘research’ period, to be honest… it’s more like, the experiences I’ve gained by using, programming and teaching Linux for well over two decades is something I try and capture in the book. Of course, while writing the book itself, I did need to further research a few areas… the whole project took a little over two years to complete!
Q: Did you face any challenges during the writing process? How did you overcome them?
Kaiwan: With the subject matter being the Linux kernel, the major challenge was to fix on a recent-enough stable kernel which will still be of interest and importance when the book releases. In fact, when I began writing (in Jan ’19), the ‘attractive’ kernel to base this book on was, for me, the 5.0 one. Of course, the project keeps moving and by Nov 2019 the 5.4 LTS kernel was released. I spoke with the team at Packt and we all agreed its really best to switch the book to use this kernel. I did so (a lot more work!) and it turned out to be a really good decision – the 5.4 LTS kernel will be maintained through Dec 2025, keeping this book’s content valid for a pretty long while…
Q: What’s your take on the technologies discussed in the book? Where do you see these technologies heading in the future?
Kaiwan: I’d say ‘relevant’ is the right word here… the Linux ecosystem is here to stay, what with all the benefits around the opensource model being clearly seen by both organizations and individuals. The future? I don’t think I can answer that; Linux ‘evolves organically’… (If okay, a mention of an interview I did for OSFY magazine in Apr ’19 which also talks about this: https://www.opensourceforu.com/2019/04/there-are-no-road-maps-or-rigid-rules-when-it-comes-to-linux)
Q: Why should readers choose this book over others already on the market? How would you differentiate your book from its competition?
Kaiwan: Because it’s very good, especially for those relatively new or unfamiliar with Linux kernel programming? Haha… well, many excellent books do exist of course; a key thing: many of the deeper design and architectural decisions are evergreen and will never really be outdated (consider that Linux is the latest Unix-like OS, and that Unix was born circa 1970; its still relevant!) I’ve tried to explain these design principles… also, I give due importance to coding for security, a key thing for the budding kernel developer to learn early in their programming careers. And of course, the recent 5.4 LTS kernel (which will remain around for a long while) really helps.
Q. What are the key takeaways you want readers to come away from the book with?
Kaiwan: I’d like the reader to be able to ‘see the forest’ and not just the trees. To get a well balanced diet of both theoretical (but critical) kernel internal details as well as hands-on practical real-world code to work with… I’ve consciously tried my best to balance and convey just this. Thus, this book goes well beyond being a ‘recipe’ book of sorts; it delves into deeper details where required but still conveys the practical essence required by the kernel or driver developer. I’ve personally seen many budding driver authors struggle; often its simply because no one has really explained to them the key points to look out for when allocating (and releasing) kernel memory, how user/kernel stacks and task structures interrelate, how the CPU scheduler goes about it’s work, etc etc.
Q. What advice would you give to readers learning tech? Do you have any top tips?
Kaiwan: Be scientific in your approach, be *empirical*; it simply means – don’t take the book, the manual, the person’s word for it; try out things for yourself and learn how it really works.
Q. Do you have a blog that readers can follow?
Kaiwan: I do: https://kaiwantech.wordpress.com/
Q. Can you share any blogs, websites and forums to help readers gain a holistic view of the tech they are learning?
Kaiwan: I think this is covered really well and in great depth by the ‘Further Reading’ materials we’ve put together for this book; they’re fun, relevant and exhaustive. https://github.com/PacktPublishing/Linux-Kernel-Programming/blob/master/Further_Reading.md#further-reading
Q. How would you describe your author journey with Packt? Would you recommend Packt to aspiring authors?
Kaiwan: Though this sounds cliched, my experience really has been a very rewarding one… I’ve learned a lot along the way, its been an awesome fun journey! I’d highly recommend Packt to aspiring authors. The Packt team I had the good fortune to work with, often went beyond the call of duty to ensure that things were going well. Thank you all so much! (please see their names in the book’s ‘Contributor’s’ page)
Q. What are your favorite tech journals? How do you keep yourself up to date on tech?
Kaiwan: For many years I subscribed to the ‘Linux Journal’ and the ‘Open Source For U’ magazine (still do). The fantastic LWN (Linux Weekly News) site is a rich resource of information.
Q. How did you organize, plan, and prioritize your work and write the book?
Kaiwan: I conduct corporate training’s for various engineering customers (on – what else – Linux stuff). At times, I had to consciously plan my dates so that I also had time to work on the book… My ‘hobby’ is ultra running (though, with the pandemic, 2020 didn’t pan out well at all in this regard). Still, I find that going out for a run (relatively long ones at times) really does help crystallize thoughts and ideas! Family time is really important as well.. As with everyone else, it’s just a rather big balancing act one has to be able to pull off.
Q. What is that one writing tip that you found most crucial and would like to share with aspiring authors?
Kaiwan: Be flexible! Things can and do change… even the best laid plans.
You can find Kaiwan’s book on Amazon by following this link: Please click here