Attacking Network Protocols

I am always trying to expand the boundaries of my knowledge. While I have a basic understanding of networking and a high-level understanding of security issues, I have never studied or read up on the specifics of packet sniffing or other network traffic security topics. This book changed that.

Attacking Network Protocols: A Hacker’s Guide to Capture, Analysis, and Exploitation takes a network attacker’s perspective while probing topics related to data and system vulnerability over a network. The author, James Forshaw, takes an approach similar to the perspective taken by penetration testers (pen testers), the so-called white hat security people who test a company’s security by trying to break through its defenses. The premise is that if you understand the vulnerabilities and attack vectors, you will be better equipped to protect against them. I agree with that premise.

Most of us in the Free and Open Source software world know about Wireshark and using it to capture network traffic information. This book mentions that tool, but focuses on using a different tool that was written by the author, called CANAPE.Core. Along the way, the author calls out multiple other resources for further study. I like and appreciate that very much! This is a complex topic and even a detailed and technically complex book like this one cannot possibly cover every aspect of the topic in 300 pages. What is covered is clearly expressed, technically deep, and valuable.

The book covers topics ranging from network basics to passive and active traffic capture all the way to the reverse engineering of applications. Along the way Forshaw covers network protocols and their structures, compilers and assemblers, operating system basics, CPU architectures, dissectors, cryptography, and the many causes of vulnerabilities.

Closing the book is an appendix (additional chapter? It isn’t precisely defined, but it is extra content dedicated to a specific topic) that describes a multitude of tools and libraries that the author finds useful, but may not have had an excuse to mention earlier in the book. This provides a set of signposts for the reader to follow for further research and is, again, much appreciated.

While I admit I am a novice in this domain, I found the book helpful, interesting, of sufficient depth to be immediately useful, with enough high-level descriptions and clarification to give me the context and thoughts for further study.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Learn Java the Easy Way

This is an enjoyable introduction to programming in Java by an author I have enjoyed in the past.

Learn Java the Easy Way: A Hands-On Introduction to Programming was written by Dr. Bryson Payne. I previously reviewed his book Teach Your Kids to Code, which is Python-based.

Learn Java the Easy Way covers all the topics one would expect, from development IDEs (it focuses heavily on Eclipse and Android Studio, which are both reasonable, solid choices) to debugging. In between, the reader receives clear explanations of how to perform calculations, manipulate text strings, use conditions and loops, create functions, along with solid and easy-to-understand definitions of important concepts like classes, objects, and methods.

Java is taught systematically, starting with simple and moving to complex. We first create a simple command-line game, then we create a GUI for it, then we make it into an Android app, then we add menus and preference options, and so on. Along the way, new games and enhancement options are explored, some in detail and some in end-of-chapter exercises designed to give more confident or advancing students ideas for pushing themselves further than the book’s content. I like that.

Side note: I was pleasantly amused to discover that the first program in the book is the same as one that I originally wrote in 1986 on a first-generation Casio graphing calculator, so I would have something to kill time when class lectures got boring.

The pace of the book is good. Just as I began to feel done with a topic, the author moved to something new. I never felt like details were skipped and I also never felt like we were bogged down with too much detail, beyond what is needed for the current lesson. The author has taught computer science and programming for nearly 20 years, and it shows.

Bottom line: if you want to learn Java, this is a good introduction that is clearly written and will give you a nice foundation upon which you can build.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Then She was Born

Eleven Nobel Peace Prize laureates. The Dalai Lama. Pope Francis. These are just some of many who support an initiative to #HelpAfricanAlbinos. In many countries, people with albinism are discriminated against, harassed, and persecuted. There is too little understanding and too much false information.

Then She was Born is an attempt to spread awareness of the problem using a fictional account of a girl, Adimu, who is born in a village. We see her struggle for survival against powerful superstition and tradition. Using information taken from the accounts of many African albinos, the story is gripping, moving, and also a call to action. The book was originally written and published in Italian by Cristiano Gentili as Ombra Bianca and has been masterfully translated into English for the reviewed edition by Lori Hetherington. The story is engaging, with characters that are relatable and deep.

Prior to reading this book, I had heard passing mentions, but had no real knowledge of the issue. This is a work of fiction, but it is based on real events and there are real lives at stake. I will share this book with anyone among my friends who will read it and I recommend it highly to those who are not local to me.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Manga Art

Illustrators generally get paid to work on projects. This means taking someone else’s vision, story, or text and bringing it to life in pictures. Doing so requires special talent as the illustrator must listen to and absorb someone else’s ideas before creating their accompanying artwork. Mark Crilley is a talented and experienced illustrator who got the chance to find out what would happen if he pitched a book that contained illustrations that didn’t follow a specific theme, a book about illustrations without being a how-to book, a book about the art. We all benefit because Watson-Guptill Publications accepted that proposal.

Mark Crilley’s Manga Art: Inspiration and Techniques from an Expert Illustrator is a beautiful and fun jaunt through Crilley’s imagination. The art contained in the book is diverse and masterfully created. There is no storyline. There is no plot. There are no editors or committees. This is a book created “in an atmosphere of complete artistic freedom.” It works.

The book is arranged in five sections, an organizational scheme that seems likely to have been imposed after most of the illustrations were created. The sections each contain a set of illustrations that fit a general theme, grouping together sketches and full-color illustrations of characters, Japan, science fiction, conceptual art, and styleplay. Each illustration includes interesting comments from Crilley describing the art. These sometimes focus on the craft of creating the piece, sometimes on a thought or experience that influenced the image or sparked its creation. Occasionally there is a cool “Your Turn” tip connected to an illustration to help the reader think about ways to enhance their own creations.

This is a fun, interesting, enjoyable, and inspiring book that makes me want to walk away from my computer and pick up some art supplies.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Shirley Jackson’s The Lottery

I enjoy graphic adaptations of classic novels and short stories. Admittedly, sometimes they work and sometimes they don’t. This is an instance of the adaptation working, very well.

Shirley Jackson’s “The Lottery”: The authorized Graphic Adaptation is a lovely and perfectly horrifying adaptation of the 1948 short story. The book was scripted and illustrated by Jackson’s grandson, Miles Hyman. Hyman does an excellent job of staying true to the original feel of the story with haunting, deep images that evoke genuine emotion. The words on each page are sparse, letting the artwork communicate much of the story. This is a wonderful use of a different medium to project the same message and creepiness of the original and required true translation skills. Hyman succeeds. There is a rhythm here that is controlled and which builds from mysterious to worrisome to absolutely horrifying. Fantastically done! If you enjoy the genre, this is worth your time.

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?

Fewer Reviews from Me

Amazon has banned incentivized reviews, meaning it is now prohibited to post a review of a product that you received for free or that you received payment for writing.

I’ve seen this coming and I agree with it in principle. From a practical standpoint, it won’t affect me greatly as my review queue is down to only one book and I’ve not been requesting nor receiving books to review for a while.

I will continue to review stuff I buy, both here and on Amazon, when I find something really exciting. I may still review free books on this blog, and as always, if I am reviewing a book that I received for free, I will put this note at the end of the review: Disclosure: I was given my copy of this book by the publisher as a review copy.

UPDATE October 18, 2017: I have learned that my understanding of Amazon’s policy was stricter than what Amazon intended. The Community Guidelines state it more clearly in the Promotions and Commercial Solicitations section: “Book authors and publishers may continue to provide free or discounted copies of their books to readers, as long as the author or publisher does not require a review in exchange or attempt to influence the review.” So, I again feel free to post reviews on Amazon for materials I received for free, provided I am not required to do so and the provider has not acted in a way that attempts to influence the review.

Fighting Shadows


Fighting Shadows is set in Morocco. It is a fictional account that tells the story of one young man’s attempt to find justice after receiving a brutal beating during a political protest. Set against the backdrop of the Arab Spring throughout North Africa, the book attempts to demonstrate in narrative some of the reasons why the uprising never took hold to the point of revolution or civil war, like happened other countries such as Libya, Tunisia, and Egypt.

The story begins on that fateful day, February 20, 2011, starting with Farid and his participation in a protest in the town of Sefrou. The reader is taken on a journey that touches on the delicate balance of power in a country that rails against a history of control and abuse of power by the government while also fearing the rise of Islamist fundamentalism should that power be toppled.

The novel ably and clearly demonstrates the fear many citizens feel, whether their fear is centered on the local police, on the national security forces, or on the government’s secret forces. The book describes problems with bribery and corruption, but it also describes good people standing up and trying to fight against it. The real question is how effective those fights are or can be. This book does not give a definitive answer, but does an excellent job of asking questions that should be asked.

I have written a small amount; about these issues in the past, but not much. I lived in Morocco for 7 years and hope to visit again. I have friends who live there, a few expats and far more Moroccan people. I have no interest in stirring up trouble for myself or for them. At the same time, if we don’t question what we see and ask questions about what could be done, nothing can ever improve, in Morocco or anywhere else.

Fighting Shadows does not prescribe a specific remedy, but does a very good job of illuminating the problems that exist. Anyone interested in the politics and people of the region will find that the book helps frame questions that need to be worked through as Morocco and the Moroccan people look toward the future. Will the future be based in fear, whether fear of the Makhzen or of the Ikhwan, or will the future be ruled by hope, and if so, hope in what?

Note: this is a self-published book. Often, I find that self-published books deserve closer scrutiny than manuscripts that have gone through the more rigorous editorial and publication process with a publishing house. It is because I found this book to NOT have most of the common weaknesses of self-published books that I decided to post about it. My guess is that the only reason that a large publisher wouldn’t print this is because they may have felt the market was too small for the book to earn out. The content is of high enough quality to deserve your consideration.

No disclosure needed. I bought this book and thought it was worth sharing with you.

Two Python Books

I like Python. I like its internal consistency. I like its design that all but ensures there is one right way to write almost anything and that any good Python programmer can figure that way out and use it. I have reviewed several Python-focused books and expect to do so in the future. So, this review will not be about the language itself, but about how well each of the two books included cover the language and provide interesting use cases.

There are two books in this review: Learn to Program with Minecraft: Transform Your World with the Power of Python and Python Crash Course.

and

Learn to Program with Minecraft: Transform Your World with the Power of Python presents a fun use case with Python. It covers how to install Minecraft, Python, Java, the Minecraft API, and a single-player Minecraft server called Spigot to allow you to take advantage of Python to do things to your Minecraft world. One thing to note is that installation is only covered on Windows and Mac OSX. The book also covers using the IDLE editor with Python, the Python shell, and all the basics of the language within the book-long use case of making modifications and improvements to your Minecraft world. Topics covered include variables, expressions, operators and basic mathematics, strings, booleans, if/then/else statements, loops, functions, lists and dictionaries, files and modules, and the basics of object-oriented programming. Good stuff. The text is presented with full-color examples and beautiful graphics throughout. The writing is clear and easy to follow.

Python Crash Course takes a different tack. The audience is similar, mainly young people who are just starting their coding journey. However, the approach is more generic in application and perhaps more detailed in what it covers. As with the other book, the examples are project-based, but not focused on interacting with one specific software product. You get all the same basics as the other book, but with extended coverage (to be fair, it has nearly double the page count). The projects in this book are interesting and cover a broader set of topics: you get multiple chapters each covering one game project, one data visualization project, and one web application. I also like that in this book Linux is covered alongside Windows and Mac OSX, although the Linux install examples use APT, wish presumes the use of Debian or Ubuntu or another Debian-derivative. Not a problem for me, but I would have liked to seen that called out.

I liked both of these books. If I was focused only on interacting with Minecraft and modifying my game, the first would be my preference. For all other use cases involving learning Python, the second book is superior and the one I recommend.

Disclosure: I was given my copy of this book by the publisher as a review copy.

The Manga Guide to Physiology

I’m re-using this first paragraph introduction from the last review I wrote for a book in this series:

This is one of several atypical educational books that use graphic art to help teach difficult concepts or illustrate the action and another wonderful entry in the “Manga Guide to…” series that I have been reviewing.  I keep requesting review copies of each title in the series as they come out, and I have yet to be disappointed. This is an impressive series that consistently makes very difficult academic topics more interesting and a little easier for students. I would not consider these a replacement for a textbook, and neither would the publishers of the series, but every book that I have reviewed from the series would make an excellent supplement, especially for the struggling student.


The Manga Guide to Physiology tackles all of the main points of a typical Physiology 101 course that might be taken by a college freshman. It does so with clarity, with precision, and surrounds the academic details with an enjoyable narrative that makes the information much easier to absorb. In fact, I would go so far as to say the story makes the subject matter move from difficult, but interesting, to enjoyable. This is done by giving a context to the subject matter that the reader can relate to.

Kumiko Karada is a freshman nursing student who is struggling. She is failing her physiology class and has one chance to pass. She must do exceptionally well on a makeup exam. This is a daunting task, made easier with the help of Osamu Kaisei, an assistant professor in the Department of Sports and Health Medicine. It turns out that Osamu is also a gifted teacher who is preparing his course syllabus and materials for the same class that Kumiko is failing. The two work together to help Kumiko learn what she needs to know.

Topics covered in the book include all the main systems: circulatory, respiratory, digestive, kidneys and renal, the brain and nervous, musculoskeletal, endocrine, and also details like body fluids, cells, genes, and reproduction. The information is accurate, up-to-date, and clearly presented. The topics are first introduced within the narrative, but gaps and additional details are added at the end of each chapter. The chapters are each based on a specific system.

Studying physiology? This book won’t replace your textbook and doing your homework, but it has a very strong chance of helping you overcome the fear and intimidation that are often associated with these complex topics. Like the other titles in this series, I recommend this book highly.

Disclosure: I was given my copy of this book by the publisher as a review copy.

An Elementary Introduction to the Wolfram Language

It was the Fall of 1988. I was a freshman at the University of Arizona. One of my classes was honors calculus. My professor, whose name is long forgotten, included in the course a new computer program called Mathematica. I remember, both because it was interesting and new and because it required me to purchase an additional book for the course. The book had a black cover, white text, and a colorful image that I can’t quite recall.

The author of that program and book was Stephen Wolfram, the same person who has written An Elementary Introduction to the Wolfram Language and the language that the book introduces. It is interesting, more than 25 years later, to revisit the thinking style of Mr. Wolfram.

The Wolfram Language is unique. It is easy to grasp. The syntax is clear. This is also true of this book. The first sentence of the main text sets the stage for all that follows:

The Wolfram Language is a computer language. It gives you a way to communicate with computers, in particular so you can tell them what to do.

The remaining 300+ pages of the book are this clearly written. The book starts with that basic sentence and requires no prior knowledge…with one glaring exception.

The exception is this: the book never tells you how to install or otherwise access and use the Wolfram Language. This seems like a major failure to me. What editor should you use, if any? Does the language need to be compiled? Oh, wait, it seems there is something called the Wolfram Programming Lab and other interactive Wolfram Language environments, but without pouring over a set of links under Other Resources at the end of the introduction before the start of Chapter 1, you would never be able to find any of these.

To make my readers’ lives a little bit easier, start here: https://www.wolfram.com/language/. When I say easier, that is by degrees. You will still have to sign up for a Wolfram ID to start using the Wolfram Development Platform, accessible from the link above. The FAQ on the site says, “The Wolfram Engine runs on desktop, cloud and mobile. Its kernel runs on Intel and ARM architectures, under Linux, Mac and Windows, as well as soon under iOS and Android, and certain embedded operating systems. Its interactive user interface runs natively on Mac, Windows and Linux, and is also supported on web browsers.” However, I did not find any quick reference or obvious links for doing so. Disclosure: I assume the information must be in the website somewhere, I’m simply saying that I didn’t find it quickly and gave up trying because I have lots of other things vying for my time.

So, there you go. I like what I can see about the language, at least as far as I can tell from the book. I did not find an easy way to try it or use it and I found myself thinking about other things before getting around to doing so. Your mileage may vary, and if you can leap that hurdle, I think this book is incredibly clear and would be beneficial to anyone trying to learn the Wolfram Language.

Just before posting this review, I found this announcement from the author, which my readers may find useful: http://blog.stephenwolfram.com/2015/12/i-wrote-a-book-to-teach-the-wolfram-language/

EDIT on 12/14/2015: I received the following information from the publisher in response to this review and believe it is worth sharing.

In your review you mention that you’re unaware of how to install or otherwise access and use the Wolfram Language. The Wolfram Language can be used in all of our products (Mathematica, Wolfram Programming Lab, Development Platform, etc). Mathematica is where the language initially originated: http://wolfram.com/mathematica/?source=frontpage-quick-links

A Wolfram Notebook is like the terminal for other languages. You type your code into an empty notebook and press shift + enter to get your output. Here is some information about Notebooks: http://www.wolfram.com/language/fast-introduction-for-programmers/notebook-documents/

The Wolfram Language can also be used in our new product Wolfram Programming Lab, which integrates Mathematica notebooks: https://lab.open.wolframcloud.com/app/?source=frontpage-immediate-access and on our Development platform which is accessible from the web: https://develop.open.wolframcloud.com/app/?source=frontpage-immediate-access

Disclosure: I was given my copy of this book by the publisher as a review copy. See also: Are All Book Reviews Positive?