Yard Sale, June 21

Yard Sale
Saturday, June 21
8 AM to 1 PM

574 Saugatucket Rd
Peace Dale, RI
Help us clear out Chris's art stutio and my kids's rooms! Where again? Here!.

Roof woods

Roof woodsWhen you spend many weekends gardening -- new beds to dig, old ones to weed, plants to move, plants to add, grass to mow, etc -- sometimes you simply forget to look up every once in a while. Clearly, I need to clean out the gutters.

Groceries transportation

Groceries transportationNo excuse now for not riding the bike the few miles into town to buy groceries and small gadgets.

Log when your scripts start and end

When you write scripts that are the controllers for processing data make sure to log when they start and finish the work. It is so frustrating to debug an erroneous processing result -- often days or weeks later -- and not have any indication when the process actually started and finished. A missing finished log entry is the first indication that the processing ended abruptly.

So, in bash shell script use
. logger.sh
info starting
info finished
where logger.sh is somewhere in your path and has the content

# logger.sh
# info, warning, error and fatal functions to display timestamped 
# messages to stderr. Use the infof, warningf, errorf and fatalf 
# functions to format the message using printf. A newline is 
# automatically added and should not be included in your printf 
# format string.

function info {
        log INFO $*

function infof {
        logf INFO $*

function warning {
        log WARNING $*

function warningf {
        logf WARNING $*

function error {
        log ERROR $*

function errorf {
        logf ERROR $*

function fatal {
        log FATAL $*
        exit 1;

function fatalf {
        logf FATAL $*
        exit 1;

function log {
        echo $(date +'%F %T') $* 1>&2

function logf {
        shift 2
        printf "$(date +'%F %T') $level $format\n" $* 1>&2

Most other languages have extensive logging support.

Hardly seems worth posting such an obvious piece of advice, but look around into your scripts -- as I did mine -- and notice how few provide this data.

Remove shoes, cast vote

RI's Governor Carcieri has proposed that a photo-id be required to vote in RI. After all, (to paraphrase) "you need an id in order to fly". Perhaps we should also be expected to remove our shoes when voting too. It is hard to understand how our politicians continue to push for mechanisms to disenfranchise citizens.

How the States Got Their Shapes

I listened to some of How the States Got Their Shapes on the drive today. I was fascinated by the history of West Virginia -- a state that exists because of Civil War opportunism. How physical borders are negotiated is a great segue into how other kinds of borders are negotiated in families, sects, corporations, etc. Great source of projects for a high school, eg "Why is South Kingstown the shape it is?" or "Why does the Chariho school district exist?".

Oh no!

Two 3G iPhones + AT&T family plan + one mini Mac + development kit + reduced billable hours learning, developing & playing = one expensive Q3!

Goalkeeping & HTML Canvas

Henry is the goalkeeper for his soccer team. I was practicing with him the other day and trying to explain how to protect the goal by forcing the offensive player to have only one side of the goal to play the ball to and then only at a very acute angle. Henry is 8 and so none of this really sank in. Once again, I wished I had a pair of magic lens so that he and I could literally see the angles I was taking about overlaided on the playing field.

I was retelling this story to Geoffrey and I realized this was a small enough visualization project to perform my first canvas experiment. And here it is


Update: Sometimes I am so old-school. I should be referencing augmented reality.

Sweet Cakes has a web site

The sign said "Cake is the new flowers". I do like both but tend to go to Sweet Cakes far more often than to Rose Shack.