Posts for year 2013

A collection of laziness

In preparation for my trip to Wellington next week, to present at the Multicore World 2013 conference, I’ve been building up a new vbox instance on my laptop.

To my great annoyance, I have to run Microsoft Windows 7 (x64) on my laptop, for three reasons: $EMPLOYER uses Cisco IP Communicator as a VoIP solution (no Solaris version), when I travel OS I call J and the kids every day using skype video calling, and the Intel HD graphics support in Xorg on Solaris is somewhat flaky.

So I run Solaris inside vbox, in seamless mode, and do all my coding and sysadminning tasks using Proper Editors(tm) and other interfaces.

Here’s the first bit of laziness: installations.

Two weeks ago I took delivery of a new workstation (a Lenovo M82, which promptly received a memory, disk and graphics upgrade) to replace the aging, hot and noisy Ultra40 M2 I’ve had since 2007. I downloaded the latest (at that point) USB live image from the internal site and happily booted + installed what I needed to… before remembering that the installer blats over any existing disk partitioning you’ve got. That was rather annoying, since I like to use raw slices for swap and dump devices (an old habit) rather than zvols. In order to keep my existing configurations, I cheated. Just a little (ok, rather a lot).

Technically, I should have setup an AI server and gone through my list of installed packages and made sure that I had them listed, blah blah blah. However, what I chose to do was zfs snap my current BE, boot the new box using the liveusb image (with livessh mode enabled), create my desired rpool config, then zfs send|zfs recv the snapshot… and mount the snapshot, make appropriate edits, install the bootloader and then reboot.


It took about 25 minutes to transfer the snapshot from the Ultra 40 M2 to the Lenovo M82 (I’ve got a 16 port cheap-o gigE switch to connect the home systems), and about another 5 to go through the specific changes I needed in /etc (apart from those for svc:/system/identity:node and svc:/system/identity:domain. Installing the bootloader (grub2) was easy, but I had a weird problem getting the new system’s boot menu figured out. I ended up needing to remove /etc/zfs/zpool.cache and then recreating it (by running zpool status; zpool list would have done just as well). The SMF changes were done while I had the liveusb stick booted. To do this, after importing the new rpool I uttered

# svccfg
svc:>  repository /mnt/etc/svc/repository.db

and then selected the services I needed and edited them.

Prior to getting this Lenovo, I’d been using a non-global zone in the Ultra 40 M2 to serve out my webserver and handle mail. Part of this reconfiguration involved getting a miniSAS-connected jbod (from Other World Computing, shipped via Borderlinx) and physically moving my media and scratch pool disks into it. Then I attached the jbod to my Ultra 20 M2, and I just had to bring that up to date. So I snap’d the zone BE on the Ultra 40 M2, and send|recv’d it to the rpool on the Ultra 20 M2 – same liveusb+livessh sneakiness, same svccfg activities … and all done in under 30 minutes.

The longest part of the physical downtime was swapping the screws on the disk caddies when I removed them from the Ultra 40 M2 and inserted them into the jbod.

The second bit of laziness is not really laziness. I had a filesystem on the old box which I wanted to transfer to the new, and tried using rsync to move it. I’m a big fan of rsync, it does its job pretty well… mostly. However, this time it just wasn’t performing at all. I had about 8Gb to transfer, and after 30 minutes not only had I only seen 1.5Gb go across the wire, but trying to do any interactive work on the console of the other box was impossible. And I do mean, impossible – I got no response to keystrokes unless I paused the rsync. Then, having kicked myself because I really did just want the filesystem which happened to be on its own dataset, I snap’d it and kicked off a zfs send | zfs recv. All data then completely transferred in about 12 minutes. And with interactive performance going very nicely as well.

Now for the final bit of laziness:

Cut to yesterday, when I remembered that I really should get a new Vbox instance cons’d up on the laptop in preparation for my trips (I’ve got WLG next week, and SCA in mid-March). I still had the build 13 liveusb stick image, and I just could not be bothered downloading the equivalent ISO image so that I could boot the vbox with it. Running strings on an older Solaris 11 update 1 ISO showed the mkisofs command line that Release Engineering used to create it. So, I figured I would copy their example.

Firstly, I needed to mount the USB image in the filesystem:

# lofiadm -a /path/to/liveusb.img
# fstyp /dev/lofi/1
# mount -F ufs -o rw /dev/lofi/1 /mnt

Great… UFS. Ugh. Now to create a bootable ISO from it:

# mkisofs -v -R -J -o /tmp/bootable.iso -c .catalog -b boot/bios.img -no-emul-boot -boot-load-size 4 \
    -boot-info-table -eltorito-platform efi -eltorito-alt-boot -b boot/uefi.img -no-emul-boot \
    -N -l -R -U -allow-multidot -no-iso-translate -cache-inodes -d -D  /mnt

This commandline gave me exactly what I needed, so I moved the resulting ISO image across to the fileserver, fired up VirtualBox on the laptop and attached the image to my new vbox instance, and started installing.

Easy (and rather quick, too).

A health turning point

I’ve been introspecting a fair bit, about health and fitness and wellbeing in general, and figured out where the turning point for me (and for J) was, where we decided that we would take control of our wellbeing rather than just floating along.

Unsurprisingly, it occurred around the time when J was diagnosed with the meningioma in November 2011.

For me, 2011 was a very stressful year. As gatekeeper for the Solaris 11 ON consolidation (the core kernel and basic userland), I was at the very pointy end of making sure that we got the bits together for the release of Solaris 11. I’d had a horrendous trip to Beijing in July (laptop disk broke the day before a build close, I tore my medial meniscus while plugging in cables to a laptop, left my luggage in a taxi and missed the connecting flight in Hong Kong due to a recalcitrant passenger in Beijing delaying the PEK-HKG flight by 3 hours). I had surgery on my knee in September, October saw the final ON delivery – I’d been working more and more hours every single day to the point where I was usually working for 12 hours Monday to Saturday, and only 3-4 hours on Sundays. Utterly, freakin, crazy. A was born in March (which was the bright part of our year), and then in October after J’s dizziness and nausea hadn’t gone away, she went through a battery of tests and an MRI.

The post-Release holiday that we had planned was not as carefree as we had hoped. I vividly recall walking along the beach with J and the kids, talking with her about what the ENT might say about the spot we’d seen on the scan, whether it was malignant or not, whether she would need surgery….

We stayed at Sails on Horseshoe, one of the most peaceful and relaxing places we know. Horseshoe Bay is a stone’s throw (note, in metric terms that’s about 15 metres) from the front gate. It’s quiet. There’s a pub and a few cafes and restaurants at the other end of the street, and we love it. There is also a healthy food cafe where we had lunch several times. I don’t recall the name of the place, or what else was on the menu, but I do recall that they do freshly squeezed juice – and C loved it. I loved it. J loved it. We figured it was just a bit of a treat to have because we were on holidays in the tropics, but the appeal of that juice really stuck with us.

A week or so after we got back home I went for what was then a stretch ride – the 40km effort to the Goodwill Bridge and back. I was pleased that my times were getting better (from just over 2 hours to a few minutes under), and was starting to think that I should really be doing more riding – for stress relief, for health and wellbeing, and generally just because I like doing it. I recall that it was a hot morning and as I came up the rise past the Jindalee golf course I thought “I could really go some freshly squeezed juice when I get home.”

That was the turning point.

While I didn’t have any fresh juice that particular day, we did go and buy a juicer a few days later, and except for juice to accompany the kids’ meals if we’re out, we haven’t bought juice since then. We’ll make fresh juice every week or two, generally with some apples that have been on our local fresh fruit shop’s “reduced for quick sale” stack – they’re still good enough to eat, but you can get fresher for eating. We do usually apple and pear, with a knob of ginger thrown in for some zing. Lately we’ve also been adding watermelon, which makes it taste lighter. Sometimes I’ll do oranges or pineapple. Oranges are a pain, though, because you have to spend a lot of time peeling them before you can juice them and frankly, I want my juice now!


The kids love the fresh juice, they appreciate that it’s a treat, and if I miss out the ginger C will let me know pretty quickly.

We took charge of our wellbeing, deciding to be active and mindful about what we consume. It’s an ongoing process and commitment which we are going to keep doing. We’ve reinforced this commitment with the meal plan system we put in place last year. When we look back over the last 2 years, which have been very stressful and full of worry, it’s reassuring to realise that not only do we feel better, but we are healthier than we ever have been because of the changes we have made to how we think about food (and exercise).

Asserting control over my reality during a difficult time

When J was in hospital for 3 weeks last year, I was stressed. Very, very stressed. I put the kids into daycare again (Thursday and Friday), and her mum came to stay with us and take care of them the rest of the time. I need to point out that having J’s mum stay with us was not what made me stressed. What I was stressed about was worrying how long J would be in hospital, whether she’d get worse or better, and how to make sure the kids knew enough about what was going on.

One of the coping strategies I implemented in short order was to write weekly meal plans. We had a number of A5 sized notebooks around the house, which worked out to be just about the right size for what we needed (especially given my terrible handwriting).

Here’s an example. This week’s list is fairly standard, though there’s only one veg-only meal and we’re having a lot of salad right now because it’s ETOODAMNEDHOT.:

The meal plan


chicken stirfry noodles


bbq miniburgers/steaks with salad


chicken wraps with salad


J’s butter chicken


pesto pasta and vegies


chicken and pumpkin risotto


bbq snags and salad

The miniburgers are those you can get from our local Coles in a pack of 8; they’re just the right size for the kids. The chicken wraps are our excuse to get something vaguely Mexican flavoured into our diet, rather than merely lots of Italian and Chinese inspired dishes. The kids don’t need to have the guacamole or any salsa, so J and I can have just a bit more of it to ourselves.

Nothing particularly unhealthy in there, nothing particularly flash. What the plan does give me, though, is time. I know roughly how long each meal takes to prepare, so if I work backwards from the ideal on-table window being 5:30-6pm (we like to get the kids bathed+dressed and A in to bed by about 7pm), then I know when I really have to stop for the day. I also try to work with the assumptions that 100g of meat per adult, 50g of carbohydrate (pasta or rice or spuds) per adult is about sufficient, assuming that we have pretty much free reign with veggies and/or salad to bulk things up as required.

This meal plan idea worked sufficiently well for us that we have kept it going and don’t expect to stop. It helps us keep our portion sizes in order, helps with the grocery bill since we can then plan just what we need each week and don’t wind up with a pantry or fridge that’s full of food which could go to waste, and helps relieve time pressure too. Wins all around.

Sauteed beef with extra potassium

Today was not a good day for J. She’s been dropping down her dose of the Dexamethasone which she’s been on since April last year to keep the oedema around her tumour under control. Over the last week or two she’s hit the crossover point, where what the Dex is providing is no longer masking what the body’s natural systems provide. It’s rather weird, definitely obnoxious, and very frustrating because it means that she has to slow down the weaning-off process. If she didn’t, her risk of things going really bad would skyrocket.

Today was not a good day because she woke up very tired and nauseous (moreso than normal); the motilium didn’t seem to take the edge off. Then she pulled a muscle in her thigh, and later pulled a calf muscle. All without actually doing anything. After a bout of Doctor Googling later, we reckoned that she might have a touch of adrenal insufficiency, and a potassium deficiency. The heat of the last week or two, coupled with the stress of Christmas and C’s birthday party (not forgetting the underlying stress from the fact that our house still isn’t fixed yet after the storm on 18 November), makes that joint hypothesis seem quite possible.

When she was pregnant with A, she suffered from Restless Leg Syndrome, for which our OB prescribed a 1/4 teaspoon of Epsom Salts dissolved in a glass of water, every evening before bed. That chemical intake redressed the imbalance and solved RLS for her then, and we hope it would do so again today. It appeared that this might not be the case, unfortunately.

Trying to do my bit to help, I checked which foods have high potassium levels and found We have several of those in our pantry and fridge right now, so the beef noodle stirfry plan was ditched in favour of this recipe:

  • 300g beef sliced very thinly (across the grain)

  • 100g baby spinach, finely shredded

  • a handful of snow peas, topped-n-tailed

  • 80-100g sun dried tomatoes

  • 1 head of broccoli

  • 1 cup of mushrooms, chopped

  • a few cloves of garlic, shredded or finely chopped

  • 1/4 long red chilli, finely chopped

  • 1 leek, finely shredded

  • 1 tablespoon canola oil

  • 1/8 cup (around 30ml or 1 fluid ounce-ish) soy sauce

  • 1 tablespoon of honey (to taste)

  • freshly cracked pepper, to taste

  • 150-200g of fettucine

  • approx 50g of shredded parmesan cheese

[The above quantity of ingredients served two adults and two toddlers, it would probably have been ok for three adults if more vegies were served with the dish. Your mileage will vary.]


  • Heat a frypan (heavy, steel-based) to a high heat

  • Add the oil, ensuring you cover the entire frypan

  • Add the beef, quickly stir-frying it to a light brown colour

  • Turn the heat down to the lowest possible setting, then

  • Add the leek, mushrooms, garlic and chilli then put the lid on and simmer for 5-6 minutes

  • Meanwhile, start cooking your fettucine (or other pasta, if preferred)

  • Add the soy sauce, broccoli and sun-dried tomatoes to the frypan, stir through and then replace the lid for 2-3 minutes

  • Do a taste check and then add the honey, mixing it in to the liquid in the pan first, then stirring through

When you are just about ready (ie, less than 1 minute to go) to serve, stir the baby spinach and snow peas through. Serve on to a bed of fettucine, then sprinkle the parmesan cheese on top.

If you like, add other vegetables. I cooked carrots, and would have steamed some zucchini if I’d had some in the fridge. If you’re so inclined, a bubbly white wine (I’m a big fan of Prosecco) would go nicely with this dish.

You might think “oooh yuck, that’s going to be really salty” because the soy hasn’t had enough other liquid to dilute into, and without the honey you would probably be right. However! The point of this dish is first and foremost to provide a potassium hit for a person in need of redressing a chemical imbalance. J remarked that she didn’t find it too salty at all. I thought it was only a little bit saltier than I would normally have served up – I try to cook with as little added salt as possible.

I don’t have an estimate of the calorie count, or the per-serve cost; I will try to provide those by the end of this week.

J’s having an early night (she was nearly asleep by 8:30!), I just hope that I’ve been able to help. We’ll see.

Update: I forgot to mention that J loved the dish.

Further Update: Here’s a screenshot of the approximate nutritional values for the recipe, via I am not sufficiently bothered (yet) to sign up with the site so I can save or share my recipes, [alt][prtscr] will have to do

;)The Recipe

A riding goal for 2013

Last year I really got into tracking my rides with Strava. Having weighed in on 1 January at 89kg, I was rather despondent about how flabby I had allowed myself to get, and resolved that I would lose 10kg by the start of 2013. I did, indeed, lose 10kg during 2012, weighing in at 78.85kg on 1 January. I’ve still got flab (another 5kg would be good) to get rid of, however, so it’s full speed ahead on the riding.

Comparing my the results I mention in my first riding or health-related post of 2012 with what Strava figured out, I did a little better than Garmin Connect reported, perhaps that comes down to tracking moving time differently. There’s certainly a difference in the calorie count. When I started using Strava I was surprised at the differences, but after checking with a few colleagues who also use power meters and where Garmin’s figures were way out but Strava’s were within 3-4 percent of the actual meter, I’ve ditched Garmin Connect entirely.

Here’s a snapshot of what I achieved last year:

Strava summary for 2012

I’m determined to do better than that in 2013. Not only does Coottha not intimidate me any more, I’ve really enjoyed getting out there and stretching my body. I decided that the regular interval training I’d been doing around Jindalee was not quite good enough. Six laps with not much climbing just didn’t cut it; three laps of Mt Ommaney Drive (with a loop around Arrabri Avenue) are much better – I get much greater climbing and a bit more distance in only another 15 minutes, so it’s any ideal way to start my day several days a week.

This last week’s weather has been a bit of a shock so I didn’t get out as much as I wanted to. For all of yesterday’s 58km effort it felt like I was riding in thick goop. Still, I’m on target for 100km/week as a baseline, and even allowing for some travel in February and March I should be able to not only do this year’s Coottha Challenge in a respectable time but also the Brissie To The Bay 100km ride in June.


A much-delayed post on the storm

I started writing this on 24 November last year, but didn’t get it finished because I had higher priority things to deal with.

The post:

Last Sunday I was on my way back home from a productive week away in Santa Clara. My flight (UA-863, SFO->SYD) suffered from the cattle class toilets being unusable for almost the entire flight, so we all had to use the loos in business class. The two (downstairs) loos. All 300+ passengers. Ugh. We also had significant turbulence (by which I mean that we had the seatbelt light on for several hours, and I was shaken around in my seat) – just like the trip over to SFO. Not pleasant.

I managed to get through the fairly quiet Sydney airport Immigration queue, my baggage was amongst the first out (despite me being seated in row 60 at the back of the plane), and I bolted around to the transfer desk to make sure I got my flight up to Brisbane.

The trip up to Brisbane was uneventful until we were about to start our descent, at which point the captain advised that Brisbane airport was experiencing a major storm and we would have to wait. So we did – another 40 minutes which basically doubled the length of the flight. When we were cleared to land the pilot put us on the tarmac very smoothly, but we then had to stop quite a distance from the terminal because the tarmac had been shut down due to the storm, and we had to wait for it to be started up again. [Greg pointed me to which, while not an actual strike on an aeroplane, does indicate why the tarmac was shut down!] Amazingly, my baggage was again almost the first to come off, so I hopped in the first available cab and headed home.

It was really, really good to be home.

Later in the afternoon we wandered down to our local Coles to get the makings for pizza and have a general leg stretch. We also noticed that there was a storm warning from the BoM, so we kept watching the weather radar to see how far off it might be.

Around 4pm I got the pizza dough made, and C was all excited because she’s now able to help me with some of the processes. About 5pm we started preparing the toppings, and then about 5:20pm J called out that I should come upstairs. She was in the back bedroom with the kids watching what turned out to be rather scary.

After grabbing that video (and getting quite worried about the safety of the back window while doing so) I headed downstairs, noticed the size of the splashes from the pool as the hail came in and grabbed some video of that as well. Then I noticed that both skylights (1m x 0.5m) had shattered, the table was covered in water and shards, and carefully dashed (does that happen?) to grab J’s laptop and phone from the kitchen bench.

J and the kids were in the loungeroom. A was freaking out, J was barely holding it together, C was upset and scared.

Then the storm was done, gone, moved on to the next impact point. All done in 20 minutes.

Hopped on the phone to call the SES (5:49pm, I made a note), grabbed some towels to put on the floor and then put my shoes on. Our neighbours from across the road popped in to help (M sat down with the kids and read them stories, C helped J and I mop), and I grabbed some more video of the damage and took photos as well.

[Time passes]

We tried to get through to our insurer that evening, but we gave up after close to two hours on hold. Also because our cordless phone batteries died.

The SES finally got to us at about 10pm; there were a lot of calls for them to deal with and it was only after they arrived that I discovered that I should have alerted the dispatcher to the fact that we have young children. Apparently young’uns and oldies get bumped up the queue a little


On Monday the 19th we managed to get through to the insurer, filed a claim and got the process started. We went around the house and took more photos, did more cleaning up and tried to put things back in order as best we could. Unfortunately our adsl2 modem had fried (as had the psu in my workstation) so we were without fast internet and our recorded TV shows that the kids love to watch. We also discovered that the TV antenna was knackered – ABC2 (the most-watched channel under this roof) kept coming and going.

It took another few days before O’Brien Glass could get to us. Unfortunately, because the broken window is toughened (for a bathroom), over a bathtub and on the second floor, we had to get a special piece made to measure and scaffolding will be required before it can be replaced. In the meantime we’ve got a clear sort of large-area bandaid over the cracks. The insurer’s “make-safe” team managed to get out to us on the Thursday (after a building assessor and a roofing specialist had visited), so we could then use the kitchen and diningroom area again. Our stress levels decreased a little since we didn’t feel like we had a mythological weapon hanging over us.

The pool: it’s still green.

end of the post

We’ve been a little warm today

For Christmas 2012, J’s sister and brother-in-law gave us a thermoclock with a remote sensor. It’s pretty cool being able to sit inside the house and see how hot (or cold) it is inside as well as outside.

Today just after we’d had lunch I noticed that it was a bit warm:

hot, damned hot!

then a few minutes later we hit what I believe to be our residence’s record:


Surprisingly, the car thermometer didn’t get above 38.5C on my trip to the bike shop this arvo (needed some new gloves), unlike 4 December:


Still, while it’s darned hot here, at least we don’t have an imminent bushfire threat like J’s sister does, the NSW Rural Fire Service page Total Fire Ban and Current Fire Danger Map makes very sobering reading.