This is the sort of approach that the 'Understanding Unix/Linux Programming' [1] book takes - building common unix utilities in order to introduce systems programming concepts. IMO, it's a good starter for meatier material in Richard Stevens books.<p>For those interested in this sort of thing, Harvard Extension School offers a course based off of the 'Understanding Unix/Linux Programming' text taught by the author (<a href="http://sites.fas.harvard.edu/~lib215/" rel="nofollow">http://sites.fas.harvard.edu/~lib215/</a>). I took it a few years ago and found it worthwhile...<p>[1] <a href="http://www.amazon.com/Understanding-UNIX-LINUX-Programming-Practice/dp/0130083968" rel="nofollow">http://www.amazon.com/Understanding-UNIX-LINUX-Programming-P...</a>
As a learning experience this is a great idea. I think, however, that it would be really useful to note, when applicable, what standard UNIX tool just does a job for you (and presumably learning that tool, too)---about 1/3 of these are either completely handled by a standard tool or easily handled with a bash one-liner, and knowing when not to reinvent the wheel is often most of the battle. :)<p>(I realize that in the intro Zed talks about people being better at finding than building tools. My suggestion is only that you can help even more people by pointing out both paths.)
This looks interesting. It reminds me of book that explained the details behind dealing with unix processes using ruby. I really liked it: <a href="http://www.jstorimer.com/products/working-with-unix-processes" rel="nofollow">http://www.jstorimer.com/products/working-with-unix-processe...</a>
This is awesome. I can't wait to see these types of lessons built out for more languages other than Python. I think completing milestones is much more effective way of learning for obvious reasons.<p>Thank you, Mr. Shaw!