Wednesday, September 26, 2007

Anime — Claymore

A shonen series about girls with implausibly large swords who fight demons (and on occasion, each other -- and on other occasions become or nearly become demons themselves, to be fought) in a Japan-does-D&D-Europe fantasy world. That means the usual ration of power-ups, but for this one, not so much shouting of attack names -- just body parts falling off and gouts of blood under high pressure.

So what starts out as demon-of-the-week rapidly evolves into super-hero type fighting (but with deaths), secret origins, mysterious organizations and crossed agendas, and small armies of high-level beings on both sides, before the massive one-on-one battle at the end that all this has set up.

Entirely harmless, but marred by the most incredibly annoying male side character (worse than Shinji) I have encountered for a long while. Without the encumbrances of having read the manga, I was not disturbed by any shuffling of the ur-plot towards the end, but felt that it did its best to tie things up while leaving an eventual second series possible.

Links for 26-Sep

The Myth of Software Estimation + Part 2

Steve McConnell on estimation in practise -- reaction

Cardspace 3.5 can operate without SSL

Tuesday, September 25, 2007

Links for 25-Sep

IronPython - My .NET Exploration Tool -- in the spirit of the little bit of exploration code in the previous post on registry watching

AD FS on 2008 Server -- trouble shooting guide

Java Idioms collected

Watching Files & Registry keys from .Net (incl IronPython)

Registry watching

As I've noted before, the System.Management namespace has a lot of WMI-related goodies in it. In particular it includes analogues for the RegistryTreeChangeEvent, RegistryKeyChangeEvent and RegistryValueChangeEvent behaviours.

You can get at them as follows

  1. Create a suitable  System.Management.ManagementScope object -- e.g. scope = new ManagementScope("root\\default");
  2. Create a new WqlEventQuery, call it q, and set the EventClass like q.EventClassName = "RegistryValueChangeEvent";
  3. Set the appropriate condition depending on the event class -- 
    • For Tree change q.Condition = "Hive='HKEY_LOCAL_MACHINE' and RootPath='Software\\\\RavnaAndTines' ";
    • For Key change q.Condition = "Hive='HKEY_LOCAL_MACHINE' and KeyPath='Software\\\\RavnaAndTines' ";
    • For Value change q.Condition = "Hive='HKEY_LOCAL_MACHINE' and KeyPath='Software\\\\RavnaAndTines' and ValueName='my key'";
    where the path '\' separators must be double escaped (or escaped even if you use an @-qualified string in C#)
  4. Create a ManagementEventWatcher(scope, q) and add an appropriate EventArrivedEventHandler to the EventArrived property
  5. Start() the watcher (probably in its own thread, unless you can create it before the application main loop).
  6. As part of application termination, Stop() the watcher and Dispose() it.

Alternatively, the WqlEventQuery query string could be set manually, in which case it would be of form like

select * from RegistryTreeChangeEvent where Hive='HKEY_LOCAL_MACHINE' and RootPath='Software\\RavnaAndTines' 

Presumably with more SQL-fu one could build a portmanteau query to look at multiple events, rather than creating one watcher per key or value.

The event handler looks like EventArrived(object sender, EventArrivedEventArgs e); the latter argument's NewEvent property is a name/value collection representing the WMI event, like

For Tree change

Hive = HKEY_LOCAL_MACHINE
RootPath = Software\RavnaAndTines
SECURITY_DESCRIPTOR =
TIME_CREATED = 128351151930418266

For Key change

Hive = HKEY_LOCAL_MACHINE
KeyPath = Software\RavnaAndTines
SECURITY_DESCRIPTOR =
TIME_CREATED = 128351153191840662

For Value change

Hive = HKEY_LOCAL_MACHINE
KeyPath = Software\RavnaAndTines
SECURITY_DESCRIPTOR =
TIME_CREATED = 128351161584291834
ValueName = my key

and can obviously be common code for all watcher objects

Sample code

IronPython script used for rapid prototyping/validation

File System watching

This is much simpler, in that the behaviour is kept into one object (System.IO.FileSystemWatcher).  there are complexities about multi-threading (if the object is being invoked in conjunction with UI objects); and for handling situations where there is a high frequency of changes expected (by configuring how much space to devote to buffering events).

The FileSystemWatcher is supplied with a directory path, a flag to say whether it should recurse through sub-directories, and a simple filter string to determine which files to watch.  Event handlers are then added to the appropriate property (Changed, Created, Deleted, Renamed). The object is then enabled by setting its EnableRaisingEvents property.

The object is, like the ManagementEventWatcher, an IDisposable, but is stopped by clearing the EnableRaisingEvents property.

The event handler looks like EventArrived(object sender, FileSystemEventArgs e); this gives the type of event and the path and name of the file (the new name in the case of a rename, the object being sub-typed to also have an old name and old path property).

Monday, September 24, 2007

Links for 24-Sep

When windows are not enough -- there is still the command line

Bringing the browser to the server -- server-side JavaScript + browser-focussed JavaScript toolkits = test automation + whatever else you can think of

Collected Java Practices -- a collection of wheels for not reinventing

Saturday, September 22, 2007

;_;

http://economist.com/obituary/displaystory.cfm?story_id=9828615

Over to you, Mr. Praline.

Anime — Ghost in the Shell : Stand Alone Complex

Two things I don't like about watching anime on DVD. First, the slow and lumpy release schedule; second all the menu navigation stuff.

I had watched this series before, but the aforementioned lumpiness really broke the flow. I have re-watched it in a more concentrated batch, where it can be appreciated, and usually managing not to get caught into the "I have fought through the set-up and am playing episodes back-to-back, so let's watch the whole disk…" trap.

This series vaguely follows some of the thrust of the manga and the first of the movies; but is rather more police procedural (for a Total Information Awareness society) in approach. This does not stop there being episodes spent in just philosophical discussion (and some of the procedural-style episodes are pure vehicles for the philosophy) of what memory and identity become in this age where parts of us are distributed (see blog title). And, possibly unintended, despite the political angle behind the main plot (the Complex Episodes, as opposed to the StandAlone ones), showing what even an inherently benevolent organisation can do in a highly recorded and monitored environment.

In the earlier episodes, the animation is occasionally a bit skewed and off-model (QUALITY, if you know what I mean), but there is usually enough going on for that not to detract.

Brute force gardening

Three weeks later than I'd intended (teeth, you know), I finally had weather and enthusiasm to check the elder tree behind the garage, which was looking rather sad.

And, yes, it was showing signs of fungus again, as expected. So spent most of the afternoon taking down chunks, clearing away ivy, and giving an unseasonable pruning to the (with the tree gone) clearly overgrown forsythia next to it -- taking advantage of the mild (and later fine and sunny) weather to be out in.

Four big logs and a green bin full of shreddings, it was time to call a halt, with plenty of main trunk left to take down. There are a couple of sections that will be easy, and at least two that will take a long time to saw through. Well, so long as it is done by Bonfire Night, when the big bits can go on the village bonfire…

Friday, September 21, 2007

Sand

One of the major features of the southern and eastern part Suffolk is the sandy soil. A fact brought vividly to home when cycling down narrow (single lane and passing places) country lanes, where only the usual tramlines are clear of sand.

This means that when there is traffic trying to pass (like every few minutes), hugging the hedge means being forced into deep and drifting sand, and hence coming to a dead stop. Fun on the up-hills, and plenty more fun at downhill junctions (like this one) where I'm heading south and downhill and am about to make a right turn and up, and the junction is pretty much awash in sand.

The contrast is low in the Google image, but at the moment, you can just about make the sandy borders out, though tree-shadow hides the fun-fun sand-trap that I nearly skidded out on.

Thursday, September 20, 2007

Homeward Bound

Iken Church

Iken Church

Breakfast starts late here -- 08:30 -- so after carb loading, I'm on the road by 09:30. It's a milder but windy morning, with cloud coming up fast. And for most of the route, after I leave the coast, I'll be heading straight into it.

Aim up the coastal cycle route past Iken to Snape Maltings, then head through Campsea Ash to cross the A12 at the same easy place as before, just after 11, through Hasketon to pass the Dog Inn at Grundisburgh just as they're opening. I take this as a sign, and stop for a beer.

Refreshed, I continue, with the wind strong enough at times that I have to pedal hard downhill to keep up speed. Through Swiland, past Ashbocking, and stop again at the Cross Keys near Henley for lunch -- a chilli jacket.

Last leg, I can't be bothered with trying to cross the A140, so turn through Claydon and Great Blakenfield to pass under the A14 before that junction, and, having got caught at the level crossing, can feel spits of rain in the wind as I hit the closing leg.

The rain arrives just as I reach the base. A brief pause to adjust luggage, then off into the showery rain home. At least I don't feel I have to mow the lawn.

Wednesday, September 19, 2007

Framlingham to Orford

Martello tower

Martello Tower

The sky was bright and clear when I woke at 06:30, and soon the early sun was apparent, too.

After a so-so breakfast, I was on the road by 08:30, and already cloud was brewing up, leaving by turns, hazy sunshine and cloud, though much milder than yesterday, with the strong wind now from the south-west.

As the forecast was for rain in the afternoon, I set my itinerary to arrive at Orford about lunchtime -- through Wickham Market and crossing the A12 on a bridge, towards Ufford (having to dodge sprinklers that have irrigated the road as much as the fields) and passing Sutton Hoo before 10. The sun is winning at the moment, so I take off my jacket, before heading down through Shottisham, through country lanes heavy with the scent of the onion harvest, through Alderton to hit the coast at Bawdsey East Lane by 11.

Hereat the coast it was cold enough to want a jacket; but the weather was still not looking ominous, and plenty of time to hit the 2pm first check in, 3pm end of lunchtime hours at the King's Head, so I decided to try at least part of the walk I'd wimped out of a couple of years ago, and pushed along the coast up to Shingle Street, passing more Martello Towers in various states of renovation or dereliction.

The path emerged from an obscure piece of hedge I'm sure I would not have spotted from the north, to reveal that not only is work going on on the tower here, but the phone box, labelled as scheduled for removal shortly after my last visit, is still there and has a phone in.

A bit back from the coast, and it is sheltered enough to take the jacket off; and push on ahead of weather that is starting to look threatening

Capel St Andrew

Village Sign at Capel St. Andrew

Get to the King's Head just before 13:00, order a beer and contemplate lunch. A rush appears immediately I have sat down, so I take most of the pint waiting for it to subside, then get another pint and their paté. It's still not 2pm when I'm done, so another beer, as the sky goes dark outside.

After than pint, it is a sensible time to check in; and go up to a room over the bar, which shows the age of the building (13th C) by having a serious sag in the middle of the floor. And also a king sized double with duvet, not the singles with sheet and blanket in the previous places.

After a bath -- being amused at the sign apologising that "The showers don't work -- not a new song from the Verve, but a lack of water pressure" -- crash.

Wake about six with late sun streaming through the window. Freshen up, get dressed, and amble over to to the Crown and Castle for dinner. Ginger Beer as aperitif; pork and pistachio terrine, followed by devilled kidneys, with a glass of rosé, then berry and apple crumble with real custard, and coffee.

Feeling full. No open WiFi here, so just jot these notes for later. Now for more bed.

Tuesday, September 18, 2007

Needham Market to Framlingham (the long way)

Framlingham Castle

Framlingham Castle, from across the mere

Woke up (for the nth time) about 06:30. The sky was grey with cloud, not just being just before dawn; and the road outside looked damp. This was not the bright day that the forecast suggested.

Leisurely breakfast, and a quick stroll at about 08:00 to judge the temperature -- cold enough for breath to steam, and a strong wind, bringing only brief snatches of blue sky. An hour later, somewhat more blue sky, and the sun was warm when it was visible.

Setting out towards Debenham, it was clear from the damp and the puddles that the rain must have been quite heavy.

Taking it easy, reached Debenham by about 10:30, and then carried on the long detour to Stradbroke, intending to stop there for a pint. Alas, the White Hart looked very shut at 11:45, though supposedly opening at 11:30 -- so rather than just kick my heels until 12, carried on through Wilby (stopping for a picnic at Wilby Green, as the cloud had now pretty much all burned off, and it was pleasant when sheltered from the breeze), then to the Old Mill House at Saxtead Green for a beer.

The post mill was closed and also being repainted; so as it was still only about 14:00, carried on for a long loop around Framlingham to the south, partly checking out some of tomorrow's route, before looping back to pass Shawsgate Vineyard (only a very small patch of vines visible through hedges), to enter the town from the north, passing by the foot of the castle mound. Recollection from last time took me pretty much straight to the car-park at the back of the Crown Hotel.

Checked in, then discovered WiFi, so this time took the hit to reconfigure the networking. Strolled around in T-shirt in the bright sun -- though I have experienced warmer February days, it was marginally comfortable to leave the jacket off -- deciding where to dine.

Decided on Off the Square, just a few yards further towards the castle, where I had chicken liver and wild mushroom for starter, and goats cheese and spinach gnocchi for main. It may have been a bit nouvelle cuisine but together they were substantial enough that I didn't feel the need for dessert.

And so to blog…

Monday, September 17, 2007

A holiday — day-ride at Needham Market

The Castles and Rivers tour

Badley Church

Badley Church -- Tudor construction

A dull day, with heavy showers forecast. Not a promising start.

After getting checked in at the Limes Hotel, drove over the the base at Alder Carr Farm, parked the car and picked up the bike. This time, a 48cm frame, so I just needed to fiddle a little with the seat height and I was comfortable. And then a spin to get used to the Shimano gears (remembering which lever changes up on which side).

This was about 13 miles, a bit off-road, and a bit of footpath to push along, in a stiff breeze with just a hint of dampness, with dark clouds scudding past. Already, the first hints of autumn colours in the trees.

Portions at dinner are heroic -- they were out of the steak and ale pudding that had been my first choice, so I chose from the so called smaller portions to be starting with. Potato skins. Well actually, it turned out to be a substantial jacket potato just split in two and buried under a huge pile of cheese, bacon and chicken. One of the other people in the bar took up their Monday beer and curry offer, and was served a simply enormous bowl So I probably did the right thing in the end.

Stroll in the twilight for digestion. Another beer for luck, and so to write this up. Hmm. Looks like they do have WiFi here, but I can't be bothered to reconfigure my network now -- I just want to crash.

Sunday, September 16, 2007

Anime — Busou Renkin

A fairly typical shonen fighting series, with power-ups, shouting Engrish attack names (Like "Silver Skin -- Another Type -- Reverse!", "5100°C Blaze of Glory!!!" and "Near-death Happiness!") and what-not; but one with character designs that caught my eye. While the protagonist fights in civvies, and some of the background characters are in uniform, there is a slight touch of US-style superhero costuming, like the madness that is Moonface, the indestructible Captain Bravo, and the ever so fabulous Papillon.

It's all done in a fairly straight and good-humoured style, the wacky Japanese slapstick isn't too retarded.

An entirely frothy way to waste a week-end (being only 26 episodes, rather than one of the never ending series more typical of the genre), when you just want to kick back and let the brain cool down.

Wednesday, September 12, 2007

Links for 12-Sep

XAML to SVG and back again -- deliver vector graphics to IE/Silverlight or Mozilla

10 reasons to learn use Ruby

Copy Source as HTML -- VS2005 plug-in for copying syntax colouring

Designing for the iPhone -- part 1; part 2

Monday, September 10, 2007

Tuesday, September 04, 2007

Monday, September 03, 2007

Teeth

Had an appointment this morning to start putting a crown on the tooth that was root-canalled around the turn of the year. But the published scheduling was interrupted by the twinges in another tooth having turned into full fledged toothache from about Friday lunchtime.

So, lots of prodding and testing to find which tooth it was that was causing half my face to feel like it was falling off. One tooth didn't react to ether chloride (cold!); nor to having large amounts of current run through it, so eventually it seemed that it must be the one at fault, needing some unscheduled root-canal work because of nerve die-back.

So I've just had a batch of root canal work done on a not completely dead tooth without anaesthetic and am going to fall over. I now have at least 4 more appointments ahead of me to patch all this up.

Later -- slept through to the next morning with only a brief pause for some food, the first of the day, at about 19:30.