Austin’s Graffiti Park -or- A Visit to Hope Gallery

We finally made it out to the Graffiti Park in downtown Austin.  It’s a pretty fun thing.  Basically, it’s an unofficial park of a bunch of old brick walls where anybody can graffiti whatever they want.  People bring their own paint cans and just let loose.  It’s a constantly changing tapestry of art, some of it good, some of it ugly.

It goes way up the hill, but the boys couldn’t climb it, so we stayed down at the bottom.


Torino's Pose

Torino wanted to set up a shot all by himself. This is him telling me I'm in the wrong place and need to go over there. (You can't see it, but he's pointing.)

Torino's Pose

Boys at The Window

The boys playing in the window. Kai Kai follows Torino.

Boys at The Window

Torino at The Window

Torino loved that he could hang out in this "window."

Torino at The Window

Typical

This is pretty typical. Torino ran off, Kai Kai is trying to run off after him, Mama is being a goofball, and Daddyman is taking the shot. Of course, Mama and Daddyman switch it up.

Typical

Captured Moment

Daddyman lost his balance right as this shot was being taken. Kai Kai thought it was fun. Captured a great moment though!

Captured Moment

Aaaaah!

A shared scream.

Aaaaah!

Ahhhhh

A shared smile.

Ahhhhh

Brothers

The brothers.

Brothers

Pointing At Paint

Somebody painted the leaves of the bush.

Pointing At Paint

Posts

They thought it was fun standing on the posts.

Posts

That's Right

Mama got a moment of not chasing the boys around.

That's Right

Twins

Torino thought the twins were cool for a moment.

Twins

Joel Yau at the 2015 Via Colori in Houston

Joel Yau is a good friend of ours from the San Francisco bay area who likes to draw on sidewalks and roads with chalk. In fact he’s actually really good at it. There are all these street drawing festivals and events all over the place.  It’s a thing.  And he gets invited to do his own doodles there.  If you’ve never gone to one of these types of events, I recommend it.  It’s really interesting to see all the different artistic representations and interpretations there, and you can see a huge spectrum of artistic styles and talent.

A few weekends ago, Joel was drawing the streets in Houston at the 2015 Via Colori festival. It’s about a 3 hour drive from Austin, but we’d never been there before.  So we figured that’d be a great opportunity to see a good friend and visit our new neighbor city.  So off to Houston we went for a day trip with a 1 year old and a 3 year old.

Mr. Yau is an incredibly generous man. While still working hard to finish up his piece, he let Torino, my 3 year old son, “help” him on one corner of his piece for something like an hour. Torino absolutely loved it. And every few minutes he stopped, stood up and said, “Uncle Joel, can I have more colors?”

There were a lot of wonderful artists there, but I didn’t take a bunch of pictures of other people’s work.  Ah, but there’s a whole web-site for that festival here: Via Colori.  And swarms of pictures on a Flickr photostream here: Houston Via Colori.


By Joel Yau.

0

Torino's chalk hands.

0

The master working away. It was cold out there, by the way.

0

Torino working hard on his corner.

0

3 year old Torino "helping" friend and artist Joel Yau.

0

This is the corner Torino was working on, after the master artist "touched it up a bit."

0

Torino and Joel. I don't know what that tongue was all about.

0

Groovy Subclassing Hiccup

“Could not find matching constructor” instantiating inner Java class from Groovy

I’m not sure if this is a bug or not.  Seems like it to me.  But there’s an easy work-around once you know what you’re dealing with.

Let’s say you have some legacy Java code you’re working with, and you’re working in Groovy. That makes you happy, right? So, let’s say the Java class, Earth, has an inner class, Fire. We’ll say Fire has a constructor that takes a parameter.

// c m semicolons? m r javas
package issues.subclassedhiccup;
public class Earth
{
  public class Fire
  {
    public Fire (int inWhoosh)
    {
      whoosh = inWhoosh;
    }
    public long doubleWhoosh ()
    {
      whoosh *= whoosh;
      return whoosh;
    }
    long whoosh;
  }
}

Great, so you need to extend the Earth thingy in your code, you know, to make it better. No problem, go ahead. Then in your subclassed code you try to instantiate a new Fire. Maybe something like this:

// groovy!
package issues.subclassedhiccup
class Water
{
  class Air
    extends Earth
  {
    Fire createFire (int whoosh)
    {
      return new Fire(whoosh)
    }
  }
  long doBigWhoosh (int base, int times)
  {
    def air = new Air()
    def fire = air.createFire(base)
    def value = 0
    for (i in 0..times)
    { value = fire.doubleWhoosh() }
    return value
  }
  static public main (String[] args)
  {
    System.out << "2 raised 3 times is ${new Water().doBigWhoosh(2,3)}"
  }
}

Awesome! Good work. Now run it, and behold!

Exception in thread “main” groovy.lang.GroovyRuntimeException: Could not find matching constructor for: issues.subclassedhiccup.Earth$Fire(java.lang.Integer)

How odd.  It can’t find Fire, even though it’s defined in our base class.  Hrm.  Well, explicitly qualifying that guy fixes this issue.  Just change the createFire method like so:

    Earth.Fire createFire (int whoosh)
    {
      return new Earth.Fire(whoosh)
    }

Run it, and behold!

Exception in thread “main” groovy.lang.GroovyRuntimeException: Could not find matching constructor for: issues.subclassedhiccup.Earth$Fire(java.lang.Integer)

Holy quacomole! What is this madness?

After a few hours of rather creative cursing and thoroughly depilating head scratching my conclusion is, it’s broke. The constructors of inner classes always have an implied parameter of the outter class’s this. Well, unless it’s a static inner class. In this case, it seems Groovy is trying to find a constructor with the implied guy that matches the extended class rather than allowing for one that matches the base class. Not finding one, it just horks.

In other words, I think it’s looking for a constructor of Fire defined as:

  public Fire (Air parent, int inWhoosh)

And not looking at the superclasses of Air, in this case:

  public Fire (Earth parent, int inWhoosh)

Fortunately there’s a simple work-around. Just manually inject the this. So the createFire method becomes:

    Earth.Fire createFire (int whoosh)
    {
      return new Earth.Fire(this,whoosh)
    }

Run it, and behold!

2 raised 3 times is 65536

Great. Fixed. So, we encountered two issues in here:

1) The inner class had to be qualified in the subclass: Earth.Fire

2) The instantiation of the inner class from the subclass had to have an additional this parameter added as the first parameter: new Earth.Fire(this,whoosh)

On Ignoring Crazy Software Engineers

Let’s say you see a guy standing on the corner holding a sign that says, “W, X and Y are here! Z is coming!” Most of us would look away quickly for fear of accidentally catching the crazy guy’s eye. A few of us would smile compassionately, with just a hint of pity. Some would perhaps offer a few dollars so the guy could get a bite to eat for supper.

As a software engineer, I often feel like upper management treats nearly everything I say as if I were holding a sign on the corner. I can describe a situation that I see bearing down on all of us at the company in as much eloquence as I can muster, I can back it with statistics and facts, and still they do their best to avoid looking at me. When they finally do force themselves to look at me, it’s with a hint of pity.

They think I don’t live in the same world they do. Oh, in all fairness, they’re right. My focus must be on the enterprise system backing the business, centering on keeping the system humming along and performing occasional dark ceremonies to ensure it continues humming happily. Their focus is on the business itself, which often centers around juggling cash-flows and playing wizardry with resource management.

I look at that guage pushing into the yellow towards the redline and say, “We’re all out of chickens to sacrifice and it’s going to be a full moon soon. We need to rework that component before it blows up.” Management hears, “I like chickens and might even be a lycanthropic were-chicken myself, and I want spend money and stop new development to rework that component.”

And so it goes; the component, it blows. I and my team work night and day to contain the damage, to get everything back under control, to duct-tape the system enough for it to hum a timid tune again. And through it all, management screams and issues panicked edicts: “We need better monitoring! We need a warning system telling us before this thing blows up! We need to build the system in such a way that it doesn’t blow up when it blows up!”

Then, when the engineering team finally gets things under control, the managers all grab their pitchforks and torches and embark on a good old fashioned post-mortem witch hunt so they can find somebody to blame. They say things like, “We’re not pointing fingers here, we just want to find out how we can avoid letting this happen again in the future,” while they point their fingers and conduct their inquisition of all the engineers making them recount repeatedly every moment leading up to the incident.

It doesn’t matter how big or small the company. It doesn’t matter if management is comprised of ex-engineers who have been on the pointy end of this stick themselves. The industry doesn’t matter. The architecture and technologies involved don’t matter. It doesn’t even matter if I speak softly but carry a big stick.

But I can’t not call out warnings when I see problems heading our way.  That would be both irresponsible and completely contrary to my nature; and besides, I always have hope that this time will be different, that this time somebody will listen to me before the crisis hits, that this time unicorn farts and rainbows will flood the world and we’ll all clasp hands and sing, “Happy Happy Joy Joy,” in four part harmony.   And so I stand on the corner holding up my sign warning of a possible future system failure.

Recipe: Trail Bars

My sister-in-law asked for a recipe for granola bars. I used to make these all the time when I went backpacking. They’re easy to carry, tasty and give good energy.

1/4 cup butter
4 cups small marshmallows
3 cups crispy rice cereal
3 cups granola

In a sauce pan, melt the butter.  Add in the marshmallows and melt them into the butter.  Remove from heat.  Mix in the cereal and granola.  Butter a flat pan.  We use a glass, square or rectangle pan.  While the mix is still warm, spread it into the pan and press it flat.  (If you like it fluffy, press it less, but it might fall apart easier.)  Cool it and cut it into appropriately sized pieces.

Of course, the magic is in the granola.  You can use any granola you like, but here’s my favorite recipe (or close, anyhow).

2 cups rolled oats
3/4 cup silvered almonds
3/4 cup cashews
1/4 cup brown sugar
1/4 cup apple sauce
1/4 cup vegetable oil
1/4 teaspoon salt

Mix it all together and spread it on a cookie sheet (or 2 if needed).  Toast it. 

You might be able to toast it in a wok, but I’ve never tried that.  And it would undoubtedly take some practice.

We toast it in the oven.  300 degrees F, stirring every 15 minutes or so until it’s the color you want.  I like it pretty dark.  The darker it is the better the roasty and carmely flavors.

Revisited: Gluten-Free, Dairy-Free, Soy-Free Waffles

It’s been about a year and a half since I posted my first Gluten-Free, Dairy-Free, Soy-Free Waffle recipe.  And I’ve refined it a bit.  Besides the nice compliments about the waffles, I’ve also had several requests for the new recipe, so I think it’s time for a revisit.

There are a few targetted changes to mention.  First off, the corn starch.  The previous recipe had a tendency to be too crisp, so crisp that they’re hard like a bagget.  While we do want the waffles to be nice and crisp on the outside, they shouldn’t rip up your gums.  The gluten-free flour we’re using already has other starches in it, potato and tapioca, and those crisps things up nicely.  Adding the corn starch was making the waffles hard, rather than crisp.

Next up, the rice milk.  I’ve found that rice milk often causes the waffles to stick.  We can’t use soy milk because our boy is allergic to soy as well, so we tried oat milk.  That turned out to be a big win.  We get far less stickage with oat milk than we did with rice milk.

One thing I’ve noticed as we’ve experimented with different gluten free flours is that each gluten free recipe requires slight adjustments to the recipe.  Usually just the amount of oat milk used needs to be a bit more or a bit less.  So, make sure you adjust according to the flour you’re using.

On that subject, the recipe for the gluten free flour I much prefer for our waffles and pancakes is this:

4 cups rice flour
1 1/3 cup potato starch
2/3 cup tapioca starch

The few other minor adjustments: I’ve upped the baking powder from 2 teaspoons to 3.  And I’ve dropped the salt.  With the extra baking powder, the salt really isn’t needed.

Ok, so with all that, my current favorite, awesomest and best waffle recipe is like so:

1 cup gluten-free flour
1/2 cup oat flour
1/4 cup quick oats
3 teaspoons baking powder
1 teaspoon baking soda

1 cup oat milk
1/4 cup apple cider vinegar
1/4 cup soy-free shortening, melted
Mix the drys together.
Mix the wets together.
Mix the drys and the wets together.
Cook and eat.
  • If you need extra moisture use oat milk, NOT water.  The texture should be on the runny side, thinner than for pancakes.
  • Keep the waffle iron on the highest setting.  The darkness will depend on the type of gluten-free flour you’re using.  Some flours will take a lot longer to darken than others.
  • If you want light-bake waffles, set the setting when you add the batter to the iron, then set it back to the highest setting to reheat the iron before the next waffle.
  • For a sticky batch, make the waffles smaller.  If you still can’t make it work, make pancakes out of them.  😛
  • Additives like banana, apple sauce, chocolate chips, etc will encourage the waffles to stick.  Though them chocolate chips are pretty yummy.

Thai Food vs Taiwanese Food

I overheard a conversation today at lunch between an Asian lady and her white guy friend. She was trying to explain to him that Thai food is not the same as Taiwanese food. And he just wasn’t getting it. “What’s the difference?” Welcome to Texas.

But it got me thinking about how I might quantify the differences between those two cuisines in a short yet concise manner so as not to add too much to the confusion of my fellow honky-tonk white folk.

Thailand is a tropical country, with access to rice and coconuts. So, the food is spicey and ricey, tempered with coconuts.

Taiwan is a disputed island of fiercely independent people constantly struggling to differentiate themselves from China.  So, the food is creatively twisted Chinese food.

Of course, a comprehensive analysis would undoubtedly reveal a plethora of subtleties and intricacies.  But, hey!  How about that pithy quip!

Planning the Loft

I am building a loft in the study.  We have 10 foot high ceilings, which gives me a good amount of headspace to work with.  I’m planning to put my desk in the loft, and have the guest bed under.  That will allow us to still maintain a good guest suite for the grandmas, a good office for when I’m working from home or working on my own projects, and still have space for our growing family.

I went for a queen sized bed on top, 60″x80″.  That also happens to be the perfect size for my desk and chair.  So, I have the option to use it as a loft bed too.

I didn’t find any DIY loft study plans.  Everybody tends to do the bed on top.  I studied several of those DIY loft bed plans and made some adjustments.  And here’s the plan I have.

Oh, first, a word about the design tool: I drew all these diagrams up using Google SketchUp.  I tried several (free) tools before working with SketchUp.  The rule of thumb was that I had to be able to get a handle on the program within an hour.  SketchUp was the only one that passed that test.  It was that or a mechanical pencil and paper.  (I am not affiliated with Google or SketchUp in any way.)

The plan is to build a frame and plunk it on 4 posts.  The posts will have cross-pieces between them for stablization.  I’ll lay boards across the frame to be the floor of the loft.  And I’ll build some free-standing storage stairs to get up there.

Loft Plans Loft Plans
The frame is 2×6’s around the outside with 2×4 crossbeams 16″ apart.

Loft Plans
For the flooring, I’ll use a combination of 1×12’s and 1×10’s to get the full 64 inch coverage.  I’ll probably put a mat or rug over that.

Loft Plans
The posts will be 4×4’s, with 2×4’s as the cross-pieces.  I’ll put the cross-pieces about half-way up.

Loft Plans Loft Plans
For the stairs, I’ll just use 2×4’s as the frame, and 1×12’s for the panels and the step.  I’ll put a 1×2 strip at the back of each step; that will give me something to attach a hinge to so each step will also open for a bit of understep storage.

Loft Plans Loft Plans

Random Thoughts About My Dad

Dad Holding Torino

Three Generations

My Dad, William Edward Cornell, Jr., passed away last month. I have a whole swarm of things in my head swirling around this, and I’m not really sure how to get them all out.

There are a thousand little details that are so vibrant in my brain but are really not important, and in most cases, not very intersting. For example, when my mom called I was squeezing some game time in, playing my Elementalist in GuildWars 2. While my wife and I were sitting on the floor sobbing, my toon got attacked and killed in the game, then somebody came by and resurrected her, and a few moments later she got killed again. This drama playing out in front of me seemed like it should be oh so important, but it was something I just couldn’t quite grasp. And now it is a bright memory in my mind.

He died in his garden. They believe it was cardiac arrest. Basically a major artery got blocked by plaque and platelettes and his heart stopped beating. He fell face down at the edge of the butter lettuce. They said that since he fell on his face, he was out before he even hit the ground.

When my mom found him a few minutes later, she rolled him onto the butter lettuce to do CPR on him. The paramedics got there quickly and also performed their own CPR on him as they rushed him off to the hospital. But this is about the lettuce. The lettuce when I got there the next day was a bit mushed a bruised where he’d lain. Within a few days it was perky and happy. That seemed somehow wrong; distorted; disrespectful. The lettuce should have remained squished, and maybe even taken it upon itself to be browned a bit more in the outline where my Dad laid.

My Dad’s garden was quite good this year. He had a customized automated irrigation system in place which he’s been evolving over several years. It was laid out well, and pretty much took care of itself. The rampant life of his garden quickly overwhelmed the minor inconvenience of his death within it.

We’re All So Young

While I was in Malaysia last year I had several interesting conversations with some of my wife’s siblings.  One in particular has stuck in my mind.

Ahbi and I were at a mamak stall near the house enjoying a late lunch of roti telur and teh tarik.  A mamak stall is an open air restaurant run by Malaysian Indians.  Often the seating is in a parking lot or field that’s just been cordoned off with chairs or planters.  Sometimes it’s in a courtyard or under a structural roof like a pole barn or a lanai.  This particular one was really nice; it was mostly indoors, with two of the walls open.  Roti telur is a buttery flatbread with a scrambled egg cooked into it served with dal, sambal or curry.  You can also get it served with condensed milk or sugar, which Ahbi and I both enjoy sometimes.  And teh tarik is a sweetened black milk tea.

We were talking about how much we had both changed since the last time we’d seen each other.  I’ve always found it interesting that I am such a different person now than I was before.  “Before” can be almost any number of years earlier, and “now” can be pretty much any given moment in time.  Yet no matter when the “now” is, I can always point at some situation in my life or some behavior and say, “I would not have done that back then,” or “I would have handled that completely differently then.”  In fact, my behavior is sometimes so very different that it boggles my brain that I have a sense of “me” with that other strange and foolish person I used to be.  And I know that at some point in the future, this person that I am now will be associated with some other, better, different person who also has a sense of “me” linking the two of us together.

When I get my brain wandering down this path I almost always start lamenting about how by time I figure out how to be a good person at some stage in my life, my life has moved on and now I’m in some other stage bumbling around and being an idiot again.  I am continuously improving, I think, and I am happy with my improvements as well as embarrassed by how rough, crude or stupid I used to be.  But now, as I’m zipping through my midlife, I’m also very aware that I will be my best right around the time my endgame is playing out.  And that makes me sad, not because I’ll die — we all die — but because if I could have been this future Good Person sooner, I could have lived my life so much differently and grown so much more.

Really, 100 years just isn’t very long to figure much out, to do very much, to complete very much.

We’re so conditioned to see 80-100 year olds as being frail, tottery and often demented people who can’t look after themselves anymore.  Of course, we all know that’s just the body breaking down.  How would it be if we could apply all our experience and knowledge, all our growth, and our projects to another few hundred years?  Perhaps if our lifespan was a bit longer, we would be wiser as a species and as a culture.  I would like to think that the self-improvements and gained life experiences of a 300 year old would lend itself to much wiser decision making than that of a 60 year old.

And if we, as an entire species, were making wiser and neccessarily longer-term decisions, there is the potential that everything would be better.