Random Thoughts

Tech, words and musings from an Englishman in Seattle

BritPack number 4 is alive!

The latest edition of the BritPack is now live! I'm number two in this line up - the theme of which is "10 years ago and 10 years ahead".

In my segment I wax a bit philosophical due to the recent birth of my daughter - my appologies...

Direct link.

Britcaster entry.

Backward Compatibility In Flight Simulator

Over on his blog, tdragger (a PM on the team) posts a great response to a thread on the AvSim forum regarding backward compatibility in Flight Simulator. So of course, I need to add my rather overpriced 2c.

Although never a box feature, it has always been important to us on the team to maintain backwards compatibility going two versions back for scenery, aircraft, AI, terrain - basically any content that the end-user can add onto the product. Sometimes a few things will break, but that break results from well thought out trade-offs.

Most of those add-ons are graphics related (scenery models, placements, aircraft models, etc...) but some are other forms of data like flight models. I'm going to talk about the graphics stuff here.

A lot of the conversation on AvSim seems to imply that we are trading-off increasing the visual fidelity of the product for supporting some old models. Nothing could be further from the truth. The engine is architected such that the core rendering engine is abstracted and the 3D model and database system access it by well defined internal APIs. When we revise the graphics engine we do so without breaking the fundamental way that the object system (and any other client such as weather) accesses it. What we may do however, is provide new features in the graphics engine that can only be fully taken advantage of by newer models that specify new parameters such as bump maps, skinning information, specular maps, etc... There's a whole bunch more visual juice than that - you'll just have to wait to find out what...

Of course, newer models can take advantage of that, but what about old content? Content that might not map well to the newer system? Well, it goes through a translation. Sometimes that translation is static, sometimes it happens on the fly.

Other issues that are interesting to deal with are those old forms of content that effectively say "Here's a triangle, ohh, here's another one. Here's a new texture. Errr, go look at the airspeed. Here's another triangle." Modern graphics systems really like "Here's 5000 triangles and a full definition of the material, go and be excellent". Of course, this is the current architecture.

Other issues to do with backward compatibility include visual consistency. If everything in the world is now bump mapped, specular mapped, squishing and swirly and making cups of tea at the drop of a hat, the old content is going to stick out like a sore thumb if rendered naively. So we do things to alleviate those issues.

So, in conclusion, it's not a matter of old content giving us a backward compatibility boat anchor around our ankles. It's a matter of us thinking though carefully how to push old content though a new pipe.

Now, for the other issue.

I've lost count of the amount of times that I've read on forums "Why can't Flight Sim look like my <insert FPS de jour here>?" I wish we could, and we're striving to make the visual fidelity of the product on a par (or better) with the best graphics engines out there.

But you have to recognize our constraints. Flight Simulator allows you to be anywhere on the planet, at any time of day, in any day of the year, at any altitude (or attitude for that matter). Most other games have your eyes approximately six feet off the ground at a fixed time of day in a well constrained location. Everything is prelit and stage-crafted for that visceral experience.

I'm not trying to make excuses here, but you can't compare apples to pot roast.

And if you'd like to help out, I'm hiring.

Tracking Clicks

Being a bit of a neophyte (well, maybe I'm a journeyman now) to javascript, I have been tracking the links that users click on in my AJAX homepage site by having the URL for the link be something like http://www.memeflow.com/goto/goto.php?hit=234, which after noting the hit would redirect to the requested page. Rather cryptic and problematic.

The problem is that this url is what shows up in the status bar, not the url for the site that the user is expecting to navigate to. The other problem is that you can't right-click on it to copy the url to the clipboard.

So, along comes various threads on message boards about google tracking clicks by rewriting the url on the 'onmousedown' event. Very sneaky and very clever.

I've told users that I'm tracking the clicks since day one, so this isn't a problem for me. So now, the url for each link is exactly the correct link for the site the user is expecting to visit, but the element has this attached to it for the 'onmousedown' event.

this.nodeItem.onmousedown = function(evnt)


var left = true;

if ((evnt) && evnt.which)


if (evnt.which != 1)

left = false;


else if (event && event.button)


if (event.button != 1)

left = false;


if (left)

this.setAttribute('href', 'goto.php?hit=' + id);


Most of that code is actually checking to make sure the click was from the left button, so that a right mouse-click has the desired behaviour.

I hope someone finds this useful...

Interesting Contacts

Over the past couple of days I've had some interesting people contact me because of my blog. The first was a journalist from the UK doing some research into house purchase differences between the UK and the US and the second was a phone call from a musician in Minneapolis who is having the same problems with a certain CD duplication firm as I did earlier in the year.

It's interesting to note that the idea of a recommendations and criticisms of companies via blogs can now seriously affect their business. That wasn't the reason I posted my experiences, but rather I needed to vent... now however, if you search for Omnidisc in Canada, you also get my blog.

Recently, Jeff Jarvis' experiences with Dell hit the headlines, and CBC's Todd Maffin podcast about the phenomenon.

Companies need to wake up and realize that the next customer they piss off might have a greater audience than they do.

2006 World Cup to be broadcast live and in High-Definition


Time for everyone to get HD installed, because the World Cup is going to be broadcast live in HD!

ABC and ESPN will broadcast their fourth straight World Cup next year and will televise all 64 games in high definition.

The networks will not decide until after the draw on Dec. 9 how to split the games among ABC, ESPN and ESPN2, they said Wednesday.

All games of the tournament, which will be played in Germany from June 9 to July 9, will be broadcast live.

Via SoccerNet.

Back Home Now

We're all home from the hospital now and everyone is doing fine. Julian adores his little sister. It's all "Baby, mine!"

When Julian visited the hospital and Jasmine was crying, he tried to give her one of his snacks... and when we had just arrived home he brought all his teddy bears to her.

Cool kid.

Thanks to everyone for all your kind congratulations - and to everyone that called and sent flowers. It's much appreciated.

Surfing at the Hospital

Regarding my previous post (and, well, this one too), I'm actually kicked-back in our hospital room browsing the web and posting from my laptop, connected to the net via the hospital's free and open wireless network whilst mother and baby snooze.

How cool is that?

Please Welcome Jasmine Susan Lacey

So at 7.50am today, Jasmine was born at Evergreen Hospital, Kirkland WA. She weighed 6 pounds 13 ounces and was 20.75 inches long. Mum and Daughter are both doing splendidly.


Jasmine and I

Man, has it been a long day. We got up at 4am so we could all get ready and then drop Julian off at our good friend's CJ and Karen on the way to the hospital for a 6am checkin.

Then it was form filling, Q&A and prep for the OR. My mum and our good friend Deb went into the OR with Nabila, whilst I chewed my nails in our room. Everyone turned back up at the room at around 8.20am and all is well.

Of course, Julian does not know what to make of it all.

Hunter's Final Farewell

A fitting final exit for Hunter. His ashes have been mixed with gunpowder and will be launched into the sky in 34 specially made fireworks.

Apparently Johnny Depp has footed the estimated $2 million bill.

Via Boing Boing.

My Grandfather

Here's a photo of my Grandfather during World War 2 that my mum just showed me.

My Grandfather in WW2 Uniform

It looks like the photo was originally black and white, but the negative was coloured prior to printing. Anyone have any thoughts?

Speaking of my Grandfather, I talked about him in the most recent Britpack podcast.

Digital Flotsam

I don't know why I've never mentioned this before, but if you haven't listened to P.W. Fenton's Digital Flotsam yet, you're missing out on a real treat.

When I first listened to the podcast, the structure felt a bit strange, but I soon got used to it and really enjoy it. Listening to Digital Flotsam feels like sipping hot chocolate by the fire.

In case you can't tell, I really enjoy this podcast. The latest one, "The Brain Dead Edition", is a real treat. Any show that starts out with the following has got to be worth listening to.

This episode has to do with a universal truth. One of those things that can be stated with utter confidence. Because while it can't be sufficiently proven, you can search the world, visit every country, examine every culture, and you will not find a single person willing to refute it.

What is this simple universal and irrefutable truth?

All adolescent boys, anywhere on earth, will at some point demonstrate that they are brain dead.

PW's shows are personal recollections of life. Told in a witty, compassionate and completely engaging manner and weaved together with wonderful music and audio montages.

Highly recommended.

Radio Free Radio's Digital Flotsam.

Changes Are Afoot

Tomorrow, my mum arrives from the UK to stay with us for a month. On Sunday, Jasmine arrives.

Our long awaited daughter will appear at 7.30am(ish).


To tell the truth I've been a little apprehensive. Jasmine will be arriving via a scheduled c-section and even though these things are minor in the surgery scheme of things, it's still surgery. And I'm just that little bit ever so squeamish. Before Julian was born, the anesthetist was happy that I wouldn't be in the OR as in her words "I only want one patient to deal with". ;-)

Which is why I'll be waiting in our room at Evergreen hospital while it's all happening. My mum though will be in the OR and will get to meet our new bundle of joy before I do.

The past few weeks have been interesting. I've developed some new coding skills (www.memeflow.com/goto), I've played some golf, written some music, and generally chilled out whilst on sabbatical.

But now is the time to welcome Jasmine into the world, care for her, nurture her, and teach Julian the joys of having a little sister.

I can't tell you how much I'm looking forward to meeting her.

This evening while laying on the couch, having Julian jump all over me, and standing on my stomach completely trusting that when I push him over into the huge pile of pillows, that it'll be the most fun thing he's ever experienced - I could only think about how much fun it'll be when there are two of them beating up on dad.

Welcome little girl.

Recent Updates To GoTo

Following on from the release of GoTo, my ajax powered home page, I've just released a bunch of updates, including the most requested feature - support for adding a page to GoTo via a button link when at that page. You can now also move links around between blocks, just like you could move blocks around.


  • By dragging the link "Add to GoTo" to your browser links area in Firefox, or right-clicking the link in Internet Explorer and adding it to your favourites, you can automatically add the current web site to your GoTo subscriptions. They will be added to a new block under the "Top Links" section, and you can drag the items to your normal blocks from there.
  • You can now delete a block by clicking on the "Delete block" link.
  • If using Internet Explorer, you can now hit "Enter" in edit boxes to complete the operation.
  • Blocks and items are now sorted by creation time.
  • Fixed issues regarding slashes being displayed after text has been escaped for storage.
  • Editing an item now selects the contents rather than just giving focus.
  • Fixed bug in ranking (links linked to by the same user multiple times now only counted once).
  • Now supports all URI schemes, not just http.
  • Added the ability to reset your password.
  • Deletion of blocks now requires confirmation.
  • You can move items around between blocks by clicking on the "#" icon next to the item

Please send any comments or suggestions to me, or goto@memeflow.com. Cheers!

A Brit Abroad - August 15, 2005

Ok, so I think I'm just going to fess up and call this a monthly show from now on as, of course, it's been another month since the last one!

Today's show is a tad special as I'm joined by my lovely wife Nabila. We chat mainly about the differences between living as Brits in the UK and USA, including housing, builders, shop staff, getting your nails done, the people and the telly...

At 26 and a half minutes and weighing in at 18.2MB, It's A Brit Abroad!

No show notes today as this is a general ramble... oh, and yes I know it's Monday, even though I said Tuesday in the show...


Mucking Around With AJAX Website Design

Over the past couple of weeks I've been mucking around on and off with a website idea. You can try it out on my "other" site over here.


The basic idea is that the site acts as a very fast homepage. You create blocks that you can move around, and in them you place links. It's all in an AJAX style using XMLHttpRequest stuff, so there's no page reload - everything is edited in-page and hopefully everything happens very quickly.

So there you go. If you give it a try, please drop me a line with your experiences.

I've got a bunch of other features in the pipeline for it, and I hope to keep everything stable.



New Roof

Last week we had a new roof put on our house as the cedar shake on it was basically disintegrating. When we bought the house back in 2001 we had the roof inspected, repaired and warrantied for five years as a part of the contingencies for sale.

As it was still in warranty, I called the company that did the original repair work. Out of business. So I then called the warranty company. Again, out of business.

Ho hum. After chatting to a few people, it appears that these warranties aren't worth the paper they're written on...

So I spoke to a general contractor friend of mine who recommended Legacy Roofing. I called them and a guy came round to inspect the roof and prepare a quote. He projected a great image for the company. Professional, didn't try to up-sell things to me that I didn't need, and then after he inspected and measured the roof we went to his van which was basically setup like an office! He even had network connectivity back to base!

He prepared a quote there and then, which I was very happy with, so I signed right there and then. The cedar is supposed to last 50 years (it's three quarters of an inch thick), and they warranty all work for ten years which is transferable on sale of the house too.

Fast forward to last Monday, and the work crew turned up with some hi-tech trucks to deliver a skip and then proceeded to tear the old roof off, and felt it. That took two days. On Wednesday, the new cedar arrived, and on Thursday and Friday they installed it.

Man those guys worked hard - and it was really hot here last week. On Saturday they cleaned up really well and took the skip away.

The roof looks beautiful.

New Roof

Legacy Roofing. Highly recommended.

Blue Angels

One of the cool things about living in Kirkland is that you can see Lake Washington from our front deck. That means that every year, during SeaFair week, we get to watch the Blue Angels from our house.

Last year (being not yet one year old), Julian didn't take much interest. But this year he was standing on his chair out front, and oohing and ahhing as the planes flew by.

Soon after that, he went for his nap and Nabila and I sunk into the sofa to watch the Hydroplane races on the TV.

Ahh, lazy Sunday afternoons...

Birthday Party

Yesterday we held a joint birthday party for Nabila and Julian. Our neighbour Anna did most of the organization, and quite a few people came over.

Balloons, good food, cake and friends. What more could you ask for?

Julian and Nabila's Birthday Party

The ballons were a big hit. Thanks to Anna for the idea of renting a hellium tank. Our neighbour's son seemed to enjoying the vocal changing characteristics of the gas!

It was quite hot, so thankfully the A/C took a lot of the load off...

Julian and Nabila's Birthday Party

Overall, a lot of fun. The dog was knackered and Julian, Dad and Mum had a great time.

Julian and Nabila's Birthday Party

Logitech Harmony 880

After reading a bunch about the Logitech Harmony 880 Universal Remote, I decided to pick one up yesterday. And boy, is it worth every penny.

The remote is a universal remote with a great feel. It's a peanut-style remote, similar in form to the TiVo remote, with a very vibrant color LCD screen. Setup is very easy - after changing you just plug it in to your computer via USB and then run the provided software which takes you off to the logitech website. Here you enter model numbers for all your components and setup "activites" - watching TV, playing a DVD, etc... The defaults all worked for me. Data then gets downloaded to the remote and off you go.

Setup went pretty smoothly for me, with the remote controlling every component almost flawlessly. The only problem I had was that it put my Yamaha reciever into "6CH Input" mode. So I clicked "help" on the remote and it said "Is the TV On (yes/no), Is the TivO on? (yes/no)". Eventually it got to asking about the receiver and finally said "Make sure 6CH in unlocked". I went over to the receiver, pressed the appropriate button, and everything is fine.

This kind of help system is incredible, especially for the times when you pointed the remote away while it was sending commands to multiple components and one is now out of sync. It'll go through a few questions and take the appropriate actions.

You can also upload bitmaps to it for favourite channels. Some good ones are over here.

For other reviews, there's another good one here on Home Theater Forum.

Overall, highly recommended - even with the hefty $250 price tag.

Podcast Idents

Sean Alexander brings up a good point that has been nagging me for a while - the lack of idents at the beginning of podcasts. And by begininning I mean the very beginning. Before any intro music.

I listen to a lot of podcasts in the car and I have no visual clue as to what is playing. If you don't ident your show at the very beginning, then after 10 seconds I've skipped your show because I have no idea what it is and I've got plenty more shows to fill the short time I have to listen to them.

On another note, Adam Curry used to ident the Daily Source Code with a date and then changed to identifying it purely with a show number. I have no idea why. There is no way I can remember the number of the last show I listened to, but I might be able to remember the date.

So, please ident, and please include the date.

Thank you.

It's Just Physics!

I was just on my back deck looking at the garden and thinking about how wonderful it looks now that the trees are full with leaves, and wanting to take a photograph of it.

I have never managed to take a picture at night with any success, and I don't believe any average photographer has either.

How hard can the technology be? The mechanics of the eye are fairly well understood, so what's the problem? Where are the cameras that can take pictures with results just like I see them?

What am I missing?

Trips to the Zoo and BBQ

This morning, at the crack of 9am, Julian and I left for Woodland Park Zoo to meet up with our friends CJ and Karen with kids MacKenzie and Sebastian, and Dawn and Darwin with kid Gabby. What a wonderful time! We were there from 9.30am until around 12.30pm. Julian really got a kick out of all the animals, but especially the brown bears.

Julian's favourite book is "Brown Bear, Brown Bear, What Do You See?" and when he first saw one of the huge bears his eyes lit up. "Mine!".

Then, of course, the bear took an absolutely enormous, streaming, steaming, crap. It must have lasted around 30 seconds. "Poo Poo!"

We then took a walk around the corner to an enclosed area that looked out upon the pool area of the bear enclosure. The water came about three feet up the glass so you could see the fish in the pool. Then over came one of the bears.


Into the pool came the bear, whereupon he literally tiptoed around, careful not to disturb the bottom of the pool, with his eyes in the water eyeing up the fish.

"Tag one!" Thought I, not thinking about the potential psychological trauma that such an event could have imposed upon the child.

In the end, the bear settled on some floating foliage and had salad instead.

Julian was just ecstatic. "Wow! Mine! More!"

After that we wondered around some more, had lunch with the Wheelers and then headed home. And then over to the Ingrams for BBQ.


What a day. Too hot, but ameliorated by the obvious joy that a boy had at the zoo.

© 2001 to present, Steve Lacey.