Raspberry Pi Networking Cookbook
I must say that I was rather intrigued when I first came across the title of this book. Admittedly I had my own biases and expectations as to what I might find inside its covers. I was even more intrigued by the "blurb" on the front cover of "An epic collection of practical and engaging recipes for the RaspberryPi". Those of you who watch UK TV may be aware of a recent series of adverts concerning "somewhat deluded individuals" who, inspired by discovering bargains into propel themselves into quaintly ridiculous adventures e.g. surfing on an inflatable crocodile, joining a group of astronauts on a space mission equipped with a bicycle helmet " .. because they feel so "epic". Tricky word "epic" maybe better avoided.
This, slim little volume, did contain some useful 'recipes' , but not as many as I might have hoped for. The, obligatory, recipe on 'Installation and Setup' was competent and to the point, and is covered here, I am assuming, for the sake of completeness.
The recipe on remote access via SSH concentrated mainly on remote access via SSH from a PC running Microsoft Windows of some ilk using Putty. Putty is an excellent piece of software and is certainly something the RaspberryPi community should be aware of, so lots of plus points here. Configuring the RaspberryPi for SSH access was demonstrated by demonstrating the use of the command line rasp-config tool.
The next recipe is mainly concerned with installing updates as well as new software packages for the "official" Raspbian Linux distribution - which is Debian based, and, therefore, uses apt, the Advanced Packaging Tool via a text oriented front end called aptitude. Interestingly this recipe also covers the 'testing' package distribution, as you might have guessed, is primarily for testing. However, and this is what makes it interesting to the "adventurous" it does contain the most cutting-edge versions of Raspberry Pi software available from the "official" Raspbian Linux distribution. OK some brownie points here as any self-respecting "RaspberryPian" should be a competent user of apt.
The next recipe concerns file sharing - basically making files on remote machines that are network accessible from the RaspberryPi look as if they were local to the raspberryPi itself, and, in this case mounting files on a USB drive connected to the RaspberryPi so that they become part of the file system. This recipe does a pretty good job of explaining the "mysteries" of the mount command and editing /etc/fstab to automate the mounting of shared disks and folders at boot time. The parts of this recipe that interested me the most was the part covering mounting shared files on a Windows based PC and setting up a RaspberryPi as a Samba file server so that a RaspberryPi can be mounted as a network disk on a Windows PC, and also sharing a USB disk attached to the raspberryPi via Samba. Lots of browny points here as I am someone who would rather "make his windows PC more Linux like" than make his Linux machine more windows PC friendly.
So far so good, but hardly epic (well, maybe the Samba part was "epicish"). So what's left ...
Well, only one more section, entitled "Advanced Networking". This section contains recipes covering a number of interesting things such as creating a firewall, connecting remotely to the desktop, setting up a web server on the raspberryPi (Apache is covered in depth and then the differences between installing Apache and lighttpd and nginx are briefly surveyed.), installing a wiki and creating a wireless access point. Firewall creation makes use of the command line tool ufw (uncomplicated firewall) - which, I must admit was new to me ... so, once again, some brownie points. The Remote Desktop Protocol (RDP) is another protocol I have not really used before, and the recipe explaining how to install xrdp on the RaspberryPi was an "excuse to play", and to point Microsoft's Remote Desktop Connection application at a RaspberryPi and to enjoy the sight of a RaspberryPi desktop running on a Windows Machine. The recipe covering setting up MediaWiki was pretty competent and provided an opportunity to review and refresh my knowledge of this particular web application. The final recipe, the icing on the cake if you will covered setting up the RaspberryPi as a wireless access point with hostapd. This makes it possible to configure the Raspberry Pi to be a network hub for other wireless devices, and this was exciting as I could see how I could devise interesting sensors and home automation devices based on Microchip's new WiFi technology modules and various PIC processors (both big and small), and also all kinds of interesting remote sensor based projects sprang to mind, and similarly with Atmel WiFi solutions and Silicon Labs solutions.
With my appetite "whetted" what more goodies were there in store for me ? Sadly "there were none".
All in all this is a "most useful little cookbook" ... Epic it is not. Gastronomically speaking it would fall well short of "Julia Child's" standards and it is certainly no "Larousse Gastronomique" of the embedded Linux networking world.
What would I have liked to have been included and why ?
This is the part that is both easy and difficult. Easy because there are so many interesting networking recipes that could have been added. Difficult, because it is easy to criticise "omissions" without being faced with the reality of putting together a useful collection of recipes in the first place. As a result I would rate this book at somewhere between 3 and 4 stars. My perspective on the RaspberryPi is that it is a cheap and reasonably powerful "small embedded Linux platform" with a strong social network and active community behind it. There are other embedded Linux systems not that much more expensive and with a more impressive range of features and peripherals. The unique aspect of the RaspberryPi is that its goal is to "stimulate" an interest in computing in the young by enabling them to do "interesting things with it", albeit that the learning curve for mastering embedded Linux systems is quite steep. Networking, in this context, is very much a "means to an end". Most of the recipes covered in this book apply to Linux platforms in general and, pursuing the Cookbook metaphor they are more of the "how to bone a duck, how to prepare a good pastry, how to make a good stock. What is lacking are the "Lobster Thermidor" or "Mousse au Chocolat" or "Baba au Rhum" recipes. In other words, starting off with the technical details lets "conjure up" some exciting and inspiring applications that depend on having mastered the technical recipes and then putting them to some "exciting use". Maybe, instead of confining networking to TCP/IP ethernet and WiFi this cookery book should have included other networking technologies such as e.g. SPI, I2C, RS485, Lin and CAN, or included some aspects of Industrial Ethernet, or maybe included some recipes involving understanding and modifying interesting demo programs written e.g. using the Python 'Twisted' network programming framework. I would also have liked some recipes covering IPv6 and also 6lowPan, especially a recipe involving the linux-zigbee project e.g. Raspberry Pi daughterboard with ATmega128RFA1 microcontroller (with 802.15.4/6LoWPAN mesh networking capability) [...] or, e.g. [...]
Another recipe might have explored building RaspberryPi clusters for parallel computing , see e.g.[...] and then used that to e.g. do some interesting graphics processing or feature recognition.