Author Archives: Craig

About Craig


Beef candy

“Beef candy” is the name this dish has received from my family, probably due to the sweet, grilled Teriyaki flavor of the thinly sliced flank steak in your mouth. Always a family favorite, this dish is simple to prepare; so, I thought I’d share it with you.

What you’ll need to make this dish is the following:

  • One flank steak (typically feeds six hungry mouths)
  • Some of your favorite Teriyaki sauce (e.g. we like Mr. Yoshida’s Original)
  • A sharp knife (e.g. I prefer one with a serrated edge)
  • A clean cutting surface
  • A glass container (e.g. something you’d bake brownies in)
  • Some plastic cling wrap
  • Room in your refrigerator
  • A barbecue/grill (e.g. I use a gas grill for this dish)

First, remove your flank steak from its packaging and lay it out flat on your cutting surface. I prefer to trim my meat of (some) fat before I proceed. Do remember that fat does impart flavor and a there should be some internal marbling in a flank steak; so, don’t try to trim all the fat away. Here’s what I typical remove ratio-wise:

2015-08-14 12.16.22

Next, thinly cut your flank steak against its grain and on a bias. Slicing this way will result in pieces that are more tender and able to soak in more of your marinade. As I mentioned, I prefer to use a serrated knife on flank steak (e.g. it tends to work better against the grain of this more fibrous piece of beef).

2015-08-14 12.19.21

Once you’re done rendering your flank steak into thin strips, you will need to marinade that result for a few hours. (I tend to aim for five hours in our fridge before grilling.) In your empty glass baking dish, pour your marinade until it covers the bottom of the dish (between an eighth and a quarter of an inch deep). Place your flank steak strips into the glass dish.

2015-08-14 12.23.28

Using your hands (!), knead the strips in the marinade until all are thoroughly covered in the sauce and there are no large pools of unoccupied sauce in the glass dish. Then press down on the strips so that they form an even layer of marinaded meat in the dish. Cover with plastic cling wrap and let the covered dish rest in your fridge. Again, I recommend no less than three hours of resting before you proceed with grilling.

2015-08-14 12.26.05

Now that it’s grilling time, uncover your prepared dish and individually place the properly marinaded strips onto a hot grill. We’re going for more of a quick sear than a “low and slow” exercise. I’ve found that having some space between each piece of meat helps the grilling process; so, if you’re, say, doubling this recipe or have a smaller grill, you may need to grill in waves and not all at once. (If you need to grill in waves, simply cover the initial waves of grilled meat in metal foil to retain heat and juiciness.)

2015-08-14 17.26.23

Usually by the time I’ve finished laying out the strips, I can start turning the initial strips over. My grill starts at 300 degrees (F) and may have cooled to closer to 200 since the cover is open. However, I recommend closing your grill to allow the temperature to rise for a minute or two before turning over your meat.

2015-08-14 17.31.00

Once you’re done turning all the strips to their other side, close your grill again and give the meat another minute or two before turning off the gas. Go ahead and open your grill to see if the strips look as you want them to. Remember that you want a sweet, charred, tender bit, not shoe leather. (I really hate over-cooked meat!).

2015-08-14 17.34.23

This dish is fairly versatile and goes with all kinds of sides (e.g. salads, corn on the cob, etc.). Feel free to try your own marinades, too (e.g. branch out from a traditional Teriyaki sauce).

Bon appétit!

Moving UP with a replacement band

Well, I lost my UP cap recently, but Jawbone has a fantastic, one-time replacement policy. I submitted my claim this past Saturday and received my replacement today. Nice job, Jawbone.

Since I’ve been using my UP band and app since May, I didn’t want to lose any of my data or have a break in my data stream from one band to the next. When you visit the Jawbone forums, “How to sync a replacement UP band?” reveals how Jawbone has continued to improve the transition process.

My process was extremely straightforward as follows:

  1. Perform a final sync with the band to be returned in the UP app.
  2. Confirm upload of data from sync.
  3. Erase data from band to be returned.
  4. Connect replacement band to phone in UP app, having first ensured that the band is fully charged, to automatically sync.
    - The 1.4.2 version of the UP app on Android didn’t prompt me unusually at all. Normal sync just commenced as before. I didn’t have to sign-out/-in to the UP app either; I just stayed signed in.

It’s nice to know that outstanding customer service still exists. Thanks, Jawbone.

Quantified Self

Quantified Self logo

Given the domains that I serve professionally as well as my own desire to better understand aspects of my own health, I decided to start “quantifying myself.” For the uninitiated, the Quantified Self movement involves a group of folks who share an interest in self-knowledge through self-tracking.

This post captures my initial experience using UP by Jawbone–first on iOS and then on Android (same bracelet). There are several other devices to consider; however, I chose UP given Jawbone’s BodyMedia acquisition and its platform direction.

Getting Started

Setup is a breeze and once you’re fully configured the UP mobile app cheerily greets your arrival.

You've joined UP!

Like most software types I know, I just “went for it” and didn’t first study the manual. Besides the little paper-based booklet in the box is vastly superseded by the extended user guide available online as a PDF here (English link).

Fortunately the UI is simple and inviting, and it’s worth exploring given its bias toward more gradual disclosure in context (i.e. drill-in for details, etc.).

Main panel navigation UI in iOS Main activities UI in iOS

Goals UI in iOS

If you’re missing out on something useful, the app may provide a timely nudge in the right direction. For example, since I didn’t bother with the manual, I wasn’t aware of the Lifeline view.

Insight toward Lifeline view

Becoming aware of Lifeline also encouraged my curiosity toward the Trends view.

Lifeline view in iOS Trends view in iOS

If you want to know more detail about your movement of sleep that day, just tap the appropriate colored arrow bar (purple for sleep and orange for movement).

Day's movement summary UI on Android Day's sleep summary UI on Android

The consistent use of color in the mobile app helps develop user intuition.

Slight Mobile App Differences–Same Cloud Service

At the time I purchased my UP bracelet, I didn’t have a viable Android device according to Jawbone’s device compatibility page. So, I initially used my iPhone 3GS–really just an iPod Touch, since it’s no longer used as a cell phone. Thankfully I just updated my Android smartphone to a Samsung Galaxy S4; so, I have the UP mobile app on both devices. More importantly I confirmed firsthand that the mobile app talks to a cloud service after syncing with my UP bracelet.

Notice how the Android UX differs subtlety from the iOS UX…

Main UP UI on Android

Main next-level UP UI on Android

Personally, I think that the Android UX could benefit from improved visual association where next-level pop-up panes are concerned (ala Twitter).

Main panel navigation in Twitter mobile app

In general, the Android UI is a bit more spartan than the iOS UI. The iOS UI seems a bit more playful

Sync on the UP app for iOS

For example, compared to the iOS sync experience (above), the Android sync experience narrowly focused on sync and doesn’t report summary information as a result of sync completion.

Sync (uploading) on the UP app for iOS

The Android sync experience also doesn’t feature the rotating sun and clouds animation.

However, both Android and iOS apps do feature sunburst graphics as a way to reinforce achievement.

Sunburst (animated) to reinforce achievement Sunburst to reinforce achievement

User Experience Bugs (or Features?)

There are a few UX quirks with UP that I’ve experienced in my almost-a-month worth of daily use.

First, I encountered some behavior management in the app that didn’t progress as I expected.

Example of behavior management that didn't progress as expected

While I appreciated the insight “card” encouraging me to beat my current average, once I accomplished that objective, UP didn’t refresh itself to recognize my accomplishment. Perhaps it thought that I wasn’t done being active…after 9pm. Regardless, I expected to at least have the app inform me that I actually took it up on its challenge of me. Since it did not, I may be less likely to drill into future insights, and that is unfortunate and avoidable.

The next sub-optimal experience to share involves my first attempt at what UP calls a Power Nap (see this specific alert above).

Evidence of a blown Power Nap

According to the app, it did try to wake me by vibrating the bracelet; however, I must have been tired since I didn’t wake and continued in deep sleep well beyond the time frame I entered in the app. Fortunately, I wasn’t late for anything critical, but, again, the fact that it didn’t effectively wake me as I directed UP may cause me to use that feature less in the future.

The last frustration to share was when I discovered how the activity editor deals with trimming activity duration. It appears to simply compress the data from the prior timeframe into the new timeframe, and this really makes no sense–given my use case.

Basically I realized about 10 minutes after walking our dog that I forgot to press the bracelet to mark the end of my timed activity. (I appreciate that the UP bracelet can automatically determine your transition from sleep to activity, without requiring you to manually transition the bracelet from sleep mode to activity mode.)

Time shifting inflexibilty

UP does allow you to edit your activity; so, I went into my walking data to trim off the time, bringing the end-of-activity marker in toward the last noticeable movement bar (representing a decent number of steps per minute). Upon shortening the duration, I expected to roughly the same number of steps and a marker as described (at 10:58am versus 11:06am); however, the new graph was shown with the same “lack of movement” gap before the new end-of-activity marker (at 10:58am). Distance and Steps were the same; Pace and Calories dropped.

Since UP keeps track of daily data as well as per activity data during each day, I expected UP to simply take whatever steps may have occurred in the truncated portion of the activity to apply them to the day (outside specific activities). I expected UP to reset the end-of-activity marker as I just described; however, for some reason (a bug?) it doesn’t…

More To Explore

I still have yet to leverage every feature in UP as it currently exists. For example, I have yet to use the diet features of UP–they seem to be too manual for me to give it my time.

Logging diet in UP

I need to recruit other UP’ers to my Team. Flying solo currently…

Insight into Team feature

I also need to visit the Apps experience in UP to give things like its integration with IFTTT a try. If I recall, I think that there may be a nice integration with RunKeeper, which I also have in my app arsenal. Just need to turn the integration on and lace up my running shoes…

If you, my reader, use UP or a similar device, I’d love to hear of your experience and how you’re getting the most from self-tracking. Thanks!

Update 6/17/2013: Further reading:

I learned to program…

I forget who exactly did, but someone not too long ago mentioned Ben Chun’s ilearnedtoprogram project, and I submitted my programming start. Apparently Ben has moved on to other things; so, I doubt that what I submitted with ever be shown at

Therefore, here is what caused me to learn how to program…

I learned to program…

using a Commodore 64 to replace my 3×5 card based stick figure animations after my Dad told me about sprites–that I could manipulate no less than 8 of them at a time!

New custom-built Wenge desk

Before I started my current position at Oracle, I took a short break from work and entered into one of my Dad’s hobbies: woodworking. Since he retired, he has assembled quite a workshop that has already produced many fine results enjoyed by family and friends. Instead of purchasing a new desk from a store, we decided to design and build my new desk ourselves. After looking over my Dad’s woodworking books on hardwood, I decided that the desk would be built out of the African hardwood Wenge.

The following pictures capture the process from sourcing the wood to realizing the finished desk. They are in chronological order.

MacBeath Hardwood
The Wenge hardwood for this project was sourced from MacBeath Hardwood‘s Berkeley location.
Wenge boards
The finished desk below began its life as a humble set of boards.
Prepare untapered leg
Some of the boards became legs.
Determine desktop grain
Other boards were selected for their grain pattern to form the desktop.
Learned a new power tool
I got to learn how to use a new power tool (i.e. a plate joiner) and apply biscuit joins.
Prepare center of desktop
At this point, my regular involvement in the project lessened quite a bit as I started my new job, but my Dad kept making steady progress.
Leg tapering jig
My Dad built a custom jig for the legs, which would become tapered along both sets of opposing sides.
Tapered legs in two dimensions
Model leg assembly
Each step involving the Wenge legs was preceded by a prototype in lesser wood.
Model leg assembly detail
Loose side assemblies
Loose bottom assembly
Before finally glueing pieces of the desk together, a dry assembly was made to confirm fit.
Securing side assembly to desktop
By now you can appreciate why my Dad insights that a woodworker can never have too many clamps (or too many gift cards to Rockler).
Unfinished grain pattern
The wood for the legs was selected to achieve a particular grain pattern, too.
Capture of 3D tampering
This shows the overall taper of the legs more clearly.
Sketching ideas for drawers and center shelf
At this point, it was clear that I needed to treat my Dad to a ØL Beercafe & Bottle Shop visit in order to spark our creativity over a Ægir Natt Imperial Porter and an Upright Engelberg Pils.
Preparing desktop underside for shelf and drawers
Unfinished side drawers
Unfinished center shelf
At this point, my Dad worked on the desk’s undercarriage.
Sanded, unfinished desktop
Here is the desktop grain pattern detail after sanding and before finishing.
Desk before delivery for finishing
Desk before delivery for finishing
Here is how the desk appeared before it was delivered to be finished by Englund Studio in Oakland.
Finished desk
Here is how the desk appeared after it was finished.
Finished shelf and drawers
So as not to draw attention away from the Wenge, the center pull-out shelf and side drawers were painted in matte black.
Finished desk
Finished desk
Here you can see the detail that my Dad put into the front of the pull-out shelf, which is held magnetically at an angle matching that set by the legs of the desk.
Finished desktop
Here is the desktop grain pattern after finishing. It’s what I get to enjoy now every time I sit down to work at home.

Now I am the very proud owner of a custom-built Wenge desk, all the more special since my Dad was essentially its maker. He was kind enough to put his wood mark on the right leg facing me as I work; so, I can glance down at any time to be reminded of this project and all I learned working at his side.

Thanks, Dad!