Three different books and articles that I read this weekend across a range of different subjects.
The Little Book of Semaphores by Allen B. Downey
This book looks at various concurrency problems and shows how they can be solved using semaphores. At first I found it slightly strange that the book insisted on using global variables in the solutions (rather than thread locals) which led to a number of strange implementations, but the problems are really interesting and the book explains its solutions well. Semaphore patterns like turnstiles and lightswitch are described and used in the solutions. The book covers fairness and starvation, and mentions a solution by J.P.Morris who showed that is was possible to solve the reader/writers problem without starvation in the presence of weak semaphores using the trick of batching the waiting threads and ensuring that the batches complete in order (which proved incorrect a conjecture by Dijkstra). A quick read, but worthwhile.
This is a recently released free eBook which covers the various parts of Azure as well as a number of patterns and concepts for Cloud development. Each short chapter has a long list of additional resources which you can easily click and visit. The book gives a concise introduction to large parts of Azure and is well worth a read if you are thinking about moving to the cloud – a world where transient failure and scalabilty make application development a little different from in-house desktop applications.
I’ve been doing a Coursera course on developing cloud services for Android handheld systems and the application we had to develop used OAuth for the authentication and authorisation. Using OAuth means that the user credentials do not need to be stored on the phone, while at the same time each application can identify itself to the OAuth provider which can prompt for the relevant credentials. In the actual application we wrote for the course, the Spring framework provides the actual OAuth implementation, but as it is always good to understand what is happening under the covers, someone posted a link to this tutorial on the user forum.
It is brief and informative, giving a good overview of the various parts of the protocol.