Friday, April 27, 2012

Book review: Think Complexity by Allen Downey

Think Complexity: Complexity Science and Computational ModelingThink Complexity: Complexity Science and Computational Modeling by Allen B. Downey
My rating: 4 of 5 stars

In operations research, among modelers it is a truism that models are for insights, not numbers. And the ability to provide insight is even more important than the ability to provide proofs that the model is correct or that the methodology is efficient or accurate. Think Complexity is an introduction to computational modeling for the purposes of finding this insight in areas that defy proof techniques.

Complexity science is an area that is easy to hype. I admit to being highly skeptical when a student and co-advisor wished to introduce these concepts into a thesis. What Downey does in Think Complexity is to introduce the concepts and give computational examples. And instead of being a promoter he provides the tools for someone to explore and ask the questions of the models and consider if the insights presented by the models are believable.

The beginning of the book is an overview of philosophy of science, to set the stage for thinking about this type of model. Next is an overview of Python data structures and analysis of algorithms. Once past this, then you get more in depth coverage of implementation of different types of models used to explore complex systems. And here the emphasis is teaching enough to follow the example, with links to Wikipedia given for more formal introductions to the topic (and the Wikipedia articles seem chosen for quality of the article and the references for the dedicated.)

To properly do the exercises, one would have to be a good Python programmer, and these would be serious exercises in the application of data structures. But even if the focus was on an introduction to complexity science, being able to run and modify the examples made this a more useful introduction to the field of complex systems and models for emergent behavior than other works that I have seen. Running and playing with the examples makes a greater impact than the text explanation, and in this Think Complexity is a success.

Disclaimer: I received a free copy of an electronic version of this book through the O'Reilly Blogger Program.

More information about this book can be found at the O'Reilly website for Think Complexity
I review for the O'Reilly Blogger Review Program

View all my reviews at Goodreads

Sunday, April 08, 2012

Book review: Code Simplicity by Max Kanat-Alexander

Code Simplicity: The Science of Software DesignCode Simplicity: The Science of Software Design by Max Kanat-Alexander
My rating: 3 of 5 stars

There are a number of books out there that address the problem that programmers need to be software engineers at some level. But this may be one of the shortest. And I think that make it approachable to a programmer who does not quite get it that this is something she needs to learn. The only question is if that is possible, or if by the time a programmer realizes she needs to learn these skills, she is ready for something more meaty.

Working with students, post-docs, and remembering my own early career days, one problem in the teaching of programming is that early programming classes tend to be about teaching a programming language, not on how to program to get anything done. I ask students now if they know programming, and I am quick to ask if they used it beyond the programming class, which I have found is almost no value by itself. While part of it is that they do not learn how to use software libraries or other such things that make useful programming possible, the other issue is the need for design, testing, documentation, maintenance, and other areas of software engineering. All of this is pushed aside in the quest to get the machine problem working and turned in. And this shows in their early career, that comments and suggestions about design and software engineering are brushed aside, in the quest to make something that works.

Code Simplicity tries to address it. The tone is conversational, and from the point of view of an experienced developer who has already learned the lessons the hard way so you do not have to. And so you have concepts, examples (some of which are real and detailed), and the take away lessons on matters of software design. Design lessons include recognizing some goals of design, planning on maintenance, planning for changes, deciding what to put in or leave out of a program, simplicity and complexity, and remembering always that the purpose of software is to help people (as opposed to only performing a task).

As a quick introduction, it is what it is, and hard to come up with what can make it better. The only question is if this is a lesson that can be imparted.

Disclaimer: I received a free electronic copy of this book as part of the OReilly Blogger Program
I review for the O'Reilly Blogger Review Program

View all my reviews at Goodreads.com

Tuesday, April 03, 2012

Parenting Month 17: We have a talker in the house

I want 'ananas! This month Tai has been a big babbler. Lots of things to talk about. His favorite thing to talk about: food. He likes to eat 'ananas (and lets everyone in the grocery know it). 'pples and 'yoyo are also reliable favorites. We have no problem with this boy not eating. He will always eat bananas and cherios on any given day while everything else rotates in and out of his diet without notice. Peppers, sweat peas, asparagus, chicken, eggs, soup, noodles, melons, oranges, zha jiang mien and other things have had their day on the menu.

He knows other words as well. The prize for words-that-gets-repeated is 'ah-ohh'. In the beginning of the month this was two distinct syllables, now it is clearly a single word. Used whenever something falls on the floor.

He knows the word 'no' (of course, he is a toddler), but he also knows the word 'yeah'. Actually 'yeah' is his goto word when it is clearly the time for him to respond to something, but he really does not know what we just said. Other words that he has learned from reading include 'yum', guo-guo (dog), gone (used after draining sinks or finishing everything in his bowl/bottle/cup), there (as in, I want to go there), down, bao-bao (pick me up), dee-dee (the sound a car makes)

Coming in from the deep black void He likes to read. There is the book 'Little Pea' and we have him trace the parts where little pea is moving around. He likes to stop on the page that describes seven types of candy. And there is a page where Little Pea is eating spinach and says 'Yum!' that T likes to read out. And then there is 'Moo, baa, lalala' and when we read it we say the name of the animal and T says the sound. The funniest one is about three singing pigs. After T says 'lalala', he immediately says 'nonono', because that is what is on the next page. A new book is about counting. T holds the book when we read, and he can tell when a book is upside down, so he'll turn it the right way before we start. One of the pages in the counting book is of possums, hanging from a tree. Very confusing as he turns the book around and around to try to get it right-side-up.

I want to play piano with mommy Various toys are in use. Lego (Duplo) and wooden blocks are stand-byes. We have wooden cars and an airplane (although he does not play this as much now that he can walk, it was a lot of fun when he was crawling). He has finally mastered the stacking toys. We try to maintain a daily piano session.

All in all this was a fun month. My mom has been here these past few weeks so she gets to enjoy it too.