Monday, July 21, 2008

I started witing this two years ago and never really got around to blogging about it. In a nutshell this is a module that runs within the MetaWrap JavaScript library that allows you to define a finite state machine in XML. The finite state machine can call out to JavaScript to check values and notify the application of state transitions.

This development is a follow on from my previous research into Parsing Theory and part of an ongoing interest in streamlining web development. I've recently started using the state machine for its intended purpose so after 18 months I’ve finally decided to dust it off and blog it :)

My thesis is, in a nutshell that as developers we often end up dealing with complex logical situations in a user interface that are best explained by this sketch from Monty Python's The Meaning Of Life.

MR HUMPHREY: I begin the lesson, will those of you who are playing in the match this afternoon move your clothes down onto the lower peg immediately after lunch, before you write your letter home, if you're not getting your hair cut, unless you've got a younger brother who is going out this weekend as the guest of another boy, in which case, collect his note before lunch, put it in your letter after you've had your hair cut, and make sure he moves your clothes down onto the lower peg for you. Now,--
WYMER: Sir?
MR HUMPHREY: Yes, Wymer?
WYMER: My younger brother's going out with Dibble this weekend, sir, but I'm not having my hair cut today, sir. So, do I move my clothes down, or--
MR HUMPHREY: I do wish you'd listen, Wymer. It's perfectly simple. If you're not getting your hair cut, you don't have to move your brother's clothes down to the lower peg. You simply collect his note before lunch, after you've done your scripture prep, when you've written your letter home, before rest, move your own clothes onto the lower peg, greet the visitors, and report to Mr. Viney that you've had your chit signed.

Now, like me your probably written an application with a user interface that ends up with complex logic all over the place and a single change results in unpredictably strange consequences. As you make changes to this the code complexity grows. As developers, the best we have been able to come up with is MVC, which puts all that logic is all in the controller, however this is distributed throughout the code of the controller and there is no guarantee that you won't end up dabbling in the Kafkaesque.

 

 

 

Ideally I want some way of

  1. Describing a set of integrated rules in one location in a domain specific language.
  2. Decoupling this description as much as possible from the the Views.
  3. Allows those rules to be provable and enforced via contracts.
  4. Allow the system to be intelligent enough that it exhibits emergent behavior via its logical roots, this emergent behavior can then be leaned upon and provide complex yet intuitive behaviors to users for free.

My aim was to break the controller up into a state machine based rules system and a layer that could mediate between the state and view.  The states could be mathematically provable with contracts ensuring that no illegal state combination could be entered.  Combining this with a direct mapping layer between states and views, could result in a lot of code being abstracted away into the state machine and result in a more compact code-base.

 

JS_StateMachine_MVC_Comparison

A state machine interrogates a model via user defined JavaScript functions.The state view map defines what views and aspects of the view should be visible and triggers their display. 

 

JavaScript Finite State-Machine

The state-machine is a formalised description of the possible states of a system. States are either 'active' or 'inactive'.  The state-machine is multi-dimensional (states have sub-states) and multi-state (more than one state can active). 

The state-machine description consists of an XML file that describes a list of states.

The state-machine description consists of a list of states.  

Each state has a collection of sub-states which can only be active if their parent is active.

image

Each state has...

A list of rules for validating states which allow for a degree of asserting contracts between states.

A state can 'exclude' another state. Which is a way of saying that if this state is active then the other state should be inactive. If not, a fault will be indicated by an exception.

A state can 'include' another state. Which is a way of saying that if this state is active then the other state should also be active. If not, a fault will be indicated by an exception.

A list of rules that describe how a state is affected by the activation of other states or the return from JavaScript calls.

A state can 'require' some conditions to be met that another state is active or that a JavaScript function returns true. Any sub-state automatically requires its parent state. If you find a state requires only one or more states to be active then it should probably be a child of one of those states.

state can only be active if isInviteSent() returns true

state wino2s (win by O on diagonal 2) is only true if states op13 op22 and op31 are active. 

The reverse of ‘require’ is ‘unrequire’ such that the state will require a state to be inactive and expect called JavaScript functions to return false.

If we are going to be in a draw state in tic tac toe, then we can't have anone winning

Can anyone think of an alternative to ‘require’ and ‘unrequire’. I’m seriously considering ‘canhas’ and ‘doesnotwant’ as they make as much sense as any other alternatives so far.

A list of rules that describe how a states can control that activation of other states.

A state can 'negate' a specified state in which case when the state becomes active it will try and make the specified state inactive.

A state can 'affirm' a specified state in which case when the state becomes active it will try and make the specified state active.

When x has won, the game is over.

A list of triggers that are fired when the pattern of active states changes. The trigger is the call to a JavaScript function.

A trigger can fire when a states 'enter' (become active).

A trigger can fire when a states 'exit' (become inactive).

A trigger can fire when two specified states transitions 'from' or 'to' active/inactive between determining states.

When we transition to 'off' from 'on' then call some javascript.

A state can have a lock which forces it into its current state until the state machine is reset.

When an O is placed at position 1,2 - we ensure that X can't be placed there and that this state can't change by locking it.

The state machine has the following public accessible JavaScript functions

MetaWrap.State.testState(stateName) - Returns true if the named state is active

MetaWrap.State.negateState(stateName) - Tries to set the named state to inactive then determines the new state and fires transitions. Returns true if state is 'inactive'

MetaWrap.State.affirmState(stateName) - Tries to set the named state to active then determines the new state and fires transitions. Returns true if state is 'active'

MetaWrap.State.flipState(stateName) - Flips the named the named state from active to inactive or visa versa. Returns true if state is was flipped.

MetaWrap.State.determineState()  - Calculates the current state. Called after changes to the model are made that may require the state machine to re-evaluate.'

 

JavaScript State Machine Examples

  1. Toaster Example

NOTE – This won’t work in Safari or Opera.. yet. Neither of these browsers support client side XSLT. I’m working on a simple solution for this.

http://test.metawrap.com/javascript/tests/state/test_10_state.html

My first serious example was to model a simple toaster in a way that used most of the functionality of the state machine.

I wanted to model two classes of behavior.

The first are based on the explicit physical properties of the toaster (power on/off, bread in/out, lever up/down). I added the typical toaster behavior that you can’t push the lever down if the toaster is not on.

The second are based on the higher level states build up on the physical states, for instance if the power is on, the bread is in and the lever down, then the toast is cooking. I have also added the state where if you put the lever down after the toast has cooked, it will burn the toast.

image

 

image

image

  1. Tic Tac Toe Example

I think it was Lela who suggested that I try and model Tic Tac Toe. So I sat down and defined the finite state machine.

NOTE – This won’t work in Safari or Opera.. yet. Neither of these browsers support client side XSLT. I’m working on a simple solution for this.

http://test.metawrap.com/javascript/tests/state/test_13_state.html

image

One pleasant surprise is that formally describing the states as a whole makes you think about them as a….. whole :) . And the formal description can make some things obvious. For example. In the way I modeled Tic Tac Toe, it could be X’s turn or O’s turn.

image

And I set it up for one to deny the other (note that x_turn defaults to true, so X goes first).  This means in the JavaScript my code is nice and simple.

image

Once the game is over, who’s turn is it? There is a fault in my current model that became obvious after examination. I thought I was being clever by inversely relating x_turn and o_turn because it gave me a way of tracking the turn inside of the state machine which would then flip the current state.

However at the end of the game when I want to make it nobody's turn, if I negate x_turn, o_turn becomes true and then when I negate o_turn, x_turn becomes true. I solved the issue by locking the turns.

I’m probably going to modify lock so that you can specify a value to lock it on and get it to suspend all further affirmations and negations down the chain, but I need to work out what the implications for that could be.

 image

image 

State View Map

The state view map is a formalised description of mappings from a state to a view and a set of aspects of that view.

A state view map  description consists of a list of states and the pages and aspects that should be visible.

This will be the topic of my next post.

Monday, July 21, 2008 11:43:58 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Monday, June 30, 2008

Most impressive and most scary technlogy demo I have seen this year.

Once this is as easy to use as Photoshop, the our trust of media will be reduced even further.

High Quality Quicktime Video

Once they can do this with dynamic video and people, then governments of the world will have the perfect propaganda tool.

Fox news can edit out those unsightly protesters.

As with most new media technology, it will probably be used by the pornography industry first.

The implications of this are oh so scary. Fox News and oppressive governments of the world rejoice!

For more http://blogs.adobe.com/jnack/2008/06/hot_image_science.html

Monday, June 30, 2008 10:34:02 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Thursday, May 29, 2008

Yes its advertising for Microsoft -but its for a good cause.

"Microsoft Australia are running an interesting campaign to demo MS Office 2007 and raise money for charity at the same time. The premise is fairly simple. Users head over to the campaign page (built with Silverlight) and watch a 30-second clip of 9-yr olds explaining MS Office 2007, and Microsoft donates one Aussie dollar to The Smith Family."

http://www.microsoft.com.au/donatenow is the link

Thursday, May 29, 2008 6:00:43 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Tuesday, May 20, 2008

Looks like Twitter is going into the garage tonight.

image

Its coughing a bit of blood at the moment so that may be a good thing for all of us twitticts.

image

http://www.istwitterdown.com

image

http://www.twitter.com

Tuesday, May 20, 2008 7:37:30 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1]
 Friday, May 16, 2008

I love DigsBy but there are three annoying behaviors that could be solved with.... just a few more options :)

1) In popup mode and an IM from person I didn't have a conversation going with comes in, it pops up and takes focus and whatever I was typing starts streaming into the popped up IM window..

image

I've not found a way to stop it from taking focus - even when turning off "Popup"

image

The number of times I have almost posted code or a part of an email I am typing to Twitter is quite astounding. I'm removing the Google Talk and MSN accounts and going back to native. I'm still using Digsby to monitor Twitter, Facebook and half a dozen email accounts.  I've been using Twitter via Google Talk and its amazing how much faster the messages come through via Google Talk I'm hoping that's just down to polling speed and not Twitter API issues :)

2) The flashing of the application toolbar icon.

I want to be able to tell it to not flash on every message source. I don't want to know that I have gotten 10 messages from Twitter or ThumbWhere. I want to know if a coworker messages me.

image

3) I run it at home and at work - and I don't want the same behavior in both environments. These ones should be machine specific as they are specific to the hardware.

image

Friday, May 16, 2008 10:45:07 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2]
 Thursday, May 15, 2008

It may not work for a pot or a kettle, but thanks to some operating systems giving the topmost focused window process a higher priority, it does work for computers.

This will only really work If the process is graphically intensive and is doing an awful lot of computation eg.

waiting

It can be worthwhile just clicking on that window to make it focused and watching time pass by. Hint. Open a web page and do some practical research, just keep bringing that process window back to the top and clicking on it if it goes away because you have clicked on something in the web page.

So next time someone says "A watched kettle never boils", you have the counter argument.

Thursday, May 15, 2008 12:25:55 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Tuesday, May 13, 2008

Possibly the best comic form summary of the CDO MBS scandal. (Sub-prime loans crisis.)

http://www.suburbanhousehunters.com/about/mortgage-crisis/

Of note.

  1. SPV's is the general term for the more specific term of SIVs (Structured Investment Vehicles).  Expect to hear more about these in the future.
  2. They don't mention that some of the ratings agencies and the financial institutions had shared ownership which could be counted as a conflict of interest.  IMHO If nothing is done legislatively to regulate ratings agencies then this can always happen again. They obviously have a large duty of care.
Tuesday, May 13, 2008 5:29:10 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Monday, May 05, 2008

LOL-* (Pronounced "LOL STAR")  is a simple and compact markup language for creating image macros on your mobile phone via MMS.

An implementation of this language has been included as part of the http://rss.thumbwhere.com MMS to RSS gateway.

When you submit an MMS message from a mobile phone you typically send one media element with a subject. A server capable of rendering LOL-* is able to extract the LOL-* markup and render one or more captions or annotations onto the encapsulated media.

Caption Your MMS Submissions

Any text you put at the start of the subject in square brackets.

[Like This]

will be turned into a caption.

wallpaper 

The remainder of the subject will be left as is, so if you send

[Fear Me Human]Why is my kitty growling?

It will caption the image with "Fear Me Human" and the subject will be "Why is my kitty growling?"

 

Why is my kitty growling?

wallpaper,Why is my kitty growling?

 

A Caption can be positioned in three rows on your photo, [Top/Middle/Bottom]. The / character is used to switch to the next row.

A more complicated example is

[I/love/these things]Tribbles taste like chicken.

which will caption the image on three lines "I" will be at the top, "Love" will be in the middle and "These Things" will be at the bottom. The Subject of the message will be "Tribbles taste like chicken!"

Tribbles taste like chicken.

 

You can of course leave the first two rows blank if you want your caption at the bottom as in this next example,

[//I Is Raptor U Fool!!]Why does my Kitty Have Glowing Eyes?

...which will caption the image at the bottom with "I Is Raptor You Fool!". The Subject of the message will be "Why does my Kitty Have Glowing Eyes?"

Why does my Kitty Have Glowing Eyes?

Putting a < or > in your caption will align the text to the left or the right so...

[<Oh hai, can I Ha..//>WTF!!]

...will put a caption at the top, left justified and at the bottom right justified.

wallpaper 

All captions are automatically capitalised, they just seem to look better that way.

If characters are already capitalised, they will remain capitalised. Note the WTF!! in the previous example was not converted to Wtf!!

Here is another example.

[//O RLY?]

wallpaper 

You don't have to end your caption instruction with a ] if you are not going put some text after it, such that ...

[nom nom nom

...will still work as a top caption even though the caption command is missing its final ]

wallpaper 

As part of an MMS message standard you are also allowed to send one or more large blocks of text, which ThumbWhere treats as the message body.

If you send a video, the caption will be rendered over the top of the thumbnail and the video will remain unaltered.

If you run out of room in the Subject, keep the Subject blank and use the message body. If the Subject is blank, the Body will be treated as the subject and image commands such as caption and rotation will come from the body.

Image Rotation. Not all phones have sensors to detect if you are taking an image on its side, so you may need to rotate the image from your phone for it to make sense.

Luckily you can do this as part of LOL-*

Rotate Your MMS Submissions

You can add special commands to the start of the subject to rotate your photos. This is useful if your phone's camera functions don't automatically rotate an image before sending it via MMS

< Will rotate the photo left (anti-clockwise)

> Will rotate the photo right (clockwise)

So if you sent in the following subject

>I Love My Kitty!

Your picture will be rotated to the right and given the subject of "I Love My Kitty."

You can rotate your image before applying a caption such that if you sent in the following subject

>[Distinctly Told//Not To Mow During The Day]Australia - Its Hot

Your picture will be rotated to the right and given the subject of "Australia - Its Hot", a top caption of "Distinctly Told" and a bottom caption of "Not To Mow During The Day"

Australia - Its Hot

LOL-* is being constantly extended. I will post updates.

If you think these instruction can be made better - please send me an email.

Monday, May 05, 2008 10:14:41 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2]
 Wednesday, April 23, 2008

"A new generic method for exploiting a common problem in software code that was previously thought to be prohibitively difficult to attack is generating a wave of concern and surprise in the security community."

http://news.bbc.co.uk/2/hi/technology/7358792.stm

This is really just another buffer overflow attack. If he is taking advantage of bugs in the VM then it's just an old fashioned exploit.

Because the 'code' you execute in a Virtual Machine or Intereter does not directly access the low level runtime libraries, we assume that the programs we develop can not cause a buffer exploit. If there is an exploit then it lies in the VM itself. Its very easy in a low level language like C or C++ to allow a buffer exploit simply due to the semantics of some of the calls. You have to actively check for these issues and have some knowledge on how these exploits arise. When developing code that is executed via a VM, the onus for this checking for and blocking of this class of exploit is shifted to the application, which in this case is the VM itself.

We trust that a VM is checked and tested thoroughly and is free of these kind of bugs so that as developers we can not worry (so much) that our code has some kind of exploit.

If anything this paper simply reminds us that these VMs are just another application and if they have holes, these can be exploited.

Wednesday, April 23, 2008 10:40:32 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1]
 Thursday, April 17, 2008

Finally blogging an observation I made last year.

Its very simple.

History is repeating itself.

In the US, "Freed Men" where given the soft and non explicit right to vote by the Thirteenth Amendment in 1865, although it was 100 years before laws were passed to make it illegal to prevent people from voting based on their race.

Women voted nationwide for the first time in the presidential election of 1920.

There was a battle between the Suffragettes and the "Freed Men" for the public high ground, one of the arguments being along the lines that the American public would not let both groups get the vote at the same time. One group would have to go first.

The fight was dirty and divisive.

"After the American Civil War, both Stanton and Anthony broke with their abolitionist backgrounds and lobbied strongly against ratification of the Fourteenth and Fifteenth Amendments to the US Constitution granting African American men the right to vote."

"Eventually, Stanton's oppositional rhetoric took on racial overtones. Arguing on behalf of female suffrage, Stanton posited that women voters of "wealth, education, and refinement" were needed to offset the effect of former slaves and immigrants whose "pauperism, ignorance, and degradation" might negatively affect the American political system. She declared it to be "a serious question whether we had better stand aside and see 'Sambo' walk into the kingdom [of civil rights] first." While her frustration was palpable and perhaps understandable after her long fight for female suffrage, some scholars have argued that Stanton's emphasis on property ownership and education, opposition to black male suffrage, and desire to holdout for universal suffrage fragmented the civil rights movement by pitting African-American men against women and, together with Stanton's emphasis on "educated suffrage," in part established a basis for the literacy requirements that followed in the wake of the passage of the fifteenth amendment."

What we see on our TV's every night seems to mirror this ancient epic struggle.

And if history repeats itself - it will be Obama who gets to be the Democratic Candidate.

It also pains me that I seem to know more about the US political system than that of my own country.

Its pains me more that I seem to care more about the US elections but as I said in 2000. "The US elections effect the world to such an extent, they are too important to be left up to Americans". I think history has borne that one out so far.

Thursday, April 17, 2008 9:17:26 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Wednesday, April 09, 2008

Yet again, we are the bridesmaid and not the bride.

And the winner in our category of Best Interactive Channel was http://www.wedigtv.com/

So its congratulations to everyone involved - its an honor just to be nominated!

Next Year Gadget! Next Year!

Wednesday, April 09, 2008 7:30:25 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Sunday, April 06, 2008

Coming from Perth Western Australia and remembering the Annual Birdman Rally from the 1970's, I could not miss the the RedBull Flugtag.

Arrived at 11am. According to the announcements they were expecting 20,000 people but got 50,000. The crowd was stretched all around from Mrs Macquarie's Chair to the Opera House. The Point of action being in the Harbour about half way down Mrs Macquarie's Rd.


View Larger Map

The second half was fine, but the first half was pure hell.

Yes this is going to be a whiny post.

Managed to find a spot, then some large Cruisers moved in blocking the view.

IMAGE_042

Found a new spot.

Then the Red-Bull boat parked in front of the ramp occluding the fun for the vast majority of the people that had not camped out from 6am.

IMAGE_043 image

If you were between the yellow lines, the Red Bull staff boat meant that you didn't get to see a thing.

Then the crowd started to get ugly.

In the end I performed the classic outflanking maneuver.

image

IMAGE_044 

Found a spot where through a tube of foliage you could just make out the action. But then of course as soon as the action started everyone stood up and we found ourselves behind a family who liked to brag about their level of education by calling everyone in front of them a 'pack of c*^%s' .

We ventured on, hid behind a steam powered zeppelin and ended up deep in the heart of the staging area and by pure luck managed to score a partially obscured view of a large LCD screen...

IMAGE_050

Which spent a lot of time not working...

IMAGE_049

But worked enough that we didn't miss too much.

IMAGE_052

Although it went on and off just as people were about to smack into the water so many times that Kew wanted to crawl away into a paper bag.

If its on HTDV next year, I'm staying at home or at least taking a bottle of wine with me to dull the pain.

IMAGE_045IMAGE_046

 IMAGE_047 IMAGE_055

Sunday, April 06, 2008 4:57:21 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1]

Its the end of Daylight Saving in NSW Australia this morning.

I managed to patch my phone the day before so that changed over fine.

A number of devices in my house however failed to change over correctly. I think their operating systems systems are no longer supported or the updates failed to come through automatically.

I would appreciate some help tracking down the OS patches or configuration changes for these ones.

IMAGE_037.jpg

This device broadcasts time to my lounge-room. It clearly failed to update itself.

IMAGE_038.jpg

This device broadcasts time to my kitchen. I suspect if the problem with the lounge-room clock is resolved it may provide some insight into the solution for this clock.

IMAGE_036.jpg

This crept into my room and jumped on me one hour earlier than it should have. This one is going to be a problem to solve I suspect, simply because its going to involve updating a large number of upstream devices that are outside of my direct control. The obvious ones that come to mind are the dog next door and the large ball of nuclear plasma that rises in the sky in the morning.

If anyone knows where I can download the timezone updates for any of these, I believe a large number of people in Australia will be very grateful.

Sunday, April 06, 2008 7:41:50 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Thursday, April 03, 2008
Thursday, April 03, 2008 10:26:21 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]
 Friday, March 14, 2008

The cool thing about being able to work at Massive is that you straddle the extreme technical end of making things scale, in the web 'C10k problem' sense, combined with the demands of the general public TV audience.

It combines both of my passions for the hard core Computer Science of making machines work at optimum capacity, providing developers with a simple and sensible API while also involving my eternal pathological psychological passion for the creation of an intuitive interface that combines the essential ingredients of a compelling first impression and the fugue that comes with immersion.

At Massive we are fortunate enough to get to combine web technology with the world of mass entertainment which puts us a little bit closer to Hollywood.

Or in this case Cannes.

Yes. We have been nominated for another Emmy, which makes that two Emmy nominations in a row.

emmy1.png

http://www.iemmys.tv/awards_nominees.aspx

emmy2.png

Check out the V8 Supercars Showreel if you want to get an feel for what the site is all about and what it delivers to viewers.

Anyone who knows me personally knows that the V8 project has been one of my focal projects for the last 3 years. Many a person has been denied my weekend company because I have been devoted to making such an awesome system and concept work. I've blogged about algorithmic success and the trepidation of designing a new version. Sometimes its all for Science!

The BigPond V8 broadband site combines live streaming, PVR time-shifting and the synchronisation of disparate data sources to bring together a coherent behind the scenes in the car narrative to the end consumer. I have loved working on this project so very much and I'm really chuffed to get this recognition.

Of course this was a team effort, with many other people involved in the project at Massive working in Design, Flash and Project management. Without many others at Massive and some of the brilliant people at BigPond and Chief Entertainment this project would not have been possible.

Check out the Massive Showreel as well if you want to get a feel for the kind of projects we work on at Massive.

Friday, March 14, 2008 10:25:25 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Wednesday, March 12, 2008

Adobe is planning to release a security update for Flash Player 9 in April 2008 to strengthen the security of Adobe Flash Player.

This security update will make the optional socket policy file changes introduced in Flash Player 9,0,115,0 mandatory.

  • A socket policy file will always be required for all socket connections
  • A policy file will be required to send headers across domains.
  • The allowScriptAccess default will always be "sameDomain"
  • javascript:" URLs will be prohibited in networking APIs, except getURL(), navigateToURL(), and HTML-enabled text fields

This is probably a good thing, but I am expecting a lot innocent flash applications to get stuck in the crossfire if their developers are not prepared  or are not aware that their application will be nobbled by this update.

Wednesday, March 12, 2008 4:27:13 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Monday, March 10, 2008

If you just try and install it normally from the Microsoft Live website, the installer Bork's and tells you that its not for Server 2003.

Its just that the installer does not work under the 2003, not Messenger itself.

The solution is to.

  1. Hunt down version 8.0.XXX.
  2. Install it.
  3. Let it upgrade itself.
  4. Joy!

I installed Windows Live Messenger 8.0.0787 and it worked fine on Server 2003 R2

Monday, March 10, 2008 2:21:21 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [2]
 Tuesday, February 26, 2008

If you set up a TeamCity server, don't tell it to check out your project into a path that is root of a drive.

team_city_ate_my_hd_0.png

Don't Try This At Home Drive

You would think that checking out ModuleX into "Checkout Directory" C:\ would result in

C:\ModuleX\

That's how CVS and SVN clients normally operate and you would expect.

But it looks like TeamCity takes the root of the module as the path itself OR it decides that the checkout directory needs to be emptied for some reason, possibly at config time to prevent any issues with dross left behind from previous builds?

So now I have established that TeamCity by default seems to empty the "Checkout Directory"

Which in this case is C:\

I managed to fry two machines before working out that TeamCity has this highly dangerous gotcha.

The first time I thought this was a Windows Update that went rogue.

In the second machine I tried this on E:\ where TeamCity was also installed. 

Now I can't uninstall TeamCity at all.

That's two machines to rebuild.

Out Poor System Adminstrator (He made me type that) :)

I would not be upset if I thought I had done something stupid, like pressed the button that said "Delete Everything And Your Little Dog As Well".

The default settings telegraph nothing of the impending right hook to your hard drive.

team_city_ate_my_hd_1.png

Mostly Harmless

 

My recommendation would be that the Config page warn that the directory will be emptied and maybe even give an obvious shrill warning if that's the root of a drive.

Maybe C:\ should be right out?

Telling you where files would be created (and destroyed) would go part of the way to deciphering what you are going to end up with. At the moment its a black box of string concatenation via hidden logic with hidden results.

Now that I have the model of what is going on in my head I won't make that mistake again.

Its just a pity that I had to learn it.

 

Tuesday, February 26, 2008 6:09:04 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [1]
 Sunday, February 24, 2008

IMAGE_522.jpg

Matter by Ian M. Banks

May contain spoilers.

Thank goodness because its been 8 years since the last novel featuring The Culture and I was beginning to give up. Mind you I consider "The Dwellers" from The Algebraist to be the "The Affronters" from Excession which could put it in the same Universe, although probably Pre-Culture - a stretch I know, but their description and behavior seem identical and ...

...yes I like the Culture books that much and you can start slowly scrolling quietly backwards now.. :)

The book delivers on some good Culture ship names ("ROU: You'll Clean That Up Before You Leave"), a possibly homicidal Drone disguised as a dildo and some "Special Circumstances" action. For my liking there is not enough Knife-Missile play, but is there ever?

The final showdown takes 95% of the book to set up, and is set in a medieval shell-world using the plot device of "the boy who would be king usurped by his regent". Per weight the book is more of a medieval political thriller with a guest appearance by the Culture.

Despite that, the 5% at the end is full of some some hard and fast anti-matter lobbing, field flicking and plain old nuking from orbit till they glow in the dark, cause as we all know its the only way to be sure :)

Everyone who dies does so suddenly.

I liked it.

PS. Read past the liberal Appendix or you will have no idea what happened at the end.

Sunday, February 24, 2008 11:12:52 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Friday, February 22, 2008

From Andy...

DSC00121.JPG

Friday, February 22, 2008 2:39:49 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Thursday, January 31, 2008

My first "post" of the year - work has been keeping me very busy.

Looks like there is a lot happening in the world of Wii homebrew :)

http://www.virtualhosting.com/blog/2008/how-to-homebrew-wii-games-73-tips-tutorials-and-resources/

 

Thursday, January 31, 2008 6:17:59 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Sunday, December 23, 2007

Pebble bed reactors will be safe and available in 20 years. We will be left with the moral question of who disposes of the waste, the country that used the fuel or the country that mined and sold it, and of course how do you stand guard over it for hundreds of thousands of years. I favour dropping it into the sun, mind you if we had the energy to do that we would not need to build more reactors :)

There is of course one non technical reason that will stump the pro-nuclear lobbyists for a few generations to come.

When someone mentions "Nuclear Power Station" the first thing that pops into my head is.

Homer J. Simpson

I foresee in twenty years time a rewriting of history, a publicity campaign at which the core will be the redemption of Homer as Nuclear Plant Safety Officer to defuse this little gem of bad publicity. 

Sunday, December 23, 2007 11:55:23 AM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Tuesday, December 04, 2007

Got a report that by blog has stopped working in Firefox. "Bad Element in position 1,1"

Tested it myself and all I got was Blank page.

I decided - now was the time to upgrade to the latest version of dasBlog.

Alas when I went to the dasBlog site I got the following message.

dasblog.jpg

I think I will wait for the bugfix :)

 

 

Tuesday, December 04, 2007 6:25:30 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Monday, December 03, 2007

Elizabeth Sladen is to me, what Felicity Kendal is to Rick, The People's Poet

When I was a lad watching Dr Who, Elizabeth Sladen (Who played Sarah Jane Smith) was certainly one of the sexiest things on TV.

After watching the 2007 pilot for The Sarah Jane Adventures, I can confirm she is still as cute as a button.

vlcsnap-2890374.jpg

Elizabeth Sladen holding back the hordes of 30-something Dr Who fan-boys

Monday, December 03, 2007 5:49:52 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [1]
 Sunday, December 02, 2007

I remember 15 years ago talking about the logical progression of gaming hardware and predicting that consumer demand would end up putting superior performance in the games consoles, and then they would then be used for "evil".

The future is weirder than we can imagine.

Hot on the heels of the more esoteric hijacking of a gazillion parallel 4x3 matrix operations in video cards to crack passwords.. we have...

"Security researcher Nick Breese used a PS3 to crack supposedly strong eight-character passwords in hours.

...

In a presentation given at the Kiwicon security conference in mid-November, Mr Breese said a powerful Intel chip could crank through 10-15 million cycles per second.

The architecture of the Cell processor meant it could speed through 1.4 billion cycles per second."

http://news.bbc.co.uk/2/hi/technology/7118997.stm

My next prediction is that every Iranian child will get a PS3 for of all things, Christmas, only to have them  mysteriously taken away on New Years Day and installed in a giant underground bunker where they will be set to work simulating nuclear criticality. That, or the worlds largest Virtual Reality porn server farm.

Probably both.

Sunday, December 02, 2007 7:05:41 PM (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0]
 Monday, November 26, 2007

There is an unwritten social contract between we the punters and social networking sites that make money by data-mining our activities and targeting ads at us.

 

That contract is essentially that we will let them have our personal data in return for cool services.