Kernel Meetup – November

So we have a monthly meetup group here in Pune called Kernel Meetup group. Well, the name ‘Kernel Meetup’ is a kind of a misnomer: we talk about things from Kernel, Systems Programming, Systems Design to pedagogy and the current state of education system. The fun thing about these meetups are that most of the technical discussions turn into things that illuminate on stuff that is quite interesting. November’s meetup was no different.

We started with a discussion on a little assignment problem (which I had assumed the ownership of – about 2 months ago). The problem statement is to determine sources of caching in systems running Linux. As it turns out, this is huge area to work upon and this is will be a work in progress project for a long time. The discussion then turned to data structures in the kernel, assignment rules in C and natural alignment of datatypes in memory. Siddesh talked briefly about memset and Amit referenced an excellent article by ESR called The Lost Art of C Structure Packing.

We then changed perspectives to look at scheduling policies and platform policies for dynamic scheduling with respect to power management. This further led to discussion on CPU affinity, CPU sets and cgroups. Siddhesh then explained the concept of thrashing and the discussion changed tracks to look at some of the kernel concepts such as POSIX cancellation points and syscall implementations in glibc.

All in all, an excellent meetup hosted generously by the folks at reserved-bit 🙂

You can sign up for the mailing list here.

See you at the next one!

PS: Pankaj Gupta has covered some of the discussions that I missed here.

You can have flings With Python projects, but you’ll need commitment With C projects

-Siddhesh Poyarekar (2017)


Book Review: “i want 2 do project. tell me wat 2 do.” by Shakthi Kannan

I was probably as confused as you when I came across this book during Shakthi’s Q/A session in a Fedora meetup on a fine Saturday evening. I still have a long, long way to go to be a better contributor, but this book has certainly given some wonderful insights on how to open source and on software engineering in general. This book is a mix of a how-to guide and precious advise for newbies by someone who certainly has a lot of experience under his belt in the open source world. In a country like India, where software development is expected to put food on your table, there aren’t many who talk about open source software development in academia or even in industry, even though they regularly make use of, or even earn money from it.

The book is structured in 10 chapters, and in roughly 3 parts – The Open Source Philosophy (Chapters 1, 2 and 3), The Open Source Methodology (Chapters 4, 5, 6, 7)and The Open Source Ecosystem (Chapters 8, 9, 10). One may think that an average college computer science student is the intended reader for the book, but it is for everyone who wants to contribute as a programmer.

The first three chapters – Mailing List Guidelines, Attention to Detail and Project Communication emphasize on etiquette and discipline in being a contributor to a project. Especially the second chapter – Attention to Detail, covers many domains: from professional writing to writing code and from reading between the lines to reading the logs. Project Communication is in a similar vein to the first chapter and contains communication guidelines once a person has started contributing.

Chapters 4,5,6 and 7 discuss the nitty-gritties of software development. Chapter 4, titled Project Guidelines contains sections on how to get into and start working on an open source project. It also contains one of my favourite quotes from the author – “Persist and survive. Everyone has gone through the same steep learning curve and you are no different”. Words to live by.

Chapter 5 dives into the actual coding process. One can find some good code snippets in this chapter. These are presented as companion examples to some of the most important practical aspects in software development such as ‘the divide and conquer policy’ , exception handling, writing test cases  and using the right tools.

Chapters 6 and 7 are about the Methodology of Work and the Tools used respectively. The discussion over various ‘post-initial development’ concepts like packaging and bug fixing. Again one can find many code snippets in this chapter as examples to the accompanying theory. The next chapter titled ‘Tools’ deals with, well, Tools. It contains a lot of references for various applications for say IRC, Wiki, Blogging, Email, Build Tools and so on.

Chapters 8, 9 and 10 discuss more on the creative concepts . Chapter 8 titled Reading and Writing contains some good pointers (and references) for improving reading and writing , technical or otherwise. Chapter 9 is all about making and improving your presentations. It is really important for good developers to know how to get their ideas through to their audience. Chapter 10, aptly called Sustenance, is about growing in the community and open source evangelism.

Open source software presents a wonderful opportunity for a person to learn and connect to people from different cultures and traditions. I think it is a wonderful opportunity to give back to the community. Given we probably underestimate the power of open source software in our daily lives, this book is probably one of the best practical guides I have read. Reading this, I get a feeling that software engineering is much more than writing code. It is about being a good engineer and beyond that, being a good person.

This book is timeless, and not just for Shakthi’s own thoughts, but also for the references he cites. I can only imagine the sheer amount of reading he would have gone through in the process. A ‘teaser’  for this book can be found here.

Thanks Shakthi Kannan for a wonderful book!


Here is the signed copy of the book with my setup 🙂