Aargh. I just broke one of the cardinal rules. Never say anything you don't beleive to be true.
I love to say "I told you so".
I read Chris Case's break-up note to his I-phone with great amusment.
I wonder if Ben (who has left a void in a village somewhere to become my blog stalker) will berate him for the violence of saying "that it's best to sever ties now while we still both have our dignity and I have not smashed you on the sidewalk in frustration"
The last person I punched was a schoolboy. Before you report me for child cruelty, I should point out that I was a schoolboy myself at the time, and that makes it at least a quarter of a century ago. As befits someone who went on to work in IT punching people was something I wasn't very good at, which may explain this long period of non violence. Only the presence of some very large policemen, a timely phone call and a man called Rod Green prevented that record coming to an end on Friday night.
Over the next week or so Microsoft employees descend on Seattle for the "Tech ready". This brings me back into contact with the Microsoft Travel portal. Steve has talked about,and I I said of it "this tool is to Web Usability what Scrapheap Challenge (or Junkyard wars in the US) is to automotive styling". To add to its other faults I discovered it dies if the IE7-Pro add in is installed. I don't know what acceptance tests we did on it but it won't book travel to Seattle.
So I called the people I know as "American Excuse", The agent asked if I was going to tech-ready "We can't book that you have to e-mail another office". So I did that. They sent me a form to complete with my contact details (all of which are in my e-mail signature) and booked me on Friday's BA flight, I'd rather fly SAS but hey.
I decided to leave my car at home and take the train to the airport. But on Friday we had more rain than even a British summer is used to. Seconds after my wife left me at Didcot station I found that the subway leading to the London bound platform was flooded. Station staff, were using a wheel chair to ferry passengers from the last train which was allowed to stop through the floods. Passengers for London were told to go 25 miles the other way change trains at Swindon and come back. But by the time I'd traveled 50 miles to avoid what was basically a large puddle the rest of the journey into London was looking a uncertain. I told one of the staff: if their use of the wheelchair was remarkable, then the response to this was astonishing. "if you hold on a moment while we sort out a form, we'll pop you in a Taxi". Major customer service brownie points for First Great Western.
Two minutes into the taxi ride my phone buzzed; I love Exchange push mail and Windows Mobile 6. The message read.
From: British Airways Customer Services To: James O'Neill Sent: 20 July 2007 13:37Subject: Cancellation - BA0053 LHR to SEA on 20 Jul 2007 : ref [deleted] Dear Customer, We regret to inform you that flight BA0053 from Heathrow (London) to Seattle on 20 Jul 2007 has been cancelled. Please accept our apologies for any inconvenience this may cause. We have sent you this information as quickly as possible by automated email and hope it reaches you in time to allow alternative arrangements to be made. Please do not respond to this email as we will be unable to reply. It may be possible to view your options and rebook or cancel your flights on ba.com. To check please click the link below: http://www.ba.com/mmb Alternatively, please call us on: - United Kingdom 0800 727 800We suggest you also contact your booking agent for any further changes to your travel plans.
From: British Airways Customer Services
To: James O'Neill
Sent: 20 July 2007 13:37
Subject: Cancellation - BA0053 LHR to SEA on 20 Jul 2007 : ref [deleted]
Dear Customer,
We regret to inform you that flight BA0053 from Heathrow (London) to Seattle on 20 Jul 2007 has been cancelled.
Please accept our apologies for any inconvenience this may cause.
We have sent you this information as quickly as possible by automated email and hope it reaches you in time to allow alternative arrangements to be made.
Please do not respond to this email as we will be unable to reply.
It may be possible to view your options and rebook or cancel your flights on ba.com. To check please click the link below:
http://www.ba.com/mmb
Alternatively, please call us on:
- United Kingdom 0800 727 800
We suggest you also contact your booking agent for any further changes to your travel plans.
We park the taxi while I call BA - busy. Call the Microsoft travel emergency number - a recorded message tells me to it's an out of hours only, and to redial the normal number. I do (why not do the re-routing for me ?). "Oh" says the agent "We can't access that booking from here You need to call the group people", at which point we get cut off. I use the Search Server feature of Windows Mobile 6 to find the mail with their number-it's not in a dialable format. Mobile 6 - unlike my previous phone - lets me fix it. The agent at the group bookings place promises to ring BA right away and get back to me. Twenty minutes later I call again. Another agent says they've compiled a list of people on the same flight and will be calling BA soon. I try to access the BA's web site from my phone but it never leaves a "please wait" screen. The taxi driver and I decide to head for Heathrow airport even if we end up turning round and coming home. I forward the mail to my wife who tries to rebook the flight on BA's web site. Errors Occur. The travel agent calls back and says they can't rebook my flight (why not ?), and to continue to the airport. They suggest rebooking my flight at Terminal 1 rather than 4 where I was due to depart.
The situation at T1 merited the description of "a large crisis" hours before I got there:141 flights canceled, with BA hardest hit. The rebooking queue snakes round the terminal, and most of the way along the link to Terminal 2. Heathrow's own website has some harsh things to say T1 and T2 so chose to wait in T4 - though it turned our I'd be waiting for 5 hours in a tent outside; things are so bad so often that BA have two Marquees permanently set up outside. My phone's call history tells me the call I made when I joined the queue was at 15:55. Its Internet connection sharing let me try the BA web site from my laptop, it can't handle substitute routes (via New York, Chicago, Atlanta etc) never mind a change of airline are beyond it,and direct flights are all full. I try BA's executive club who answer and sound helpful, but can't change route either. Aargh. An American next to me needs to be in Paris, and has no cell phone - so we get onto Eurostar to confirm the trains are running. It's 16:45 and we work out that he can probably get to Paris by 20:20 London time - before he'll be at the front of the queue.
I mail the cancellation note to Steve who blogs about things to do if stuck at Heathrow. These assume you are checked in and not stuck outside in big tent. Things get so bad that BA bring us some sandwiches; and people eat them. I don't want to talk to anyone round me so I start on the book I've brought and plug my headphones into the phone and put some music on. I can't help laughing when Monty Python's "Always look on the bright side of life" comes on.
I'm not laughing at 21:10. Two of the metropolitan Police's biggest firearms officers stroll through our tent as nonchalantly as is possible when you have a semi-automatic weapon strapped across your chest. Someone from the airport (not BA) announces that after 5 hours 15 minutes waiting, we won't be "processed", because the BA staff want to go home. I shout at him - why didn't someone figure that out hours ago and save hundreds of us some of the wait. He doesn't give me a proper answer and I want to punch him. He's only the messenger. I bet those policemen were sent by an Inspector who's seen this before. "Remind 'em that you're their to provide protection from passengers as well as protection of passengers". Rage rolls in and I know why people call it a red mist. What I want most in the world is to punch someone from BA, I'm imagining the punch (a right hook) I wonder if other passengers will join in. The policemen make me hesitate- I picture myself defying them, and more (only later do I realize getting into a fight while traveling on company business could get me fired). Then the phone rings and the moment for punching people is gone.
I hang up the phone call and find myself asking a BA chap who I complain to - they didn't have to wait so long before telling us they were going to stop processing. The man's name badge bears the name Rod Green. He's volunteered to come down from the BA office to do what he can. 20 or 30 like him could have made a noticeable difference in the last 5 hours. They've had half a dozen. Rod makes a phone call, and finds me a substitute flight which works. If he worked for Microsoft I'd get him a customer service award.
BA has a problem. They have plenty of people who could do what Rod did, but when they needed them to show some passion for customer service, all but a very few went home.
Now I had to get home. Avis have earned my loyalty with a couple of great bits of customer service, their people really have justified their "We try harder" badges. A sign at their desk said get straight on the courtesy bus... Across the airport - a customer is shouting at an Avis rep who is trying to stay calm."I'm not arguing with you" he says, "I'm the customer. You have to argue with me" comes the reply. The lady dealing with me makes that slight sucking sound when I say I haven't reserved a car. I know that noise - and I picture myself losing it - in the style of Steve Martin in the film "Planes Trains and Automobiles". Then she said "I can't offer you much choice...". And for the first time since "Always look on the bright side of life" I smile.
I thread my way home avoiding places I know are flooded.The neighbouring village to mine was badly hit, with the fire brigade pumping out the pub. We had our drains rebuilt after being flooded with "foul water" twice around 2000, and the system held up. It only takes a small amount of water to cause chaos. I draft this post and go to sleep. In the morning I read Hugh has been flooded; grim. We had clean-up people out the next day, but they're going to maxed out for a while.
.
I hate it when a web site demands you register and asks you for everything from your date of birth to your shoe size. And I'm painfully aware that some Microsoft sites are part of this tendency. We do try group people in some broad buckets either to send them the right information in the future, or to get an idea of who we reached with a particular item. Job title helps with that, some people either get exasperated with the forms or have a sense of humour or have very strange business cards. I should talk ! Some people think "Evangelist" is quite a funny thing to have on your card
Here's the list of some of the titles we've seen
I do wonder if "Cross Stitch Pattern Designer" is a reference the Jacquard loom. And I think I met the Chief Snoggable Officer
The news is on the Microsoft Press Pass web site.
Eileen asks "So how do I get my team to read my emails ?"
Actually, she overlooks something very simple and important. Rule one: the nearer the author is to the reader in the company hierarchy the more likely the message will be read. If someone at the very top of Microsoft wants something done I could ignore their mail and wait for the reminders which come from someone nearer me. (In practice I don't because Messrs Gates and Ballmer follow the rules below). Eileen's only one hop from me so it's nearly certain I'll read her mail, even if she breaks all these rules. What could she do to stop me reading what she has to say ?
Don't get to the point . Typically short term memory is about 7 seconds. Rule two is Give the reader a reason to read the whole message in the first 7 seconds reading. Otherwise they may not bother. If the first 2 dozen words contain "Please can you ...", "It would be great if we...", "I'd like to see..." that makes it clear action is required, but - it's amazing the number of messages that don't start with the WHAT, but give lengthy WHY - a review of the state of the world. Their 7 seconds is up before their closing "Call to action" is read. Messages with PLEASE READ in the subject line beg to be deleted on sight, because it's a fair bet the author doesn't give you anything in the message to make you want to read it.
Only use Outlook. We have IM, SMS texting, Phones, face to face "coffee meetings". Rule Three Choose the Medium which suits your message.Eileen mixes her media more than most people.
Assume I always read in Outlook if I get a message where the key part is in an attachment I can't read on my smartphone, or is text in a graphic which Outlook voice access can't read then the best it can hope for is that it stays in the pile of stuff to come back to. It may just get deleted. Rule four Make sure your message is in the message (body).
Mail the world. Douglas Adams had the idea of a "Someone Else's Problem" (SEP) Field. Behavioural scientists have found When people won't deal with things they think can be left to others. Rule Five. The probability that any reader will act on your mail declines with the other number of readers of the mail. Of course is there is also the serial forwarder - the person who forwards everything to everyone. Sometimes with the prefixing "Filling your inbox" or FYI.
Write clumsy English. This has got worse with Outlook voice access, which uses punctuation intelligently. Long sentences with little punctuation are even harder to understand when read by a machine. Here's an example: The first 99 words of a mail. 3 sentences 1 comma, and NO IDEA WHAT HE WANTS.
Further to blank’s email to all employees I wanted to follow-up with a UK specific reminder and call to action about [blank] '07. In FY06 we introduced some significant changes to the annual blank blank process as part of the launch of the blank initiatives. In FY07 we are consolidating those changes and making further adjustments based on feedback received from across Microsoft – all with the continued aim of ensuring our blank blank process is world class and focuses on driving business results through quality blanks, transparency in our approach to blank blank and greater manager empowerment & responsibility.
Note the use of "Introduced some significant changes to" where the word "Changed" would have done. I recently pointed my Dad to my post about this kind of writing. He worked for a big American company too, and bought people copies of Gowers' Plain Words. Maybe I should follow his lead. My copy of the 1986 edition has this quote from George Orwell
A Scrupulous writer in every sentence he writes will ask himself ... what am I trying to say ? What words will express it ... and he probably asks himself can I put it more shortly. But you are not obliged to go to all this trouble. You can shirk it by simply throwing open your mind and letting the ready made phrases come crowding in. They will construct your sentences for you - even think your thoughts for you to a certain extent - and at need the will perform the important service of partially concealing your meaning, even from yourself.
Even with out the text, I evangelize Gowers' message. Be brief; be clear; be human. Eileen is. Gates and Ballmer are, so is Gordon Frazer. It's not universal.
My PowerShell project for the last few days has been to get into the EXIF data which is embedded in Pictures. It turns out to be a bit easier than I imagined.
The first thing I found is that the .NET framework has a "BITMAP" object-class which gives access to these properties. Just get a new instance of the object passing it the file name: this works for JPEGs and TIFFs. It doesn't work for RAW files from my camera (presumably because Windows doesn't see those as bit maps)
The Second thing I found is Powershell doesn't load the required assembly by default - which spawned the earlier post about VB complementing PowerShell. So before I can get the object I need to do this
[reflection.assembly]::loadfile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll")
Then I can do this
$foo=New-Object -TypeName system.drawing.bitmap -ArgumentList "C:\Dump\Unsorted Pictures\Tour\RAW\TdF23760.JPG"
The object has an array of propertyItems . Each PropertyItem object has an ID, a type, a size, and a value. This is pretty flexible but it is also a darn nuisance for anyone wanting to code for the first time, because you have to know, for example that field ID 271 (or 0x010F in hex) means "Maker name", and type 7 means string. or ID 41996 (0xA40C hex) means "Subject distance" and type 3 means 16 bit integer; but the value isn't in feet or meters but a value of 1 Means "Macro", 2 means "Close" and 3 means "Distant". Worst of all 37380 (0x9204) means "Exposure compensation" and type 10 means "Expressed as the Ratio of 2 32 bit signed integers".
$foo.GetPropertyItem(271) will get the Maker name property (if it exists - it will return an error if the property hasn't been set), but before we can get properties we're interested in we need to find a list of IDs. I've already got EXIF UTILS from HUGSAN and it's documentation covers ID, so does the competing EXIFTOOL and there are others. Here are the main fields - not an exhaustive list.
For completeness here's a table of type codes.
All these types might make you want to scream but we can cheat. Since all the integers seem to be padded with zeros, we can treat them as long integers. In practice no long integers are used to represent numbers greater than 2^31 so we can treat unsigned Long integers (and ordinary integers) as signed. Finally, Rational numbers are sometimes written as 0,0 to mean 0, but this will cause a divide by zero error. To avoid this we can change the second number from 0 to 1. Since the single number like 123 is padded with zeros to take the same space as a long, if we treat it like a rational well get 123 / 0 which we convert to 123/1. So we can treat ALL numbers as ratios of signed longs. I'll add one more refinement. If the value is 1/123 then it's probably representing a shutter speed which I want to see in that form, not 0.00813. So I just need to write [fanfare] my first PowerShell function. I can type this in at the prompt (deja Vu for commodore and Applesoft basics which I mentioned recently)
function MakeNumber {$First =$args[0].value[0] + 256 * $args[0].value[1] + 65536 * $args[0].value[2] + 16777216 * $args[0].value[3] ;$Second=$args[0].value[4] + 256 * $args[0].value[5] + 65536 * $args[0].value[6] + 16777216 * $args[0].value[7] ; if ($first -gt 2147483648) {$first = $first - 4294967296} ;if ($Second -gt 2147483648) {$Second= $Second - 4294967296} ; if ($Second -eq 0) {$Second= 1} ; if (($first –eq 1) -and ($Second -ne 1)) {write-output ("1/" + $Second)} else {write-output ($first / $second)}}
function MakeNumber {$First =$args[0].value[0] + 256 * $args[0].value[1] + 65536 * $args[0].value[2] + 16777216 * $args[0].value[3] ;$Second=$args[0].value[4] + 256 * $args[0].value[5] + 65536 * $args[0].value[6] + 16777216 * $args[0].value[7] ;
if ($first -gt 2147483648) {$first = $first - 4294967296} ;if ($Second -gt 2147483648) {$Second= $Second - 4294967296} ; if ($Second -eq 0) {$Second= 1} ;
if (($first –eq 1) -and ($Second -ne 1)) {write-output ("1/" + $Second)} else {write-output ($first / $second)}}
The first two lines, smash the two sets of 4 bytes together, the next two lines convert large-enough numbers to two's compliment negative ones, the 5th line ensures we don't divide by zero but divide by one, and the 6th makes sure if the result is 1/ something it comes back as a fraction.
PS C:\Users\Jamesone> "Shutter speed= " + (makenumber $foo.GetPropertyItem(33434))Shutter speed= 1/160PS C:\Users\Jamesone> "Apperture= f/" + (makenumber $foo.GetPropertyItem(33437))Apperture= f/3.5 PS C:\Users\Jamesone> "ISO= " + (makenumber $foo.GetPropertyItem(34855))ISO= 100 PS C:\Users\Jamesone> "Width= " + (makenumber $foo.GetPropertyItem(40962))Width= 3872
PS C:\Users\Jamesone> "Apperture= f/" + (makenumber $foo.GetPropertyItem(33437))Apperture= f/3.5
PS C:\Users\Jamesone> "ISO= " + (makenumber $foo.GetPropertyItem(34855))ISO= 100
PS C:\Users\Jamesone> "Width= " + (makenumber $foo.GetPropertyItem(40962))Width= 3872
Now, it might be my naivety with Powershell but I couldn't find away to turn an array of bytes into a string, so I had to write my Second powershell function
function MakeString { $s="" ; for ($i=0 ; $i -le $args[0].value.length; $i ++) {$s = $s+ [char]$args[0].value[$i] }; Write-Output $s}
Which is just a for next loop to convert the array to a string; here's the result
PS C:\Users\Jamesone> "Model= " + (makestring $foo.GetPropertyItem(272))Model= PENTAX K10D
I know my wife reads my blog. (Hello dear). So I hope I'm not going to surprise her. There are a bunch of reasons why I like the Xbox-360
Great is too small a word to describe what's coming. At E3 we showed a new trailer for the Halo. It looks... superb. I like the Halo themed X-box on that page but I can live with my white non-HDMI one for now. Have a look at the "ARMS Race" video linked to further down the page from Neill Blomkamp who is working on the Halo Movie (apparently).
Not withstanding, media, marble games, driving games and general living-room experience of the 360, the prospect of Halo 3 is just too exciting, and the real game play (as opposed to the X-box rendered cut-scenes) looks stunning. I can't wait.
The next proper PowerShell piece I write should be on using it to get at EXIF Data in images. I want to share a couple of things I've learnt along the way. The fGoirst is around finding libraries. If you find anything that is written for Visual Studio to work with EXIF fields, it use the system.drawing.bitmap object. So lets fire up powershell and create one of those shall we ?
Windows PowerShellCopyright (C) 2006 Microsoft Corporation. All rights reserved. PS C:\Users\Jamesone> $foo=New-Object -TypeName system.drawing.bitmapNew-Object : Cannot find type [system.drawing.bitmap]: make sure the assembly containing this type is loaded.At line:1 char:16+ $foo=New-Object <<<< -TypeName system.drawing.bitmapPS C:\Users\Jamesone>
Windows PowerShellCopyright (C) 2006 Microsoft Corporation. All rights reserved.
PS C:\Users\Jamesone> $foo=New-Object -TypeName system.drawing.bitmapNew-Object : Cannot find type [system.drawing.bitmap]: make sure the assembly containing this type is loaded.At line:1 char:16+ $foo=New-Object <<<< -TypeName system.drawing.bitmapPS C:\Users\Jamesone>
Oh dear, powershell doesn't load the assembly by default - you've got to be a lot more of an expert in PowerShell than me to know what's loaded and what isn't - until you try. People working in Visual studio take it for granted so the examples out there don't tell us what to load.
At this point I fire up Visual Studio - and you see from the picture I only have the free Express version. You don't even need to create a project, just go to the object browser, and browse to the object you want, and work up from there until you can see the DLL. Then you can copy and paste this to load the assembly, and try again.
PS C:\Users\Jamesone>[reflection.assembly]::loadfile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll") GAC Version Location--- ------- --------True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll PS C:\Users\Jamesone> $foo=New-Object -TypeName system.drawing.bitmapNew-Object : Constructor not found. Cannot find an appropriate constructor for type system.drawing.bitmap.At line:1 char:16+ $foo=New-Object <<<< -TypeName system.drawing.bitmapPS C:\Users\Jamesone>
GAC Version Location--- ------- --------True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll
PS C:\Users\Jamesone> $foo=New-Object -TypeName system.drawing.bitmapNew-Object : Constructor not found. Cannot find an appropriate constructor for type system.drawing.bitmap.At line:1 char:16+ $foo=New-Object <<<< -TypeName system.drawing.bitmapPS C:\Users\Jamesone>
Oh dear. It turns out anywhere I see one of thee objects being invoked it's being passed parameters. I can go and look at the Object's .NEW method in the object browser to find out what the arguments should be - there are several ways to Invoke new but the one I want is with the Filename. So I invoke it like this (and see what I got)
PS C:\Users\Jamesone> $foo=New-Object -TypeName system.drawing.bitmap -ArgumentList "C:\Tour\RAW\TdF23760.JPG"PS C:\Users\Jamesone> $foo Tag :PhysicalDimension : {Width=3872, Height=2592}Size : {Width=3872, Height=2592}Width : 3872Height : 2592HorizontalResolution : 72VerticalResolution : 72Flags : 77960RawFormat : [ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e]PixelFormat : Format24bppRgbPalette : System.Drawing.Imaging.ColorPaletteFrameDimensionsList : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}PropertyIdList : {271, 272, 274, 282...}PropertyItems : {271, 272, 274, 282...}
Tag :PhysicalDimension : {Width=3872, Height=2592}Size : {Width=3872, Height=2592}Width : 3872Height : 2592HorizontalResolution : 72VerticalResolution : 72Flags : 77960RawFormat : [ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e]PixelFormat : Format24bppRgbPalette : System.Drawing.Imaging.ColorPaletteFrameDimensionsList : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}PropertyIdList : {271, 272, 274, 282...}PropertyItems : {271, 272, 274, 282...}
So what else can I do with new ?
It turns out that I was writing database code in about the most long winded way possible. It went like this
A little poking round looking at the New methods for these objects shows me I can just create an adapter and give it the connection string SQL command text. Now the process becomes
Simpler, more elegant. I can't help feeling rather more PowerShell. Even if I need VB to get there.
Something has puzzled me for years now. If I look at the properties for a JPEG image from my camera, it keeps telling me that the Flash was settings were "Flash not fired; Compulsory flash mode" - even though the flash was off. I was sure Windows XP and Vista both gave this but when I looked at my fully patched versions the field was blank. [I'm also sure some extra properties have appeared on the details page as well - Maximum aperture and digital zoom ratio for example]
My recent poking round with EXIF data shows that on my pictures the field is set to 16. Great. What does 16 mean ? Only one thing for it. Off to http://www.exif.org/specifications.html and lets have a look.
Flash This tag indicates the status of flash when the image was shot. Bit 0 indicates the flash firing status, bits 1 and 2 indicate the flash return status, bits 3 and 4 indicate the flash mode, bit 5 indicates whether the flash function is present, and bit 6 indicates "red eye" mode Tag = 37385 (9209.H) Type = SHORT Count = 1 Values for bit 0 indicating whether the flash fired. 0b = Flash did not fire. 1b = Flash fired. Values for bits 1 and 2 indicating the status of returned light. 00b = No strobe return detection function 01b = reserved 10b = Strobe return light not detected. 11b = Strobe return light detected. Values for bits 3 and 4 indicating the camera's flash mode. 00b = unknown 01b = Compulsory flash firing 10b = Compulsory flash suppression 11b = Auto mode Values for bit 5 indicating the presence of a flash function. 0b = Flash function present 1b = No flash function Values for bit 6 indicating the camera's red-eye mode. 0b = No red-eye reduction mode or unknown 1b = Red-eye reduction supported
Flash This tag indicates the status of flash when the image was shot. Bit 0 indicates the flash firing status, bits 1 and 2 indicate the flash return status, bits 3 and 4 indicate the flash mode, bit 5 indicates whether the flash function is present, and bit 6 indicates "red eye" mode Tag = 37385 (9209.H) Type = SHORT Count = 1
Values for bit 0 indicating whether the flash fired. 0b = Flash did not fire. 1b = Flash fired.
Values for bits 1 and 2 indicating the status of returned light. 00b = No strobe return detection function 01b = reserved 10b = Strobe return light not detected. 11b = Strobe return light detected.
Values for bits 3 and 4 indicating the camera's flash mode. 00b = unknown 01b = Compulsory flash firing 10b = Compulsory flash suppression 11b = Auto mode
Values for bit 5 indicating the presence of a flash function. 0b = Flash function present 1b = No flash function
Values for bit 6 indicating the camera's red-eye mode. 0b = No red-eye reduction mode or unknown 1b = Red-eye reduction supported
So 16 would be all bits except bit 4 set to zero. Bit 4=1 and Bit 3=0 "Compulsory flash suppression" - switched off. The other bits mean the flash was present, it didn't fire and we didn't have red-eye, or return detection. So what's all this nonsense about Compulsory flash mode.
Lets read on the spec has a section on Resulting Flash tag values: here's an extract
0000.H = Flash did not fire. 0001.H = Flash fired. 0005.H = Strobe return light not detected. 0007.H = Strobe return light detected. 0009.H = Flash fired, compulsory flash mode 000D.H = Flash fired, compulsory flash mode, return light not detected 000F.H = Flash fired, compulsory flash mode, return light detected 0010.H = Flash did not fire, compulsory flash mode 0018.H = Flash did not fire, auto mode 0019.H = Flash fired, auto mode 001D.H = Flash fired, auto mode, return light not detected 001F.H = Flash fired, auto mode, return light detected
Most match the information we have above but 0x0010 (16 decimal) doesn't. That explanation belongs to 8 not 16. Oops. Or may it should say Flash did not fire, Compulsory flash Suppression mode. Interestingly those people who used this second table stay pretty true to the text in it.
Considering it was less than 2 years ago, I have relatively few memories of the London bombings of Thursday, 7th of July. One is that the following Monday the travel information ran roughly as follows:"The Circle, District and Hammersmith & City lines metropolitan lines are partially closed following explosions at Edgeware Road and Aldgate, and the Piccadilly Line is badly affected by the explosion near Kings Cross. London Transport will be operating a near normal service".
I don't know who wrote that, and what mixture of Dunkirk spirit, Gallows Humor and cynicism about public transport spawned it. Something of that spawned the web site We're not afraid.com. Somewhere in the 770 galleries on the site is my small contribution. I quoted it when Colleagues in the US asked if we were OK. London, I told them, withstood everything the Luftwaffe could throw at it. It withstood a sustained campaign from the IRA. It takes far more than that to scare us into changing how we live [sometimes when I see where our Civil liberties are going I worry that that is just wishful thinking]. London, I told them, is one of the worlds great cities, and when the worst happens, Great cities recover: ask Madrid; ask New York.
For all the Bravado, and the "Is that all you can do ?" defiance, I'm heartily glad that whatever was being attempted in London and Glasgow over recent days came to naught. And it's not surprising that some people are jittery. At times like this large companies - especially prominent American ones - send security advisory mails to their employees. Our's went out on Sunday afternoon and it's all good sense but I must share one line of it.
If you know of a threat to national security contact the Security Service (www.mi5.gov.uk) or MS Corporate Security via the Security Operations Centre at Reading
I always thought our security guys were good :-)
Sorry for the diversion, a near normal service will be resumed soon.
I've given some clue of the problems I have managing all the photos and Videos, but I realised my problems are pretty small when I read this
The National Archives, which holds 900 years of written material, has more than 580 terabytes of data - the equivalent of 580,000 encyclopaedias - in older file formats that are no longer commercially available.
Yikes ! That's a lot of documents. Their Chief Executive calls it a "ticking time bomb", and if modern PCs can't open old formats there's a risk of "losing years of critical knowledge", and their research suggests Europe loses 3bn euros each year in business value because of issues around digital preservation. Ouch.
We have to put our hands up and say this is partly our fault, and the roots of the problem go back to the 1980s. The designers of Word, WordStar, Word Perfect and Ami-pro didn't worry about these things. We managed to stop mucking about with the formats after Office 97. But unless we stuck to that forever that wasn't an answer. One of the things about putting the format into XML is it makes it a lot easier for a future archivist to deal with. IBM and others saw this with "Open Document Format" except that
Points 2 and 3 rather defeat the objective an open format. So the office 97 format was no good. ODF is no good. Hence the need to come up with a new format for Office 2007 - Open XML. And it would be self defeating to produce an XML standard without publishing it and ideally handing it over to a standards; which we've done. As I've written before, IBM opposes the adoption of Open XML as an ISO standard and we have a petition for people to show support for adoption.
All that is great for the future.But what about the 580 Terabytes that the National archive has. We've just announce a memorandum of understanding with the National Archive under which we will help them to access old files - it's an elegant solution using Virtual PC to run VMs with the old Operating systems and the old applications. They're also contributors to the to the Open XML process. The National Archive isn't the only body to get Involved, Adam Farquhar, Head of eArchitecture at the British Library is co-chair of the Office OpenXML standards committee.
Gordon Frazer is the third MD we've had in Microsoft UK since I joined, but I can't recall either of his predecessors doing demos for the camera. He shows what the system is all about. I didn't expect to see my MD doing an Demo of Windows for Workgroups 3.11 in 2007.
From BBC News
I'm continuing to fiddle with PowerShell.
I have 28 years of BASIC under my belt Starting with a DEC PDP 8/f moving onto Microsoft Basic with the Commodore PET (hands up who remembers Poke 59468,14 and ,12 ?) , through the AppleSoft version of it, and Sinclair Spectrum (with it's one touch expansion of tokens, M was pause - my mnemonic - PAWS on a Mouse.) Through Access Basic, Word Basic, VB version 1 and so on.... So when I what to convert a number to it's ASCII character I know it's CHR$(x) - or in these enlightened times where we don't put $ on string variables and functions any more than we use line numbers and Goto - simply CHR(x). So what's the Powershell equivalent ? (1)
If you're at the same stage of learning Powershell as I am , a technet page called Converting VBScript Commands to Windows PowerShell Commands is a fantastic resource. Enjoy.
(1) [Char]$x does it.
I've mentioned Digital image suite before. I always felt I needed to apologise for not using Adobe Photo shop. As several people commented, Photoshop was overkill. Digital image suite let me
Vista has some token editing built in. It can rotate 90 degrees, crop, it can adjust levels and colour balance. It can fix red-eye. There's talk of a "Windows Live" branded version of Vista's photo gallery which will upload to Live Spaces. But this isn't expected to offer a lot more. So the news that we'd quietly killed off Digital Image suite was greeted with some dismay by a good handful of the photographers inside Microsoft, one of whom passed on a quote from Directions on Microsoft.
[Digital Image Suite] occupied an uneasy niche between the free photo editing and management software bundled with most digital cameras and Adobe's more full-featured products for serious amateurs, such as Photoshop Elements ... With the release of Windows Vista, Microsoft incorporated many of the features of the Digital Image product line into a free bundled application called Windows Photo Gallery, similar to the way that Apple bundles its iPhoto application with every Macintosh computer. This further reduced the market for a stand-alone version of Digital Image Suite. ... The cancellation of Digital Image means good news for Adobe, which now faces one less competitor in the low end of the imaging software market.
[Digital Image Suite] occupied an uneasy niche between the free photo editing and management software bundled with most digital cameras and Adobe's more full-featured products for serious amateurs, such as Photoshop Elements ...
With the release of Windows Vista, Microsoft incorporated many of the features of the Digital Image product line into a free bundled application called Windows Photo Gallery, similar to the way that Apple bundles its iPhoto application with every Macintosh computer. This further reduced the market for a stand-alone version of Digital Image Suite.
... The cancellation of Digital Image means good news for Adobe, which now faces one less competitor in the low end of the imaging software market.
I'm not sure who's saying Vista incorporates MANY of the features of Digital image suite, when I make it 5 at most. For anyone who thought we wanted to fight Adobe on every front here's proof that things are rarely that simple.
Update: I forgot this Bonus Link Paul Thurrott has post some information about what's in the Live Gallery Beta.
A draft post which ended up going on the spike referred to Lyn Truss's book "Talk to the Hand: the utter bloody rudeness of everyday life". I'm not fan of Ms Truss, or the book - which could have been called "Talk to my bank. An utterly bloody pointless book for Christmas" but I'll concede she had some decent chapter headings.
It irks me that her chapter called "Why am I the one doing this ?" doesn't have a pithy quote. I got Plain words out on Saturday to find a quote and noticed something to the effect of "The people you write to must never feel they are being put to trouble to save you from it"; indeed. Here are some examples.
This last one cost Expedia my business. After Friday's disaster BA fixed me with a flight, 2 days later and via Vancouver. They didn't book the connecting flight to Seattle. I've flown that hop on one of those cosy Fokker-50s, but since that was years ago I went to Expedia to find what flights there were choices exist. But when I want to book a flight on the little Fokker, Expedia demanded I set up me to set up an account. Sorry guys, I can book on Alaska's site; it's well designed with the bonus of Tim the Moose.
Yes folks they're all part of life's weird tapestry as a British Microsoft employee at a Microsoft event in Seattle.
After I referred to Snowclones recently it I should point out that blank and drugs and blank blank blank is a snow clone modeled on Ian Dury's "Sex and Drugs and Rock and Roll". Dury said he was from Upminster, where I was born, although according to his Wikipedia entry he was actually actually born in Harrow. There is a an old joke - based on the stations on London Underground's district line; "You've got mad, Barking Mad, and Upminster"... "Upminster ?" "Serveral stops beyond Barking".
So what of the Pigs, the Drugs and the naked dwarves ?
First the pigs. Seattle has "Pigs on Parade" going on at the moment and wherever I walk in this city there are fabulous decorated pigs. Microsoft is one of the many sponsors I'm pleased to say. I've been grabbing pictures with the camera on my smartphone when I see them. Here are couple
Next the Drugs. Steve and I have ended up doing some unscheduled research into the American Health Care system. He can tell what happened to him for himself. As for me, well for the last five years or so a prescription drug has helped me lead a bit more normal life than would otherwise be the case. I bought a supply with me to the US. Sometime in the last couple of days I lost it. I'm got going to die or go "Upminster" for lack of my drug, but withdrawal isn't fun, and it will need a few days of taking it to again to get back to normal. So I called the emergency number we have for just these kinds of things, got referred to a Doctor who could prescribe me enough to see me home. I had to pay for my own, and at £2.30 per tablet my usual prescription charge of £6.50 for 28 looks a real bargain. Our system works. My phone says I made the call at 3:16, and the receipt from the Pharmacy is timed at 5:40, and more than half the time was spent in or waiting for Taxis. I don't actually inhabit the kind of World that William Gibson writes about - but it reminded me of the the opening of Count Zero, a few sentences in, it has this "Because he had a good agent, he had a good contract. Because he had a good contract, he was in Singapore an hour after the explosion. Most of him, anyway." (The very first sentences of Gibson's books are often great Count Zero starts "They set a Slamhound on Turner's trail in New Delhi, slotted it to his pheromones and the color of his hair").
But if you've read this far, you want to know about the Naked Dwarves.
There are a bunch of memorable quotes from this week. One was Bill Gates talking about PBX's as Mainframes "an expensive way of doing things in a rigid way". One was a product manager talking about a product which is still secret, and referring to the next product which is so hush-hush they've code named it "Shshhhh". (Which reminds me of a programming language called "KEEP". The developer was asked what KEEP stood for. "It's not an acronym" he said "I just found a good way not to have people throw program listings away was if the header page said 'KEEP' in big letters" ) However the prize for the best single line of the week (and I have permission from someone in Legal to blog this), is the explanation of how a Microsoft employee, in the context of a legitimate business conversation came to shout down the phone to someone "If you don't get a naked dwarf in my office by this afternoon, I'm coming over there to get one for myself".
I will explain the context of this ... but in another post :-)