Pages

Friday 4 July 2014

Book: Mark Burgess "In Search of Certainty" -- My Impressions

The Book

I did read your book once and then went through it taking notes. I tried to critic it, review it and edit it. Failed on all three attempts. So I decided to write down my impressions while. Note: I did read a version dated June 5th 2013 shortly before it got published, some page numbers might have changed.

For details on the book and where to get it go to Mark's website: http://markburgess.org/certainty.html.

InfoQ has run an article and interview on the book: http://www.infoq.com/articles/in-search-of-certainty-book-review.

My impressions


The book is long. Nearly 400 pages (the final version has 444!) packed with "stuff" about "things", nearly as many notes as it has pages and an awful lot of references. It requires determination to read it. It doesn't have a lot of figures thought, nor does it bombard the reader with too many Greek characters. And all the figures are also very simple, nothing complex, virtually nothing colored, no InfoGraphics.

The book uses plain English. That is a very good choice. Using plain English, with a lot of examples and stories that people can relate to. There are a lot of real people named and discussed, rarely critiqued, never hammered. The whole tone of the book, while sometimes putting forward strong statements, is positive, almost 'nice'.

This is a history book, putting things into perspective. There are so many historic people named and their work explained and discussed and put in perspective. And sometimes there is a historic line shown, how people used the work of others and extended it. The areas covered are wide, not 'just' IT, not 'just' physics or mathematics, not 'just' Western people. A wide discourse showing the variety of contributions people have made in history (recent and far). Almost makes me wanting to go back to university and study the history of technology and/or science.

This is a book showing how science works. Long nights, lots of experiments, talks, presentations, discussions. The importance of failure and the importance of talking with/for people. A lot of names given, Alva being the most prominent, many people from the IEEE CNOM community being mentioned a lot. The work and progress of a single idea (Promise Theory) document over a decade with lots of examples. Showing how many different paths have been walked to get where you are. This part alone is very interesting, to see (read) how the work has evolved, in detail.

This is a very personal book. Beside the historic and scientific content, the book is in parts a very personal description of the world we live in, and how it evolved. This is neither cheap nor pathetic, it is actually an important part of the book. It makes it worth reading, because the book is not a clean, cold, detached piece of work about a technical problem/solution. The book is about a journey, a personal one. I did like that part very much.

This is a book about changing the world, making it a better place. There a many statements about the state of education and other areas and some suggestions or predictions on how they can/will be changed (for the better). There is also a strong message that things are going wrong in IT, that it is hard to detach technology from science, that people do not properly understand and then repeat errors. All of this with a very practical note, when examples from CFEngine come into play and when stories are being told on how the theory applies. This was one of the interesting parts: the theory is nothing abstract but rather concrete, something that already is used in many places. Thus, something worth exploring and understanding, and writing a book about it.

This is a book about CFEngine. Starting in part II and then extensively in part III this book might look like a CFEnging book. It never ends in cheap promotion of a product, but it details parts of the company and its products. First I thought this is annoying (and in parts it is, almost suggesting sometimes that only CFEngine is there), but in the overall reading experience it is very balanced. Furthermore, since this is partially a personal book, the company that enabled (or drive) a lot of things here must play a role in the book, too.

This is a book about Promise Theory for dummies. Since it's written in plain English, sometimes as a tutorial and history lesson, always with good and easy examples, it can be taken for it. Now there is a book on Promise Theory published, I still have that on my backlog.

This book is easy to read. One can start and read, almost like a novel or a historic novel. In parts it becomes tricky then, when complex or important statements are chained. But in general the book reads very easy.

This book is very hard to read. That is true, too. Parts and chapters provide partitioning, but the chapters themselves are very long and it is, in many places, unclear where a statement ends and a new one starts, or how a number of statements relate to each other.

This book is very challenging when reading it twice. Reading once, I did indulge in the history lesson, the explanation of science at work, the evolution of the Promise Theory and a few things about physics and mathematics. The second time I got stuck in statements that are mostly hidden, almost buried, but that (imho) are very important and maybe for some even provocative. For instance, page 343 states that "Change in space is much easier to deal with than changes in time, though these two are sometimes related by the finite speed of communication." Oh dear, the finger right on the problem(!)! Another example is page 346: "Creativity in nature is always a bottom up process, as nature has no imagination to foresee what might be. It can only build on what it has, thus it always leads to stable systems through natural selection." Yes! And actually the whole page 346 is great! Another example is the first paragraph on page 354, actually brilliant, the whole paragraph. So is the first paragraph on page 194. And there are more those things, hidden amongst history and science and physics and mathematics. Or the explanation of autonomics with biology on page 116, far better than the usual IBM citations. Or the discussion of change of space at the start of chapter 2. Or on page 318 one of my favorite now "The challenge one faces in technology is always how to separate general science from a particular implementation of the technology itself". …

The title is excellent. Simply that.


The book es excellent, simply that!

Thursday 3 July 2014

SDN Course by Nick Feamster in Cork June/July 2014



SDN Boot Camp

Cormac J. Sreenan (http://www.cs.ucc.ie/~cjs/) from University College Cork (UCC) organized a course on SDN for the Irish Telecommunication Graduate Initiative (TGI, http://www.tgi.ie). Prof. Nick Feamster (@feamster, http://www.cc.gatech.edu/~feamster/) traveled to Cork to teach his well-known Coursera SDN course as a 1 week boot camp. A lot of information can also be taken from the SDN videos Nick hosts on his YouTube channel.



The course syllabus and reading list is here: http://gtnoise.net/classes/tgi-ucc/summer2014/. The boot camp had teaching lessons in the morning (0900-1230) and lab classes in the afternoon (1330-1700). Tough going, every day lessons and assignments.


It is helpful to
  • Understand the basic principles of networking on layer2/3
  • Know how to use a Linux system, e.g. ssh, some scripting, process control (to start/kill processes), tcpdump, editing files (vi or emacs)
  • Know how to use VirtualBox (the assignments are running in a VirtualBox VM)
  • Program in Python, which means to know something about functional programming as well as the specific syntax of Python. A crash course, e.g. http://learnpythonthehardway.org/book/, can be helpful


Lessons

The teaching is structured in modules. The modules are divided into lessons. Each lesson comes with a summary. The course material is very good, and contains a lot of links for further reading. It is helpful to study the reading list (papers for each module) while going along. The lectures start with an introduction into SDN, including the history (which is very good imho). Then it dives into the details: Control Plane, Virtualization, Programmable Data Plane, Programming SDNs and finally verification and trouble shooting. So this is a complete course, not just scratching the surface.

Assignments

There are assignments for each module. Each assignment comes with a detailed description of the underlying scenario and starts with examples that one can simply run. This helps to understand what the assignment is about and to put it into context. The actual assignment then is well-described. Skeleton programs are provided and the evaluation of the assignment is clearly stated. That doesn’t make it easier though. But Nick and his staff where in the labs and provided valuable help for all involved. The assignments are not build on top of each other, so missing one or being late on one doesn’t not hamper progress.

What you learn

A lot of things: using visualization environments and Linux of course. Then mininet to create network topologies. Using the POX controller in several ways (hub, switch, firewall) and later higher-level projects (Pyretic, Resonance) to control an SDN network.

Summary

An excellent course if one wants to figure out what SDN really is about, on PowerPoint level as well as in practice. I’d recommend the course for people who want to know SDN, understand the state of available software, or simply want to see where networking might go to in the next years. It is also helpful to understand the networking principles of virtual environments and data centers. Will Dennis has written more detailed experiences from taking the Coursera course in 2013.


Special thanks to Nick, Cormac, Mary Noonan (for organising all the logistics perfectly).

Thursday 12 June 2014

UTF-8 Support w/ Java and Console

Using UTF-8 can still be difficult, as I experienced recently when I wrote an ASCII table in Java using UTF-8 box characters. The package is published now (skb-asciitable), and here is how I got UTF-8 support working.

 

 Javac

The java compiler might need a reminder to use UTF-8. The option -encoding UTF-8 should do the trick.

 

 Javadoc

Javadoc has 3 options for dealing with UTF-8 characters. encoding for the source (i.e. reading UTF-8 encoded java files), docencoding for the output (i.e. the html encoding) and charset for the output (i.e. to tell the browser what character set to use). All of these options need to be set to UTF-8. The ANT task for Javadoc has those options. So using encoding="UTF-8" docencoding="UTF-8" charset="UTF-8" should create UTF-8 html.

 

 Editor

Editing java files requires an editor that can handle UTF-8 and being configured to do so. Otherwise all UTF-8 characters will be scrambled. In Eclipse, one can set the respective file, the project or the complete workspace to use UTF-8 encoding. The default on Windows is CP1252, so make sure to change that before opening any UTF-8 file. Simply change the text file encoding on the resource. This will also change the output of the Eclipse console to UTF (in Juno and Keppler). Other editors will have their specific way to configure for UTF file handling.

Console

Console settings depend very much on the operating system and the terminal program used. In Windows (using cmd as shell), change the code page using this command: chcp 65001. In Cygwin, use a terminal that supports UTF-8, for instance the popular mintty. For both, the font Lucida Console supports almost all UTF-8 box drawing characters. Unix and Apple systems are usually better for UTF support.

JVM

Running a java program with UTF output might require to set the JVM to UTF as well. -Dfile.encoding=UTF-8 should do the trick.