Saturday, July 1, 2017

Snohomish Pictures

Yeah, balloon flights over the town are a thing in Summer.


Downtown area...right beside a river

The following two pictures are ones that I took. 5 minutes out of town.

Tuesday, May 9, 2017

A Near Summer Night's Dream

When you go to a Seattle Shakespeare play, you can always expect that you'll see an excellent production that takes a unique look at a Shakespeare play. They are currently pulling out all the stops with their production of A Midsummer Night's Dream, produced this time as a cross between the Bard and a 1940ish musical production.

It's pitch perfect. The Shakespearean text and context are there but the musical numbers are snappy and the actors also nail the personality types from that era: the big city jaded look is hilarious when it's projected onto Titania and her fairies when they are catering to the whims of bottom.

Everyone in this play is fantastic and very accomplished but I just have to call out a few

George Mount as Theseus - I've enjoyed his work ever since I first saw him as Richard II a few years ago.

Terence Kelley, Vanessa Miller and John David Scott were terrific respectively as Oberon, Titania and Puck.

Keiko Green - this lady is a performer to watch. She has terrific comedic timing and is an excellent
Shakespearean performer. My wife and I were also commenting that this year must have been a LOT of hard work for her, as she rehearsed/performed in Upstart Crow's Bring Down The House as the warrior lord Buckingham and then went to rehearsal in a Shakespearean musical/comedy.

MJ Sieber - he has played both a fantastic Bottom (One of my favorite characters in the show) and
Autolycus in The Winter's Tale, this year.

I recommend getting out to see this production highly! You *will* have fun!

Cast (in alphabetical order)

Shanna Allman (Flute)
Maddie Brantz (Fairy)
Mallory Cooney King (Hermia)
Steven Davis (Starveling)
Sarah Dennis (Fairy)
Bob Downing (Snout)
Brandon Felker (Egeus/Quince)
Keiko Green (Helena)
Devyn Grendell (Fairy)
Terence Kelley (Oberon)
Vanessa Miller (Titania)
George Mount (Theseus)
Crystal Dawn Munkers (Hippolyta)
Casey Raiha (Lysander)
John David Scott (Puck)
ZoƩ Tziotis Shields (Fairy)
MJ Sieber (Bottom)
Adam St. John (Demetrius)
Marco Voli (Snug)

Production Team

George Mount (Director)
Crystal Dawn Munkers (Choreographer)
Nir Sadovnik (Composer)
Craig Wollam (Set Designer)
Doris Black (Costume Designer)
Roberta Russell (Lighting Designer)
Robin Macartney (Props Designer)
Terry Gray (Sound Consultant)
Dayton Allemann (Music Director)

Thursday, February 9, 2017

A new direction for this Geek Blog

In my previous post about home database programming projects I have been working on, I alluded to the fact that I am on a "temporary work hiatus" right now. Translation: I was laid off in the course of my previous employer's reduction in force and am busily searching for a job.

Obviously there are some stresses from not having much of a positive cash flow. However, I am endeavoring to use every moment of my time as constructively as possible:
  • Searching for at least a few jobs to apply for a day (more now that a friend referred me internally in Microsoft and I have the assistance of one of their recruiters for a few weeks)
  • Spending a few hours/day playing catch-up on some of the newer technologies
  • Exercising (running, walking the dogs, using the stationary bike in the evening)
  • Rebooting my eating habits: it's far too easy to go into grazing mode under time pressure
  • Reading books I haven't had time to read, in the evening
This still leaves me with enough free time that I have decided to use in rebooting another activity I've always wanted to do: write on a regular basis. Therefore, I will be taking this previously unfocused geek blog and begin adding consistent entries about the state of the tech industry from the point of view of someone who has been a developer for a for quite a while. If this results in enough material (especially if it develops some readership) I may spin it off into a completely separate blog.

Looking back over previous entries dating back to 2010, this current geek blog has been a bit of a catchall:
  • Musings about how the hot computer which launched my development career is now an exhibit at the University of Washington and how much more powerful my Android phone was.
  • Comments about home computer projects, from encryption applications to database tools that I used daily at work
  • Shakespeare and other literary geekery, including tattoos, cool old books and word frequency counts in Shakespeare plays
  • Miscellaneous topics such as work Fitbit challenges and pictures from a trip to England and Wales
But since the topic of what the computer industry is like right now is especially compelling to me personally now, that will be a new consistent focus. I hope that others will find my commentary interesting.

Monday, January 30, 2017

Home programming projects: data browser and differences finder

During this temporary work hiatus, I am spending some time working on enhancing a couple of my "Winter break" projects. These are projects that I worked on for fun during past Winter breaks from work and which have been useful in my day-to-day work.

1) A database "browser", where you search for a record and can then browse forward and backward in the database by following foreign key entries.

2) A database difference finder which allows you to take a snapshot of a database's schema and latest record info and then compare to other such snapshots

The Database Browser

The purpose here is to give a quick and handy browsing ability. This means that you select a record somewhere in the database (schema info loaded when server and database selected) and can then browse back to records in other tables that have a key in that record...and forward to records containing the "current" records key.

Most windows have "Show SQL" buttons that show you the SQL used to generate those records.

The "Get Field Info or SQL Join" button takes you to a popup which serves two functions.

1) It can search for tables, stored procs and triggers that contain a string you want to locate

2) It can generate a basic SQL join between two tables that you name

Database difference finder

The purpose of this program is to find differences between snapshots of two databases or the same database after a change has been made (structural or in terms of saved data).

Here, I am showing the differences detected when a tables has had a column added between two snapshots.

In this case, I am showing the differences resulting when a database row has been added, deleted or changed (based on timestamp differences).

Sunday, October 23, 2016

Seattle Shakespeare Company's "Medea"

(Medea by Anthony Frederick Augustus Sandys (painted 1866-68))

The Seattle Shakespeare Company's production of Euripides' play "Medea" is brilliantly done. It takes up the story of Jason and Medea, 10 years after her help was crucial to him in obtaining the Golden Fleece. In the interim, she bore him two sons. But now Jason is planning to abandon Media for Glauce, the daughter of King Cleon.

This production is, as befits the material, a cry of raw pain and anger. It opens with the Nurse explaining Jason's betrayal of Medea. In another room seen only in shadow, Medea is clearly raging and destroying everything she can get her hands on. By the end of the play she HAS destroyed everything important to her in order to get revenge upon Jason. Although, to be fair it has to be pointed out that it was really the feckless Jason who began the destruction and Medea who followed through with its rather obvious consequences.

This being the first Greek play I have seen, the role played by the Chorus was very interesting. I was rather surprised at the extent to which the Chorus interacted with the play but it offered support for Medea's planned revenge...right up to the point where she decided to murder her two children. At that point, like a conscience she ought to listen to, they begin to try to reason with her and suggest that she not take her revenge to the point of killing innocents. But their efforts are to no avail: Medea follows through with her plans and leaves the stage a charnel house.

If you enjoy seeing a really good, cathartic tragedy, this is the play for you! I'm looking forward to being an usher for next weekend's performance so I can see it again...

Production Team

Kelly Kitchens (Director)
Donald Byrd (Choreographer)
Andrea Bryn Bush (Set Designer)
Chelsea Cook (Costume Designer)
Kent Cubbage (Lighting Designer)
Shenandoah Davis (Composer)
Robin Macartney (Props Designer)
Nina Trotto (Stage Manager).

Cast (in alphabetical order)

John Bianchi (Servant)
Maya Burton (Chorus)
Peter Crook (Kreon)
Yadira Duarte (Nurse)
Sunam Ellis (Chorus)
Sylvester F. Kamara (Jason)
Chelsea LeValley (Chorus)
Kevin McKeon (Aigeus)
Matt Sherrill (Tutor)
Alexandra Tavares (Medea)
Kathryn Van Meter (Chorus)
Lucy Weber (Chorus)
Dedra D. Woods (Chorus)

Tuesday, October 18, 2016

Seattle Shakespeare production of A Winter's Tale

The Seattle area is settling cozily into Autumn now. Fans of the Seattle Seahawks are getting excited about watching  big men in spandex hold meetings and occasionally chase an inflated leather ball. Others of us are much more interested in the start of another brilliant Seattle Shakespeare season. And this one hit the ground running with its production of The Winter's Tale!

Last month, I attended a Preview showing of the play. Managing Director John Bradshaw, after asking the audience to turn off their cell phones (I remember one going off during Richard II two years ago...and wondering whether the callee was one of the heads in a bag delivered to Bolingbroke later), noted that Preview showings are fresh productions and the cast occasionally have missteps. If there were any in this performance, I definitely missed them. This performance was akin to other Seattle Shakespeare productions I have seen in recent years: homey and comfortable, yet with a stratospheric level of excellence!

For those not familiar with it, The Winter's Tale is the story of a king who destroys his family through a clearly insane jealousy and ultimately largely regains it. Like other late Shakespeare plays (Pericles, Cymbeline, The Tempest), this one contains tragic elements of disaster and ruined lives but culminates in an ending which shows that even when life appears bleak, there can be hope. That's why these late plays are among my favorites

Like much of the Bard's work, this play uses multiple comparable plot lines to emphasize the points being made. While not as insane and lethal as Leontes, his alienated friend Polixines nearly makes a a similarly fatal error in trying to force his will on his son and the princess who he thinks is a common shepherdess.

One other intriguing thing about this play is that Leontes' emotional arc almost seemed like a reverse of the character Othello's in that play. Othello starts off happy, calm and collected, is gradually worked to a fever pitch of jealousy, commits the atrocity of murdering his wife and then discovers that he was duped into doing so and almost calmly takes his own life. In A Winter's Tale, the king starts out calm and then explodes into a jealous rage for no reason at all. He then spends some 16 years trying to atone for his crimes and in a surprise ending, is reunited with the queen he had thought long dead. Perhaps in an intentional choice, the actor portraying Leontes was the same actor who played Iago in Seattle Shakespeare's production of Othello, last year.

Another striking thing about this play (aside from its epic stage direction "Exit pursued by a bear") is how the heroism of ordinary folks serves to counteract the dangerous excesses of rulers making bad choices. For a playwright so invested in royalty and maintaining the natural hierarchical order of things, the actions of Camillo and Paulina in this play are a refreshing reminder that power does not automatically bring wisdom...

This production was delightful and I am very glad to have seen it.

Production Team

Sheila Daniels (Director)
Tommer Peterson (Set Designer)
Kelly McDonald (Costume Designer)
Reed Nakayama (Lighting Designer)
Harry Todd Jamieson (Sound Designer)
Marc Kenison (Choreographer)
Rafael Molina (Composer)
Robin Macartney (Props Designer)
Miranda Pratt (Stage Manager).


Mark Fullerton (Old Shepherd)
Rachel Guyer-Mafune (Dorcas/Lady)
Spencer Hamp (Clown)
Reginald Andre Jackson (Polixenes)
Jonelle Jordan (Mopsa/Emilia)
Brenda Joyner (Hermione)
Darragh Kennan (Leontes)
Finn Kennan (Mamillius)
Denny Le (ensemble)
George Mount (Antigonus)
Galen Joseph Osier (Camillo)
Rudy Roushdi (Florizel)
MJ Sieber (Autolycus)
Jasmine Jean Sim (Perdita)
Amy Thone (Paulina)

Monday, September 19, 2016

Using the R.cache package

# RStudio instance #1 - the cache saving test piece
# Load R.cache library, set working and cache directories
setCacheRootPath(path="C:\\Data Study\\Class 5 Reproducible Research\\Week 4")
setwd("C:\\Data Study\\Class 5 Reproducible Research\\Assignment 2")

# Load a large data file that takes a while to load
data1 <- ata="" bzfile="" div="" read.csv="" tormdata.csv.bz2="">

# Cache the loaded data object using key ABC
# Creates file d125f08eb1bf24d4c1e2b38b35d3362b.Rcache (389,576 KB)
key <- div="" list="">
> nrow(data1)
[1] 902297
> ncol(data1)

                   # RStudio instance #2 (separate UI, process) - the cache reading test piece
                   # Load R.cache library, set working and cache directories
                   setCacheRootPath(path="C:\\Data Study\\Class 5 Reproducible Research\\Week 4")
                   setwd("C:\\Data Study\\Class 5 Reproducible Research\\Assignment 2")

                   # Load the large cached data object - much faster than original load!
                   key <- b="" list="">
                   dataX <- b="" key="" loadcache="">
                    > nrow(dataX)
                    [1] 902297
                    > ncol(dataX)
                    [1] 37

# Cache the datamod() function  itself
# Creates file f4971f5a1be44fc8fddb87235d45aaaa.Rcache (2 KB)
key <- div="" list="">

                   # Load the datamod() function 
                   key <- b="" list="">
                   dataX <- b="" key="" loadcache="">
                   > dataX(4)
                   [1] 12

# Cache the result of a datamod function call
# Creates file 1b2526c00d8ed8a42700fc0fb39c1b1b.Rcache (1 KB)
key <- div="" list="">

                   # Load the datamod() function return value 
                   key <- b="" list="">
                   dataX <- b="" key="" loadcache="">
                   > dataX
                   [1] 18

# Small sample function
datamod <- div="" function="" myarg="">
  myarg * 3