Tuesday, October 30, 2012

Two years! How did that happen?

Happily practicing piano by LugerLA
Happily practicing piano, a photo by LugerLA on Flickr.
If year one was dominated by colic, year two was completely different. We have ourselves an almost ideal toddler. We joke that when we take him out he is a walking advertisement for having a baby. He is happy, likes exploring, babbles, and does not go out of control, and is generally enjoying himself and being with us.

My wife is fully into the chinese mom thing of drilling letters and short words. I am more lazy and worry about things like counting animals and fruits and taking him to museums. The art museum staff get amused as he does things like walk up the stairs (there are a lot of stairs) and pick out pieces of artwork to stare at for a while (and just generally want to walk and run around. The Carnegie Museum actually has a very good run around room. Very convenient when you have a toddler along) (the Museum of natural history and science center are full of kids, so they are not nearly as impressed) And when we have lunch together, I regularly get comments about how well behaved he is when we are eating.

Favorites:

Movie and songs to dance to: Sound of Music. He can sing and dance along with most of the songs.

Book: Brown bear, brown bear what do you see? He not only turns pages, but he can read it to us. And he can improvise at random moments. Runner up: Little Pea

Song to sing: The alphabet song. We actually were not trying to teach him this. I used this as a song to wash hands too. Now he uses it whenever he really does not know what to do. Runner up: Twinkle Twinkle Little Star.

Toy: Choo-choo. We have a little wooden train set. Plain as can be from Ikea. Actually, mommy and daddy are his favorite toys. Grandpa is not too far behind.

Candy: Bleh! Yuck! Somehow, we have a two year old that does not have a sweet tooth. Today, with a cake right in front of him with nothing in the way, he went for the apples because he wanted a snack.

Food: Bananas and Cherios are constants. But he does eat almost anything (but maybe not on any given day)

Drink: He has recently learned how to say chocolate milk. We consider this to be the big guns if he is upset and we are serious about getting him out of it.

TV: Ni hao Kai Lan! is still the top, but Mickey Mouse Clubhouse is now on the request list.

Ways to get out of naps: He is still not a good sleeper, during the day or night. Recent tricks are to say '(I want to) Study' which is guaranteed to work with grandma and grandpa. Singing the alphabet song is also a good way to convince us to not to try to get him to do something. Clearly, this is a toddler who is figuring out his parents and grandparents buttons.

Having grandparents around has been a great help and I think everyone is enjoying each others company. A very good year.  Now we are not worried so much about survival or health (although he still gets sick and is always on the lookout for something to eat), but our thoughts turn to the raising of a child.

Sunday, September 30, 2012

Parenting 23 months: So much to explore

I want to learn more about dinosaurs

As T has been getting older, he has become a lot more mobile. That means he gets exercise. He goes to a neighborhood park every day and runs around with Grandpa. (Which means he is slowly leaning out. Weight is the same, but not as puffy everywhere like he used to be.) And he can choose what to spend his time looking at some more.

Dinosaurs are becoming a big thing. Early exposure was through Ni Hao Kai Lan!, as this is the title character's favorite thing. But now we have regular trips to the Carnegie Museum of Natural History. And because Pittsburgh had a dinosaur everywhere period (like Chicago did one summer with cows), it is easy to find dinosaur things all over the place.

Here is a blue patriotic dinosaur

Other toys are Legos (he is getting the hang of his Duplo blocks) and trains set. Fortunately, he has not discovered branding, so we can get away with generic things.

Here is a bridge for the train

His playtime is becoming more varied as well. While he used to like to dance to Sound of Music and other videos, now he tries to sing. Of course, he only sings the words he knows and pauses for the other words, so it takes a while to figure out what he is singing sometimes. But sometimes it is rather impressive the words he does know.

Vocabulary in general has been picking up. We were worried about the iPhone use. But it turns out his favorite app has been a flashcard app, and he is actually learning the words (meaning he uses them outside the app). Animals, foods, vehicles, and shapes have entered his vocabulary. And he can somewhat read one of his books, "Brown bear, brown bear, what do you see?" It gets fun when he improvises based on something in front of him. Once he was looking at a picture and went around the picture using the "___ ___, ___ ___, what do you see? I see ____ looking at me!" formula.

Socialization is still slow. He likes to play with the kids of the neighborhood, because they are old enough that he is like a moving doll to them. But he does not play with kids his age (ok, that is pretty rare anyway). While he likes going out with us and he will go off and explore (e.g. in museums or stores) he does not like crowds and gets pretty clingy around them.

Next up, the two year point!

Saturday, September 22, 2012

Forcing a patina on a carbon steel Mora knife

I got a new toy in the mail. A Mora MG Companion. Mora knives are known as inexpensive, but reasonable quality, fixed blade knives for outdoors or light utility work. I used to have a Benchmade Fixed Griptilian knife to serve as my very-hard-to-break knife. But while it has been pressed into service to do such tasks as batoning wood and much food prep, reality is I don't do the kind of camping where a good quality, reasonably thick fixed bladed knife was useful. And instead of it languishing in my car trunk, I identified a worthy owner who has started outdoors excursions worthy of it. And I replaced it with the MG Companion.

The Mora MG Companion seems to be the successor to the Mora Clipper. Known as the cheapest quality fixed blade knife for use in outdoor survival (meaning light woodwork and food prep for backpackers and hikers). Also very light, so lightweight backpackers who wanted a fixed blade knife (because of strength and safety) would either get a small neck knife or a Mora. It is everything expected. Lightweight, handles like a rugged kitchen utility knife. And cheap so I don't worry about beating up on it. One problem. It has a carbon steel blade. This is ok in the kitchen where you can clean it right after use, but in the outdoors it is susceptible to rust. One way to handle it is to make the steel oxidize on purpose before it can rust. That is a patina.

Mora MG Companion as received

There are a lot of descriptions on how to do such a thing in the internet. Other than use (because it would develop a patina naturally, if you used it for a few years and prevented it from rusting first) the way is to apply acid to the knife. While blood works (from meat!), normally you find fruits. Popular food items to stick a knife into include apples, oranges, and potatoes. Another way to do this is to apply vinegar. And this is what I did.

1. Apply vinegar to a lanyard. I used the strap from a conference ID holder. I put a small amount of rice vinegar into a bowl, and used the lanyard to take it out of the bowl.
2. Wrap lanyard around knife blade
3. Wrap knife in a paper towel (to keep from making a mess)
4. Wait one hour.

 And voila! a carbon steel knife with a patina. So instead of shiny steel, it is a grey-blue-brown pattern. And I had to sharpen the knife when I was done. I think I rather like the fact that it is not shiny anymore. Some internet forums comment that the resale value on the knife will drop, but for a < $20 knife, that is not exactly a consideration. Especially since I have every intent to beat on this every now and then. So now, this knife lives in my car, ready for going hiking on a moments notice, or being around when we need another knife to cut food (without scaring everyone when I pull it out!).

 Mora MG Companion with rice vinegar patina

Friday, September 21, 2012

Book Review: PostgreSQL: Up and Running by Regina Obe and Leo Hsu

PostgreSQL: Up and RunningPostgreSQL: Up and Running by Regina Obe
My rating: 4 of 5 stars

Compared to most books that introduce a full featured relational database management system, PostgreSQL: Up and Running is surprisingly short. It achieves this by being focused on its purpose, and doing it well. It is aimed at someone who knows a little bit about databases, although not necessarily a full featured client-server one, and brings them up to speed on both database server administration in general and PostgreSQL administration in general. It continues to introduce you to features that makes PostgreSQL special, making this a very valuable book to someone coming in to PostgreSQL from some other database, whether that database is simpler or a peer competitor. And since my background is from simpler databases, it works for someone like me.

First, this is not a book for someone who knows nothing about databases. Things such as database design, basic database concepts, and SQL is not covered, with the assumption that you get this knowledge somewhere else before coming here. (In my case, I learned on MS Access and SQLite) So what someone with this background may not have is how to work with a server based database management system.

This also has many sections that discuss some special features of PostgreSQL. The one that I thought was most interesting was the fact that you could write functions in one of many languages. Since I do much of my technical programming in Python, seeing how it is done was intriguing. (I've known that PostgreSQL has PL/Python, but the descriptions that I had seen in the past were obtuse and I had no idea how it would work.)

But this book also knows where to stop. Once I understand a topic to a base level, I'm used to looking to the web to learn more. And the authors consider the PostgreSQL Online Journal as an extension of the book, introducing an advanced topic, then pointing the reader to a quality source as a step in learning more. One advantage of this is that it keeps this book from becoming an intimidating door stopper.

In short, PostgreSQL: Up and Running has decided it will serve as a market that are not complete neophytes, but only bring people up to the point where they are better served by a rich set of advanced resources available on the web. And since this is probably a pretty good description of me, I found this to be a very good resource.

Note: I received a free electronic copy of PostgreSQL: Up and Running as part of the OReilly Blogger Program

View all my reviews I review for the O'Reilly Blogger Review Program

Sunday, September 02, 2012

A new (to me) Black & Decker Workmate 125.

My latest toy. A Black & Decker Workmate 125. We got this from a garage sale from someone down the street. The only thing he did with it was to take it out of the box. All the parts were still in the bags. When I looked at the instructions, I was not surprised. The instructions were almost unusable. (if you want to try to put it together, I suggest looking for the video on YouTube first). Like many reviewers, I found that many of the parts don't fit quite right, and there is a pin on the handle that adjusts the jaws that I don't really have in (a awl from a Swiss Army Knife works here in a pinch). Now, my wife says, I have to use it.



Saturday, September 01, 2012

Book Review: Introduction to Regular Expressions by Michael Fitzgerald

Introducing Regular ExpressionsIntroducing Regular Expressions by Michael Fitzgerald
My rating: 4 of 5 stars

This is not the first time I've tried to learn Regular Expressions. But other than some basic syntax, it never clicked. But I think this book provided the kind of introduction I needed to get me to not just know the syntax, but to get an understanding of how regular expressions work and how to learn its power. In short, it is not a reference, but a book that teaches me how to learn. And that is what I had not had before.

I've come across regular expressions on numerous occasions in the course of figuring out how to do tasks in various programming languages and tools, but I always found the idea of actually learning it daunting. And when opportunities came up, I generally figured out some Frankenstein combination of tools, functions, and macros that could get the job done.

What Michael Fitzgerald did was not to just give the mechanics of regular expressions, but his exercises lead you through exploring how it works by adding (or subtracting) various expressions so you understand the effects of each feature that is being put to use. The chapters add concepts that demonstrate the power of regular expressions that go well beyond the simple searching that many text or word processing packages use, starting with basic searches and pattern matching and adding markups, boundaries and anchors, back references, groups, alternatives, character classes, unicode, quantifiers, and lookarounds. Each step built up understanding and by the time I got to the last chapter I realized that I actually understood much of the new (to me) concepts that give regular expressions capabilities beyond search and replace that I was used to having in my tools.

Another useful feature of the book is the introduction of numerous tools to help work with regular expressions. He covers a few websites that help test regular expressions as well as features or add-ins for a number of text editors. He also covers how regular expressions are used inside some Unix tools such as grep, sed, and awk.

One thing that is confusing are various dialects of regular expressions. As he goes and switches between websites, Fitzgerald mentions that some of the features don't work in all the websites or tools covered. But he does not explain how to tell the difference. I half remember hearing about various dialects of regular expressions (for example, Fitzgerald mentions that grep does not have full capabilities) but some identification of this may have been helpful, so you can match the various tools you are using with the development environments you work with. So instead of observing that different tools are different, he could have identified some major dialects, and matched the tool to the dialect of regular expression (e.g. grep, perl, java, javascript). Even better, pick a dialect for the book, state up front that the book is based on a single dialect (in keeping with the fact that this is a pure introduction), and identify key areas where dialects may differ as you go.

Overall, highly recommended introduction to regular expressions. In my work in data analysis, I am at the point where I realize that I need to be able to process text automatically as the volume is too much to make doing this manually practical. I already surprise my colleagues with my ability to automate much analysis (they generally use MS Excel). Regular Expressions will enable what is indistinguishable to magic.

Disclaimer: I received a free electronic copy of this book as part of the O'Reilly Blogger program.
Introducction to Regular Expressions by Michael Fitzgerald





View all my reviews I review for the O'Reilly Blogger Review Program

Saturday, August 25, 2012

Book Review: Safe C++ by Vladimir Kushnir


Safe C++: How to Lower the Bug Count of your C++ codeSafe C++: How to Lower the Bug Count of your C++ code by Vladimir Kushnir
My rating: 2 of 5 stars

Safe C++ bills itself as providing ways of avoiding common programming mistakes in C++ through a set of rules. While the author makes a convincing case that these rules are better than other sets of rules (for example, his rules are supposed to be affirmatively stated, i.e. a set of things to do rather a a set of thou shalt nots), these are still only a set of rules which are combined to his own library (a mix of testing framework and some replacements for some modules in the standard library).  And as such was somewhat disappointing.

As a disclosure, I am primarily a scientific/technical programmer, and I spend most of my time in the Scipy/Numpy Python stack and R.  And freely drop from there into C/C++/Java/Fortran as needed for performance or other reasons.  And I have completely bought into the idea that depending on compilers to find bugs is foolhardy, to do it right means to unit test everything.

Coming from a dynamic language and unittesting background, I found the first chapter on the use of the compiler to catch errors to be eyebrow raising at best.  And after several pages of argument, the problems turns out to be type conversions and the the use of enums, which are integers in disguise. Which are not problems in dynamic languages where you don't make type assumptions, and if you use unittesting, you don't get caught by passing around values that do not mean what you think they mean (because you catch that during the unittest).

Going through the rest, much of it revolves around using his C++ library (available through github and also printed in the book).  And these have two major categories.  One is a testing framework, which is a pretty good start on a unittesting framework of the type I'm used to.  The other category are essentially replacements to parts of the standard library, which get around flaws that he sees.  Reading the first type I started wondering why he did not just pick a unittesting framework/library and make that his example instead of building a partial one of his own.  The second, what he says sounds right to me, and is a worthy statement to make and learn, but it gets lost in everything else.

Kushnir is not the only writer that discusses common problems in programming C++ along with some rules/guidelines for programmers to avoid them.  But I am not convinced by his assertion that his set of rules is better than others.  And I suspect that one would be better served by a version of this book that dealt with using more full featured testing frameworks and more intelligent use of the standard libraries than this book which is built around his library.

Note:  I received a free electronic copy of this book through the O'Reilly Blogger program.


Safe C++: How to Avoid Common Mistakes by Vladimir Kushnir


View all my reviews
I review for the O'Reilly Blogger Review Program

Sunday, August 12, 2012

Parenting 21 months: Mommy school is in session

Taking a look at a butterfly It is the middle of summer, and with two academics in the house that means mommy school is in full swing. The foundation of recognizing all the letters (upper case) and numbers (1-10) has been well established, now the task at hand are three letter words. In addition to the landing study area, T gets quizzed using the alphabet letters and number we have at bathtime and the letter mats we have in the bedroom. Kidding aside, we noticed that what T remembers are the ends of words and phrases. So when there are words that end in the same letter/sound he gets confused. First letters are not a problem. We also noticed this with letter (that end with the 'eee' sound) and songs (he says the ends of phrases).

Another scholarly activity is reading. He will work through a book and there is a clear correspondence with the words saying and the page that is open. Clearly, this is mostly a result of memorizing the book, but there is some actual reading going on. His favorite is "Brown bear, brown bear, what do you see?". This was also the first book where he did the page turning while we read, so it is apparently still his favorite book.

Thursday, August 09, 2012

Building PostGIS on Ubuntu from source

I wanted to revisit PostGIS for an update on a project.  In the current version, we built a data table of distances, but I really want to be able to build this table based on a road network, i.e. if I have a road shapefile, pick two nodes and calculate the distance.  And sending many thousands of requests of this type over the internet to build the distance matrix is not very practical, especially if there are multiple road networks that need to be considered as well.

There are pre-built installers for Postgresql for all the major operating systems (Windows, OS X, Linux), but they seem to be version dependent.  i.e. it matters what version of the operating system you have, because the pre-built versions make assumptions about shared libraries and such (I think that is what is happening).  Plain Postgresql does not seem to be that much of a problem, but when adding in extensions (like PostGIS) it is.  So instead of fighting it, I decided to build the PostGIS stack on Linux.

Some issues along the way.

1.  Using ./configure -> make -> make install seemed to work smoothly (Postgresql 9.1, PostGIS 2.0.  note that I already have GEOS and PROJ libraries on my system)  But I needed to take a careful look at the config.log, because then I would have noticed that it could not find GTK+, dblatex and CUnit.

2.  To build the graphical shp2pgsql-gui plugin for Postgresql pgAdminIII, configure requires a --with-gui option.

3.  For GTK+, I had this on my system, but it was GTK3, and the pgAdmin actually requires GTK 2 development libraries.

4.  For CUnit, it requires the CUnit development libraries.

5.  After it is installed, shp2pgsql-gui is in the /usr/lib/postgresql/9.1/bin/ directory, not /usr/sbin as some places suggest.  So I needed to make a symbolic link using
   sudo ln -s /usr/lib/postgresql/9.1/bin/shp2pgsql-gui /usr/bin/shp2pgsql-gui

6.  Then I needed to add appropriate entries to the plugins.ini file, which is actually in /usr/share/pgadmin3/plugins.d directory

I took the entry found at GIS Stackoverflow
http://gis.stackexchange.com/questions/16181/how-can-i-enable-shapefile-gui-loader-in-pgadmin3

Now after this, it builds, all tests pass and the PostGIS graphical loader is working.

Sunday, July 01, 2012

Book Review: Clojure Programming by Emerick, Carper, and Grand


Clojure ProgrammingClojure Programming by Chas Emerick
My rating: 4 of 5 stars

When I first started reading Clojure Programming, the first impression I had was that I've never seen a programming language introduction try so hard to tell me that my programming skills are going to grow significantly as a result of learning this programming language. This book is probably not for beginners, but working through this gives insights into why certain programming constructs work the way they do and how functional programming constructs fit with someone who is used to procedural and object oriented programming. While the efforts it makes to declare its superiority towards other languages gets annoying, the practice in using the REPL actually helps me understand how to better use tools I use in other languages.

My background is in scientific computing. And while I have used some standard languages such as Java, C, C++, and even Fortran, my first choice in languages tends to be either R or Python. The R environment is admittedly ugly, but in Python I typically use tools that surround the scientific ecosystem of ipython/Numpy/Scipy/Matplotlib. My programs tend to be structured into a data gathering and manipulation portion (MVC) then an analytics portions dominated by a series list comprehensions and map-apply and finally presentations of results. In this context, I first heard of Clojure because the Incanter: Data Sorcery project, which was an attempt to create a Lisp-based statistical computing and graphics platform. So I approached Clojure Programming with a view of its suitability for technical computing, or a way of learning functional programming techniques in a deeper fashion for use in R or Python data analytics.

It somewhat disappoints in this. When Clojure Programming put effort into demonstrating its unique points, such as the REPL, I kept on thinking "I already have this in Python/ipython" (in particular the ipython shell gives considerably more capability than the standard shell) When reaching the Numerics chapter, it seemed to be a discussion of standard data types (and when trying to discuss Python numerical types, not acknowledging Numpy data types and discussing performance is ignoring the real world.) My main complaint is that the discussions of language and environment features feels like I'm being presented with a long list of details, without having first having a general sense of what programming would be like.  In many ways, it is similar to learning scientific programming in Python.  You generally learn general programming first, and later on you learn the techniques for data analysis, many of which are based on functional programming practices.

What the book does well is explain deeply the principles behind the language and functional programming.  In works through them with cross references in the text wherever they are necessary.  And it explains why these principles are useful.   In particular with the REPL, which if I had not had experience with the ipython shell would have been quite different then other shells.

What this leads me to conclude is that this book would be very good for someone with a solid grasp of Java programming, with its ecosystem and libraries, and wanted to move into functional programming.  Clojure Programming provides a different workflow since it does compile/evaluate as you go, allowing you to see quickly the results of changes without any performance penalty. And having a different programming paradigm than object-oriented adds a set of tools that can be brought to bear under a different situation.

This was not quite what I was hoping for, but that may be because the tools and language features of Python/ipython were already overlapping with Clojure.  It does fulfill the promise of making me a more knowledgable programmer.  And I hope that working through Clojure Programming also makes me a better one.

Disclaimer:  I received a free electronic copy of Clojure Programming as part of the O'Reilly Press Blogger program.

I review for the O'Reilly Blogger Review Program
View all my reviews

Parenting 20 months: Where did mommy and daddy go?

Walking around Toronto Music Garden

This was a month of traveling. First, the whole family went off to Toronto for Auntie J's wedding. Another road trip and use of a passport for our little traveler. First we stopped in Buffalo to visit V and E. And Donut, the resident cat. Although Donut has never seen a toddler before, he clearly understood the dangers of a toddler who was way to happy to see a cat and want to play with. We had plenty of amusement watching Donut scamper away followed by T running after him crying out 'Do! Do!'

Next was Toronto. T was a very good traveller, helped by the wonders of modern technology in the form of an iPad loaded with Ni Ha, Kai-lan and an iPod loaded with the Sound of Music (yes, the Sound of Music is still going strong in this house).

We arrived in Toronto for lunch with M and family, then was the wedding, T's first. He took the opportunity to sign the guest book. Signing the guestbook

He was not so impressed with the ceremony, but he did get to enjoy the dance floor. Watching the guests dance

And he even got to play with auntie J after taking a tour of downtown Toronto before heading back home. Playing with auntie, mommy, and Elmo

But the most momentous event of the month was a different trip. And this was without him. While both of us have travelled without him this was the first trip where both of us left at the same time, leaving him with grandma and grandpa. Because as much as we love him and as good as he is in traveling and going out and about. It is nice to have some time without him.
From Baby Blog
In other news, he is talking alot more now. He likes to say 'Hi' (although he is picky on who he says it too). He has stopped gaining weight, but he still has his appetite. Basically he is leaning out instead of gaining weight. I like to think it is because he is getting more exercise. And with all his new experiences, he has lots to say. A baby with something to say sitting in a chair with a croissant and a puzzle

Sunday, June 17, 2012

A legacy in music: PSO Blogs

[Original at the Pittsburgh Symphony Blogs]

A harpist in Heinz Hall Grand Lobby

This weekend marked the end of another season for the Pittsburgh Symphony Orchestra. But it marked the end of something more. Three esteemed musicians were retiring from the PSO, Charlotta Klein Ross (cello), Ronald Cantelm (Bass), and James Gorton (Oboe). My wife has a particular connection with one, having performed alongside one. And the program reflected one type of legacy, with Gorton; his wife, Gretchen Van Hoesen; and daughter, Heidi Van Hoesen Gorton, being the soloists for Goossens' Concert Piece for Oboe/English Horn, Two Harps and Orchestra as the close for a career and a season.

Certainly one way to have a legacy is through your sons and daughters. Another is through enabling a future through gifts that allow others to flourish. But what are the things that one does to create a legacy? One is through the development of raw talent, the sort of thing that we explicitly recognize when we attend a PSO concert. But while it is memorable, it is fleeting. What does it take to create something that endures?

I can think of two ways. First is to create something based on an idea, then invite others to build upon it. It is creative not only in the creation itself, but the idea and concept that can be built on. One recent set of projects surrounds the MusOpen project, which raises funds for the development of public domain scores (including computer source that makes the score) and recordings. The first is having its first fruits, with the Open Goldberg Variations and recordings of the Prague Symphony Orchestra in support of that project. The second is to teach and train the next generation.

Always there are risks. For the first, the question that always gets stated is why do things in a different way. There are certainly scanned copies of Bach's Goldberg variations and other scores, and many editions that have been put together by dedicated scholars. But now the promise is that the music (both the description as well as the performance) can be used as a starting point in other creative works, which requires both the right to do so as well as source material that can be modified. And for the second, the question is if it makes a difference, especially when the deepest knowledge can only be passed in one-on-one interaction.

My wife and I are both at stages in our careers where we make commitments to the future. And part of that is the fact that much of what we leave behind is not going to be what we ourselves create, but in ideas and organizations passed on to students and colleagues whom we have the pleasure of working, contending, and building with, and new ideas that are developed and grown into institutional capabilities and memories.

I was listening to the stories of the musicians retiring with this season, and I was thinking about the legacies they leave behind, which was more than tales of inspired musicianship, although that was there. It was in the creation of memories, and investment in others to guide them to their futures, musical or otherwise. And in that is something worthy of the name legacy.

Saturday, June 02, 2012

A free, public domain recording of the Goldberg Variations performed by Kimiko Ishizaka

The Open Goldberg Variations

Last Monday was marked on my calendar as the release of The Open Goldberg Variations performed by Kimiko Ishizaka.  Why was that special?  It was the release of a crowd-funded professionally performed, recorded, and produced recording and score of Bach's Goldberg Variations into the public domain.  It is a throwback to the old system of patronage for individuals supporting artists and their works.

Arguably, the enduring contribution of this is the release into the public domain of both the score as well as the MuseScore source file.  As programmers know, the release of the source file in an open format with an open source implementation means that this will be available for re-formatting, re-publication, and combining with other similarly licensed works forever.  It also means that the score has been examined, not only by those who were directly funded by the project, but by anyone who had the inclination and interest to participate in the project over the past year.  The process was open for examination not only for correctness, but also feedback and ideas.  No small matter in piece that was meant for a double manual (keyboards) of a harpsichord instead of the single keyboard of a piano.  While the notes may be by J. S. Bach, how it is presented and arranged so a pianist can play it when the physical layout of the instrument is different then intended matters.  The challenges of this have lead to improvements on the open source MuseScore composition and notation program (and I for one am waiting for the release that includes these improvements to come out). Aaron Copland (and others) have stated that music is a collaboration between composer, performer and audience.  In many cases, the third is often diminished, reduced to paying for tickets, recordings, and donations.  But here, the fact that the audience could contribute was taken seriously.

I'm already familiar with the piece from the 1955 Glenn Gould recording.  And since the release of The Open Goldberg Variations I have had this playing in the background continuously while working.  Which, come to think of it, is not much different than the original purpose of the piece, to provide something to be played by Johann Goldberg to play for the Russian Count Kaiserling to cheer him up during his insomnia. And last night when everyone else in the household went to bed, I stayed up to listen to this with a copy of the public domain score (from MuseScore.com) in front of me.

Looking at the score, one obvious note is the utter absence of dynamics and tempo markings.  Which leaves considerable room for interpretation.  The range of the 30 variations (plus the base Aria and final Area da Capoe è Fine) allows the pianist to show her range, and Ishizaka provides something to hear.  As expected, she does not make the same choices as Gould.   And she does not seem to be in as much of a hurry as Gould was. And the recording became a delight as she worked her way through the variation, each with its own feel, even with each repeat.

Here in Pittsburgh, I've had the please of being a part of an experiment by the Pittsburgh Symphony to involve a part of the audience as part of its blog.  Because for the audience to take its place in the three aspects of composer/performer/audience there should be more response than only our monetary support of institutions, but to contribute to criticism and direction of the art.  And this project pushed that in a way not common today.

Is this model sustainable?  Since it was funded through Kickstarter, the professionals involved did indeed get paid.  Looking at Kimiko Ishizaka's website, she seems to have a nice international concert schedule with many recent and future bookings that are easily attributable to her participation in this project and the Well Tempered Clavier (which is a potential following project).  Similar to programmers making a name and reputation for themselves by contributing to open source projects, Ishizaka seems to be taking advantage of the additional exposure coming from her participation.  And similarly to open source, the observation is that professional quality work on well run and managed projects leads to high quality products and opens leads on future work.

If you have any interest in listening to classical music, I highly recommend downloading the recording (MP3 and FLAC available at Soundcloud below).  If you want to follow along with the score, or if you are thinking of actually playing this yourself, get the score from MuseScore.com.


Thursday, May 31, 2012

19 months: When you read you begin with ABC, when you sing you begin with Do-Re-Mi

Happy baby squatting This month was a learning month.  Learning A B C, 1 2 3, and Do-Re-Mi.  T can actually identify all the letters, although there are a few he mixes up.  The ones with four lines converging (K, X) and the ones with an embedded V (U, V, Y) cause trouble.  And I suspect that 1-2-3 are not really numbers at this point, but an ordered set (1 comes before 2, and then comes 3)

Baby and mommy are in the midst of a "Sound of Music" phase right now.  So the Netflix DVD of Sound of Music lives in the DVD player.  Videos are in the Favorites list on YouTube (and T can get to them himself on both iPhones).  And he can sing and dance to most of the songs.  I'm probably going to have most of the soundtrack memorized by the end of the month at the rate things are going.

There are two Takraw to play with May was also a month of Asian festivals.  S and L went to the Silk Screen Gala.  And since we dressed up, so did T. And we also took T with us to Thai Night, where he was the baby of the evening and provided some entertainment.

Task for the coming month:  The boy across the street informed T that he could only play with them if he could do math and read . . .

Friday, May 04, 2012

Book Review: Dinocalpyse Now by Chuck Wendig

Dinocalypse Now (Dinocalypse Trilogy #1)Dinocalypse Now by Chuck Wendig
My rating: 4 of 5 stars

Dinocalypse Now is a pulp book set in the world of a role playing game, Spirit of the Century. So you know what you are getting into, which is just a lot of fun. It moves quickly, with one cliffhanger and plot twist after another and leaves you with a smile with every chapter.

It suffers from having too many characters to follow. There are about three main story lines with the heros, and two more following the villians. While it is one way of introducing characters and giving you some reason to remember each, it means that the main one (and I am pretty sure that there is a main one, since it includes the obligatory romance) is short changed and the love triangle feels stilted.

It is a fun book to read, set in a setting that is fun (and not infrequently silly) to play. I like its setting of the scene and I'm looking forward to the remainder of the series to start showing up, which I'm hoping do a better job of developing individual characters.

View all my reviews

Wednesday, May 02, 2012

Parenting Month 18: Road trip!

This is the letter 'D' Khun Yaa
This month was a month of learning. Learning the alphabet. Learning how to walk better. What animals sound like. And what to call everyone in the house.

And T enjoyed having grandma here (Khun Yaa). It meant not having to go to day care and getting to play at home every day. Of course, good things have to come to an end so in the middle of the month we had a grandparent shift change. One day he wakes up with one grandma in the house. The next he wakes up and there is a different grandma (and grandpa) in the house.

That is a lot of splashing going onThe other significant event was a road trip. We went off to Cincinnati to see S's professor celebrate impending retirement. We enjoyed the trip (with an iPad to entertain T dring the drive there) and T got to interact with more people (who probably have been seeing his pictures on Facebook for the past year). And he was the baby of the gathering, a role he filled nicely.

P1020359
What is coming up? More time with grandparents. Which means lots of play, but also many lesson plans. Music, alphabet, numbers, exercise, . . .

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.

Saturday, March 24, 2012

Book Review: Machine Learning for Hackers by Conway and White

Machine Learning for HackersMachine Learning for Hackers by Drew Conway
My rating: 5 of 5 stars

Machine Learning for Hackers is not a reference book or a standard programming tutorial on machine learning. For references, you go to Hastie, Tibshirani,and Friedman's 'The Elements of Statistical Learning.' For tutorials, there are a fair number of sources that could walk you through the use of regression, data exploration, classifiers, principle component analysis, etc functions in R. But what MLfH gives you are Drew Conway and John Myles White. And they don't teach skills, they are passing on wisdom of how to work with data, how data needs to be explored, understood, manipulated, and finally, using machine learning methods to gain understanding.

In computer modeling in general and data analysis in particular, one thing that is often hard to convey is that the purpose of computing is not numbers, but insight. The effects of this problem is seen in graduate from even the best schools knowing how to drive a computer program, but not knowing how to interpret results or how to ask a question, then taking the results from that and asking the next question. The course we teach and the texts that we use do not help. Our courses are each siloed to present a distinct portion of the total body of knowledge. Textbooks are often either theoretical or intended to provide a glimpse of application, but always in bounded chunks. Computer application books are often built around the capabilities of program in question, but often stop at the edge of the capabilities of the application or environment in question. What is needed is not to tech methods or tools, but to teach wisdom. The ideal is to be able to sit side by side with an expert who can walk through a data set and ask questions, get answers, and to think about what to do next, whether the answer is what was expected or not.

This is what Conway and White do. For each topic, they open up with a discussion of the problem type and the tools, and sometimes with a toy example. But then they go through a substantive example. And the narrative text is where they shine. They take a messy dataset (often the publicly available/accessible form) and work through what needs to be massaged to get it into useable form. Next is processing the data into the R data type needed for the analysis. Then initial exploratory steps where you gain understanding of problem, and how to analyze it, finally analysis and presentation.

I've been taught that in learning a programming language, it is often beneficial to have two books for reference (other than tutorials), one that is a proper reference (i.e. how to do something), and one a morality reference, how you should approach doing something. In data analysis, you should know the theory/methodology and how to use the tools at hand to apply the methodology, but also how to think about problems. And short of an apprenticeship with a master, MLfH does very well in this.

Disclaimer: I received a free electronic copy of this book from the OReilly Blogger Program. More information on this book can be found at the book web site.
I review for the O'Reilly Blogger Review Program