Alan Hargreaves' Weblog

The ramblings of an Australian STSC* Staff Engineer

* Systems Technical Support Centre - The group I work for

Tags

(update 1) acoustic bugs cec2007 china contention cringley dogs dtrace earthquake encumbered-binaries google guitar halloween huron kids linux locking music mysql niagra openjava opensolaris oracle percussion redhat secondlife security solaris sun sxcr t2 t2000 ufs youtube
pageicon Saturday Jun 07, 2008

Second Life Special Event - Live Music

A Special night at The Pocket! From 8 to 10 PM US/Pacific (1 to 3 pm Saturday Australia/NSW) we will have Luigi DiPrima and Ande Foggerty Rocking us then at 10 PM (3pm local) it's the Sydney Jam Session Including OhMy Kidd, Sarain Sands, Lacey and Lugg Lohner and Tpenta Vanalten and guests Live From Sydney, Austrailia!

If you can't get to The Pocket in Second life, you can listen to the stream at http://doc.mediaserv1.com:8046.

We'll be sending out teleport links to a number of live music groups inside Second Life, and we should have the event listed in the events search.

See you there.

pageicon Saturday May 24, 2008

And the Earthquake news only gets worse

I went down to breakfast this morning on my last day in Beijing before flying home this afternoon. When I sat down to read the paper, the following table leapt right off the page.

55,740 killed24,960 missing
292,481 injured11.36m evacuated
$3.55b received in donations

The really distressing thing on top of the number of people killed is that nearly two weeks after the quake, the chances of those still missing cannot be good.

On page 4 of The China Daily brought me to tears.

I won't reproduce the stories here, simply the titles and links.

Maybe it was because I have school age children. Maybe it's because my father is a teacher. These stories are of incredible bravery that ended up saving children but the teachers losing their life.

These teachers were heroes in the highest hounour of the word and I'm glad these stories are being told.

And some poems sent in also published on that page are equally touching.

pageicon Friday May 23, 2008

Yay for Sun Ray

As anyone who reads what I write here probably knows, I've spent the last 2 weeks in China, in two different offices in Beijing and one on Shanghai.

Some months back I installed Sun Ray server on my workstation in Sydney (as I prefer to run on relatively current nevada builds, rather than the Solaris 10 builds that IT Ops provides) and moved over to using a Sun Ray appliance both on my desk and at home.

I've been very happy with the ease of use of being able to transfer my work session home.

I've been even more happy with being able to transfer it to the various offices in China!

I just put my card in, it throws me to the Sydney ITops server that I would normally connect to, and I just utswitch from there to my own server. It all just works. What's more I've found working from Beijing very little different speedwise to working from home. It's all quite usable.

Technorati Tags: , ,

pageicon Monday May 19, 2008

2:28pm today in Beijing

I have just had a unique experience.

At 2:28pm today outside the Beijing Office I am currently in, the city stopped. It was exactly one week since the earthquake.

The streets were filled with people simply standing respectfully.

For three minutes all that could be heard were car horns and sirens, and (I am told later on) an air raid siren also was sounded.

I had known from the paper this morning this was going to happen, but nothing prepared me for just how touching this was. I had shivers running up and down my spine and in remembrance I could feel myself tearing up.

For that three minutes China stopped to pay respect to those lost. You could feel the solemnity.

pageicon Tuesday May 13, 2008

China Earthquake: Oh my god!

I'm supposed to be putting the finishin touches on another customer presentation this morning (in the light of one I gave yesterday). I simply had to stop doing that and get my thoughts down as I was finding it hard to focus.

Yesterday I made a comment on a colleague's blog about the earthquake, as I am also travelling in the region. I noted that I was giving a presentation to a customer at the time and actually didn't notice. I had it pointed out to me that we had had a tremor or a 'quake after I finished.

I got back to one of the offices in Beijing that afternoon and had an Australian colleague in a chat session point me at an article in an Australian newspaper about the incident mentioning a loss of life of about a hundred. This in itself was incredibly sobering, as any such loss of life is tragic.

This morning I woke up and flipped on BBC World and was utterly gobsmacked to hear 10,000 dead!

I find myself at a loss to describe my feelings. On one hand I am incredibly grateful for my own safety, but 10,000 people?

Oh my god!

This is beyond tragedy.

The loss of human life on this scale is beyond comprehension.

The China Daily lists the numbers lost in various areas. One in particluar leaps out at me. In comparison to some of the other areas the numbers are small but how can the following not tug on your heart?

Dujiangyan: Over 50 dead in a middle school. Many more are buried beneath rubble.

I almost dread going into the office today as there are certain to be people who either know that they have lost family and friends, or perhaps worse, don't know whether or not they have. My heart goes out to all of these wonderful people who have made me feel so welcome here.

I wish I knew what more to say.

Update#1

I just called my manager in Sydney to let him know that I was fine. He told me that the Australian news services are reporting on 900 kids in a collapsed school.

I am fearful that the news is only going to get worse!

pageicon Thursday May 01, 2008

Jonathan on closed MySQL extensions

I have just been reading some questions and answers with Jonathan from Tim O'Reilly. One that jumped out at me was a question he passed on from Jesse Stay. I'm going to quote both the question and answer below in full. The added emphasis is mine.

JesseStay : does he anticipate a fallout of original MySQL users or fork in the mysql code and how will they handle that if it does happen?
2008-04-25 12:26:30

JonathanSchwartz: I'm not anticipating a fork - Marten Mickos (SVP, Database Group at Sun, former CEO, MySQL) made some comments saying he was considering making available certain MySQL add-ons to MySQL Enterprise subscribers only - and as I said on stage, leaders at Sun have the autonomy to do what they think is right to maximize their business value - so long as they remember their responsibility to the corporation and all of its communities (from shareholders to developers). Not just their silo.

I think Marten got some fairly direct and immediate feedback saying the idea was a bad one - and we have no plans whatever of "hiding the ball," of keeping any technology from the community. Everything Sun delivers will be freely available, via a free and open license (either GPL, LGPL or Mozilla/CDDL), to the community.

Everything.

No exception.

I think puts things pretty much into black and white. I wonder if we will see some egg on face retractions from those who tried to pin keeping some bits proprietary on the Sun purchase, as it looks like the opposite is actually the case. That is, the Sun purchase is what is going to ensure that these extensions are open. You know, I'm not holding my breath for any "Oops I got it wrong" type comments.

Technorati Tags: ,

pageicon Saturday Feb 23, 2008

Acer wins back a customer

I guess many of you saw my rant about the poor support I was getting from Acer over getting my Ferrari 4005 fixed.

I really should have written this up earlier, as it has been resolved now for a bit over a month.

After speaking with the Escalation folks again after still having no joy, I was offered a new machine with the following specs.

  • Travelmate 7720G
  • 17" screen
  • T5700 Core 2 duo running at 2.2GHz
  • 2gb Memory
  • 2x160gb disks
  • webcam, more interesting looking audio, 4 usb ports, ...

A week later I had the local repairer offering me a lower spec'd machine. After I explained what I had already been offered, they agreed and we also managed to have the 3 year warranty replaced, and the internal disks were now two 250gb disks!

I've been using it for about a month now and I quite like it. Nevada simply just installed and ran. I also selected the XP option as I really don't think vista is ready yet. I've actually been using it to perform live into second life (it does have relatively nice audio and in fact it also has a line level input on the front of the machine.

While I am pleased that they replaced the machine and I am very happy with it, the fact remains that I should not have had the poor support experience in the first place.

The two things that really stand out were

  1. the complete lack of correct expectation setting, especially in the light of me being obvious what my expectations were).
  2. making promises that they had no intention of keeping. That is, I did not receive a single one of the promised call backs.

Folks these are Support 101 basics and really need to be fixed.

I will, however, say a big thank you to Acer for the actions that they did end up taking to address the issue.

As an aside, a little investigation of my own showed that the issue I had with the Ferrari was apparently rather common in Ferraris of that model and age, which could explain the difficulty in sourcing a motherboard. The original problem was the video adaptor dieing in such a way as to not receive a hardware notification of an event, leaving the cpu spinning on a lock, ending up getting a BSOD.

pageicon Sunday Jan 13, 2008

We have a fence

Well here is the result of what I've been doing this weekend. It was only possible now that our neighbor has had the retaining wall erected. There is a sense of satisfaction around completing something like this that is well outside of your experience.

The nice thing now is that we can have the dogs out the back without having to chain them up.

pageicon Wednesday Jan 09, 2008

PSARC 2008/008 DTrace Provider for Bourne Shell

I finally got to submit the fast track for the shell provider. I've already had one comment (from Darren Reed) that I have incorporated as it made very good sense. He suggested that if we are tracking variable assignments, we should also track unset. At this point I realised that a better name for the probes would be variable-set and variable-unset. I have a working copy for SPARC with these changes now.

Below is the prefix text and the revised specification.

I am sponsoring the following fast track for myself. I am doing the
bourne shell first for two primary reasons.

1. It is the "simplest" of the shells and thus should provide the
   minimum set of probes to implement for future work in other shells,
2. Providing probes into /bin/sh gives us observability of
   approximately 60% of all of the scripts on ON.

Additionally, as it has been around for a very long time there are
quite a lot of user written scripts for it, many very badly written.

I would expect future fast tracks for other shells (eg ksh88, ksh93,
zsh, bash, ...) to reference this fast track for the minimum set of
probes.

Note the probes are currently listed as Uncommitted. As the probes
gain use I would hope to log a future fast track to increase this
stability.

A Minor release binding is initially requested. Again, once things
settle down and the interfaces stabilise it is expected that a future
case may request a patch binding.

The sh provider makes available probes that can be used to observe the
behaviour of bourne shell scripts.

Probes
------

The sh provider makes available the following probes as exports:

builtin-entry   Fires on entry to a shell builtin command.
builtin-return  Fires on return from a shell builtin command.
command-entry   Fires when the shell execs an external command.
command-return  Fires on return from an external command.
function-entry  Fires on entry into a shell function.
function-return Pires on return from a shell function.
line            Fires before commands on a particular line of code are
		executed.
subshell-entry  Fires when the shell forks a subshell.
subshell-return Fires on return from a forked subshell.
script-start    Fires before any commands in a script are executed.
script-done     Fires on script exit.
variable-set	Fires on assignment to a variable.
variable-unset	Fires when a variable is unset.

The use of non-empty module or function names in a sh* probe is
undefined at this time.

Arguments
---------

builtin-entry,
command-entry,
function-entry

	char *	args[0]	Script Name
	char *	args[1]	Builtin/Command/Function Name
	int	args[2]	Line Number
	int	args[3]	# Arguments
	char **	args[4]	Pointer to argument list

builtin-return,
command-return,
function-return

	char *	args[0]	Script Name
	char *	args[1]	Builtin/Command/Function Name
	int	args[2]	Return Value

subshell-entry

	char *	args[0]	Script Name
	pid_t	args[1]	Forked Process ID

subshell-return

	char *	args[0]	Script Name
	int	args[1]	Return Value

line

	char *	args[0]	Script Name
	int	args[1]	Line Number

script-start

	char *	args[0]	Script Name

script-done

	char *	args[0]	Script Name
	int	args[1]	Exit Value

variable-set

	char *	args[0]	Script Name
	char *	args[1]	Variable Name
	char *	args[2]	Value

variable-unset

	char *	args[0] Script Name
	char *	args[1]	Variable Name

Examples
--------

1. Catching a variable assignment

	Say we want to determine which line in the following script has
	an assignment to WatchedVar:

	#!/bin/sh

	# starting script
	WatchedVar=Value
	unset WatchedVar
	# ending script

	We could use the following script

	#!/usr/sbin/dtrace -s

	#pragma D option quiet

	sh$target:::line { self->line = arg1; }
	sh$target:::variable-set /copyinstr(arg1) == "WatchedVar"/ {
	        printf("%d: %s=%s\n", self->line, copyinstr(arg1),
		    copyinstr(arg2))
	}
	sh$target:::variable-unset /copyinstr(arg1) == "WatchedVar"/ {
	        printf("%d: unset %s\n", self->line, copyinstr(arg1)); }


	$ ./watch.d -c ./var.sh
	4: WatchedVar=Value
	5: unset WatchedVar

2. Watching the time spent in functions

	#!/usr/sbin/dtrace -s

	#pragma D option quiet

	sh$target:::function-entry { self->start = vtimestamp }
	sh$target:::function-return {
		@[copyinstr(arg1)] = quantize(vtimestamp - self->start)
	}

	Similar for the other entry/return probes, with the exception
	of subshell as the probe name is unavailable.

3. Wasted time using external functions instead of builtins

	This script is copied from the DTrace toolkit. It's function
	and how it works should be relatively self explanatory.

#!/usr/sbin/dtrace -Zs
/*
 * sh_wasted.d - measure Bourne shell elapsed times for "wasted" commands.
 *               Written for the sh DTrace provider.
 *
 * $Id: sh_wasted.d 25 2007-09-12 09:51:58Z brendan $
 *
 * USAGE: sh_wasted.d { -p PID | -c cmd }       # hit Ctrl-C to end
 *
 * This script measures "wasted" commands - those which are called externally
 * but are in fact builtins to the shell. Ever seen a script which calls
 * /usr/bin/echo needlessly? This script measures that cost.
 *
 * FIELDS:
 *              FILE            Filename of the shell or shellscript
 *              NAME            Name of call
 *              TIME            Total elapsed time for calls (us)
 *
 * IDEA: Mike Shapiro
 *
 * Filename and call names are printed if available.
 *
 * COPYRIGHT: Copyright (c) 2007 Brendan Gregg.
 *
 * CDDL HEADER START
 *
 *  The contents of this file are subject to the terms of the
 *  Common Development and Distribution License, Version 1.0 only
 *  (the "License").  You may not use this file except in compliance
 *  with the License.
 *
 *  You can obtain a copy of the license at Docs/cddl1.txt
 *  or http://www.opensolaris.org/os/licensing.
 *  See the License for the specific language governing permissions
 *  and limitations under the License.
 *
 * CDDL HEADER END
 *
 * 09-Sep-2007  Brendan Gregg   Created this.
 */

#pragma D option quiet

dtrace:::BEGIN
{
        isbuiltin["echo"] = 1;
        isbuiltin["test"] = 1;
        /* add builtins here */

        printf("Tracing... Hit Ctrl-C to end.\n");
        self->start = timestamp;
}

sh$target:::command-entry
{
        self->command = timestamp;
}

sh$target:::command-return
{
        this->elapsed = timestamp - self->command;
        this->path = copyinstr(arg1);
        this->cmd = basename(this->path);
}

sh$target:::command-return
/self->command && !isbuiltin[this->cmd]/
{
        @types_cmd[basename(copyinstr(arg0)), this->path] = sum(this->elapsed);
        self->command = 0;
}

sh$target:::command-return
/self->command/
{
        @types_wasted[basename(copyinstr(arg0)), this->path] =
            sum(this->elapsed);
        self->command = 0;
}

proc:::exit
/pid == $target/
{
        exit(0);
}

dtrace:::END
{
        this->elapsed = (timestamp - self->start) / 1000;
        printf("Script duration: %d us\n", this->elapsed);

        normalize(@types_cmd, 1000);
        printf("\nExternal command elapsed times,\n");
        printf("   %-30s %-22s %8s\n", "FILE", "NAME", "TIME(us)");
        printa("   %-30s %-22s %@8d\n", @types_cmd);

        normalize(@types_wasted, 1000);
        printf("\nWasted command elapsed times,\n");
        printf("   %-30s %-22s %8s\n", "FILE", "NAME", "TIME(us)");
        printa("   %-30s %-22s %@8d\n", @types_wasted);
}


Stability
---------

Element Name    Class           Data Class
------------------------------------------
Provider        Uncommited      Uncommited
Module          Private         Private
Function        Private         Private
Name            Uncommited      Uncommited
Arguments       Uncommited      Uncommited
------------------------------------------

Technorati Tags: , ,

Happy Birthday to me

Happy Birthday to me,
I'm now 43.

Kind of sad that that's the best rhyming couplet I can come up with.

pageicon Thursday Dec 06, 2007

Customer Service (?) from Acer Support

Updated twice (see end of entry)

After having my Dell notebook die outside of warranty two years ago, I made sure to buy the extended warranty when I replaced it with an Acer Ferrari 4005 in November/December 2005.

About a month ago, (around 2 years after purchase interestingly, just like the Dell), I started having problems with it. I noticed a couple of cracks on the top of the screen and that I had two keys starting to be questionable (they work about 50% of the time). Shortly after that I started seeing windows regularly crash and Solaris hang. A little investigation showed that the video card (on the main board) was starting to play up.

So, obviously I arranged to have it sent back under warranty.

This is where the tragedy of errors begins.

I got the tracking number when DHL picked it up from Gordon at about 9:30.

It looks like the driver drove all day before dropping it into his depot at 8:00pm that evening (end of shift?). It then looks like it went out of the depot for an hour at about 3am before being returned at 4am and was finally delivered to the repair center in Flemington at about 9:15am the next morning. Note the distance between the repair center is about an hours drive, if that.

OK I was called a few days later to be told that the screen would not be replaced under warranty, but if I was willing to pay for it they'd replace it. I declined. My belief at this point was that the main board had been done and it would be shipped back to me shortly, and everything I said communicated this expectation. Nothing was done to correct it.

The following week I had a call stating that they wouldn't be replacing the keyboard as there had been a "liquid spill" on both the keyboard and the disk. I reached over my desk and picked up the disk (which I kept as I did not wish it reformatted) and said "hmmm interesting, I have the disk in my hand and see no such evidence. If there is evidence of a liquid spill on the disk currently installed, it must have happened there", which of course prompted denials. The upshot was that they also were not going to replace the keyboard unless I paid for it. Given I can clean a keyboard myself I declined. Again the expectation thing, in fact I also changed the address for them to return it as I would be working from home the next few days. No correcting of that expectation.

At this point they had had it for a week.

Come Friday, I was concerned that I still hadn't got it. So, yet another call to the support line (and the interminable wait being constantly informed of my position in the queue). At this point I discover (for the first time) that the main board is actually on back-order, and everyone that I had previously spoken to had been aware of this and not passed it on. They would not tell me the expected date of delivery.

Monday I tried again after hours and got probably my first good experience with Acer Customer Service. The guy was very helpful and understanding and did actually tell me that my part was expected on November 29.

I called during the day the next day to speak with some in-hours person about my disappointment in the way that I had been mislead and got the usual platitudes.

OK, come Thursday (Nov 29), I called a bit later in the day to verify that work had either been complete or had at least started. The back-order had slipped to the next day.

Let's try again, Monday December 3. It had slipped to December 5 (the following Wednesday).

At this point I demanded that if it slipped again that I would be called immediately that information was known and received that commitment.

I was on training Tuesday & Wednesday so didn't get to call them until after hours on Wednesday. Again, I got another person who really tried their best (hmm why do I have better experiences with their after hours staff?). Unfortunately the case ticket had not been updated, but they offered to email the technician who was doing the repair so that they would call me first thing this morning.

You guessed it, it didn't happen.

I called up a few minutes ago (and waited on a queue that started at length 20). Gave my case number and Identified myself. I was then told that the part had not arrived and that there was an outstanding query to their supplier about when it would be delivered.

I was livid. Especially at the "I understand why you are upset" platitudes.

Apart from not being called this morning as per commitment, from last night, the delivery had slipped again and no-one thought to get in touch with me.

Acer Support is not a small company, but this kind of behavior makes them look decidedly mickey mouse.

I have demanded to be told the instant that they know the new delivery date, and received yet another commitment to be called this afternoon with the information.

It goes to their management if they drop the ball again, I've had it. I've been without my notebook now for more than three weeks. Maybe I should send them a bill for the time I've wasted on the phone trying to sort this out. That should come close to replacing the screen!

One thing is for sure, much as I liked the machine and the good performance it has given me, I will not be replacing this machine with another from Acer when the time comes.

A suggestion to the folks on the phones at Acer support. Your customers are your reason for existence. Without them, you would not have a job. When you make a commitment, you honor it. A Suppliers support division is one of the main reasons that that they get return custom. Here in the Sun Support office in Gordon, we used to have a poster up that simply said "It can take years to win a customer, and seconds to lose them". Truer words were never uttered. If the first people that I had spoken to had set my expectations correctly from the outset, I would not be as angry as I currently am. A simple "To fix your video card, is a main board replacement. We've had to order this in and they normally take 3-4 weeks" would have done this.

If I had treated a customer with the obvious contempt with which I feel I have been treated by Acer Support, I would expect and deserve a serious ass-kicking from my management.

Update #1

Well, it's just gone 5pm here and I have not received the promised call from Acer. Tomorrow we start talking to call center management. Sigh, I wish it hadn't come to this. Folks, you don't promise a customer something only to get them off the phone so you can forget about it.

Update #2

Just got off a phone call with their escalation department speaking with someone called Frank. Unfortunately the phone system somewhere between us was playing up. I noticed while in the queue that I had extended periods of silence and it looks like one of those occurred while I was speaking with this person.

He agrees that this has taken a long time and told me that there is still no ship date on the back-ordered main board. While I am skeptical about this, he has committed to having the repair folks actually see if the board can be repaired, as apparantly this is one of the things that the Highpoint folks in Flemington do. I am to expect to be called by them early next week.

We shall see.

Just before we got cut off, I was pointing out that there appear to me to be call-centre folks in the support centre who will commit to almost anything to get an upset customer off the phone and then ignore it. Unfortunately I did not get to hear his response to this as that's when the line went silent again and then was disconnected a minute later.

pageicon Saturday Dec 01, 2007

Listening to Ian Moss

Six Strings Album Cover

I got to hear some tracks from Ian Moss' 2005 Album "Six Strings" recently.

WOW!

Sufficiently impressed that I've ordered the Album and hanging on a phone call from Borders to tell me it's in.

I was already aware of Ian and a lot of his work, but this album of him solo, unplugged is nothing short of awesome.From classics such as Tucker's Daughter through to new stuff like Message from Baghdad (featured on his myspace), Two seconds too long and All alone on a rock.

I have a new favorite album, well I will when it arrives!

The album was recorded live at a performance, I'd love to find out there is a video to this!

pageicon Tuesday Nov 20, 2007

Mutex Contention vs number of cpus

I've had a few cases recently that have brought this issue to the fore.

It's amazing how many people think that the answer to all performance issues is to simply throw more cpu at the problem.

Let's work through this thought (and this holds true for other queuing type locks too).

  1. On Solaris, if the mutex holder is on proc, the waiter spins instead of blocking and sleeping
  2. If we have sufficient threads wanting the same mutex, we can quickly utilize all cpus in a box
  3. The more threads we have in the queue for a mutex, logically the longer any given thread will take to progress through this queue to obtain it.

What does this tell you about what is likely to happen if you add more cpus into the mix?

It's relatively obvious now, isn't it.

  1. More cpus stuck spinning in kernel space
  2. Longer mutex queues
  3. Longer average time to obtain mutex for each thread that wants it.

The obvious consequence being that adding more cpus can actually have the effect of making the problem worse.

Sigh.

Making a Stomp Box

I posted this over on my myspace blog, but I'm sufficiently please with myself that I thought I'd post it here too.

Well I've just finished the main work in making a new stomp box.

I did a google search and came up with the following instructions:

2 x 350mm x 70mm (x20mm) hardwood
2 x 310mm x 70mm (x20mm) hardwood } Gives you a total of 350mm x 3500mm square, 70mm high.

For the top: 350mm x 350mm 3ply (make sure all ply sheets are same thickness, first one they gave me was actually thinner because the top and bottom sheets of ply where as thin as a card).

Then i just used a round file to make a small circular groove for the mic lead to sit because if the stompbox isnt flush with the ground all the way around...ahh... block your ears! FEEDBACK.

Well the best I could do for the sides was 66mmx19mm marante. I had Bunnings cut up the pieces to the above dimensions for me, picked up some nails and glue. Unfortunately with Bunnings, you pay for the whole bit of wood they cut up. The marante was 1.8m long (so not really a lot left over there), but the 3-ply was actually a 450x900mm cut. All up, cost me about AUS$20.

I only screwed up on one thing with it, I put the 350mmx350mm piece on upside down, so now I have a nice hole to fill before I stain and varnish it. I also still have to make the cable hole for the mike, but I'm pretty happy with it.


pageicon Tuesday Nov 06, 2007

Toy Recall - HOLY CRAP

I just had my dad call me to tell me about this toy recall.

The toy (Bindeez Craft Beads) won the Australian Toy of the year award! Now they find that

"The colourful beads contain the same chemical as the illicit drug GHB, otherwise known as 'fantasy' [...] the product actually contains 1,4-butanediol [...] When metabolised, 1,4-butanediol converts into GHB."

My (almost) 9 year old daughter loves playing with these things!!!

Sometimes as a parent I have the absolute sh*t scared out of me.

I will be packing these up to be returned as soon as I get home!