October 2006 - Posts
I was so busy having fun I forgot to wish myself happy birthday…
HAPPY BIRTHDAY ME !!!
(28/10)
Listening to
Dr Neil's latest notes and noted he mentioned the South Australian Fire Service. In Victoria the volunteer fire service is known as the
Country Fire Authority (CFA). A lot of people don't seem to realize that these fire services are staffed by volunteers from the community, much like myself. They give freely of their time, and a lot of it, to help keep the community safe, reduce loss of life and property damage when bush fires hit.
This year, after record number of drought years, it's looking to be a really nasty season. Summer hasn't even started and we have already had a number of serious fires. We're expecting the worse, and hoping for the best ;)
So what can you do to help ?
there's three basic things you can do:
(i) learn what to do in case of fire (plan to stay or leave early)
(ii) join the CFA
(iii) donate to the CFA
(i) If you are not familiar with fire, have never experienced a real bushfire, my personal advice is get out of there early. Don't leave it to the last minute, and don't think you can control a fire single handed. For most people the dense smoke, intense heat, and loud roar of a fire puts them in panic mode, and fire doesn't forgive mistakes.. it kills. If you aren't trained, leave, and leave early.
(ii) If you're near a CFA station, think about joining. New members are always welcome and we can generally find something for you to do regardless of your fitness level. And as a bonus you'll get trained. You will need to complete a minimal skills training before attending any fire.
(iii) Make a donation. CFA fire stations are funded by both the government and the community. For example, we're putting our own funds together with half a dozen fire stations this year to buy a 4WD ute. So making a donation to your local fire station helps us have the right equipment to get the job done. It also helps moral, as a sign of community support for all the hours we put in :)
If you're not near a CFA station, and would still like to make a donation of goods or funds, you can always make a donation to my station :) It would be most welcome !!
Some things we would like to have are:
- GPS units. Yes believe it or not we don't have *any* in our truck or support vehicles. I've heard the CFA is planning on supplying them in a couple of years time, but we could really do with one now. It's pretty hard to know where you are in smoky conditions in the bush.
- Recreational equipment. On hot days (especially when there's strong winds) we try to spend some time at the station so as we can respond immediately. Unfortunately with no phone, no broadband, and not even a TV aerial, it can get very boring. Anything to help there would be great.. do you have an old xbox you no longer need ? Or even a large TV (we have a small one) ? Or maybe even a pool table, or table tennis table ? (note I can organize transport from Melbourne)
Oh, and here's a test for you folk who might be thinking about staying and protecting your house. Let's say you have a blanket, and buckets of water ready, including the bathtub full of water. You soak the blanket and get under it as the fire approaches. Right or wrong ?
The answer is of course you never soak the blanket. Water conducts heat. Wetting the blanket will give you a high chance of getting severe burns. Sadly you see on the movies people wetting down the blanket. anyway, if you honestly didn't know this, or had to stop and think about it before answering, then please leave early when a fire comes. houses can be rebuilt, humans not so easily.
that is the question Ron Jacobs and I discuss on the
arcast network. Download
the audio here.
.
a couple of years ago I was toying with the concept of a behavioural language, and thoughts of this came flooding back to me as I read
Rocky's recent post about SOA. The problem is not the "service" part of SOA, rather the message is incredibly limited and is basically data centric, not behavioural in nature.
Let's take a simple example of a real world person to person (autonomous entities) interacting in a "service" based transaction such as banking. In this case consider a loan application. The first thing is based on a few questions, they will gather the paperwork for the right kind of loan for you. typically, the form that needs to be filled in will have information about how to fill it in. There will also be conditional statements, such as "if you under 18… " etc.
So the interaction is somewhat dynamic. It's not like you can have the form already, as the form may change. So really, the whole UI is in fact the service. This leads us to thinking a web application or streaming WPF or an updating ClickOnce.
That's fine if you control both the entire application from server to UI, as
Geoff points out. But what if you don't ?
For example, if the rules change, such as the fees or minimum payments based on other fields in the data ? Typically this would require you to re-write this in multiple places
A service schema can set some basics as per an xsd, such as minimum value or required. but it can do so only statically. To make this dynamic, to provide a Behavioural Informative Language, the schema needs to be much richer and provide conditional statements, informative descriptive expressions that can be evaluated, and most importantly the ability to refer to other fields in the describing the attributes of a given field.
For example, let's say you have a first name and a last name property. The rules should be able to be specified that the field is required if the other one is empty. That is at least one of those fields must be filled in.
eg.
<Customer>
<FirstName required="If(IsNull(.LastName), true, false)">
<LastName required="If(IsNull(.FirstName), true, false)">
Likewise you could use standard operators, IsNull, If(,,) and maybe just a few more descriptive operators to describe the behaviour.
And some behaviours could themselves point to a service.
The idea is the description becomes a lot richer. UI elements could use this to form validation and guide user interaction.
Thanks to some checking with other folks with similar hardware, it appears
the issues I've been seeing with Calibri font are most probably a software issue. So *some* of my criticism of the choice of Calibri may well have been misplaced, except that there isn't an obvious way to track down the problem and fix it.. in fact I can't even find the source of those fonts on my tablet PC to start off with. So basically is still sucks, just the probable cause of why the font sucks has shifted :(
Kathy Kam asked for feedback on Timezone2, so tonight I decided to have a bit of a play and these are my first impressions// partial code review:
- ConvertTimeBySystemTimeZoneId could the name be any longer ? I think this should probably just be an overload of ConvertTime .
- When using ConvertTimeBySystemTimeZoneId it would be nice to be able to easily refer to the local time zone, e.g. "local" or similar string inst4ead of having to use ConvertTime with two TimeZones.
- the same for (2) in any of the api that takes a time zone id
- time zone id strings should allow the abbreviated form. The list from time and date .com is a pretty good starting point. (note the forms of CST and EST that refer to Australian times should be ignored as they cause an ambiguity with the American ones, and the correct form of AEST is already listed in that list :) )
- FindSystemTimeZoneById should return the same time zone if called multiple times instead of a different instance each time.
- because of 5, if you try to convert a time using ConvertTimeBySystemtimeZoneId using the local timezone id and a date time with the Kind set as Local, it fails, because of a failed reference check to see if the TimeZone2 is the same as the static Local one that is cached.
- related to 5, if the user wants a new instance of a TimeZone2 a clone method, or a constructor that takes a TiemZone2 etc, should be exposed, although this is only likely to be useful in the CreateCusotmtimeZone overloads as TimeZone2 is practically read only.
- because the static Local is cached, either a method to refresh should be exposed, or a check made in the property get to ensure the Timezone has not changed , or it should listen to system events. However as this is static, listening to system events can have side effects as they will not be released until the app domain is released. My preference would be to make an efficient as possible test in the property get, and leave any caching up to the consumer.
- FindSystemTimeZoneById would be more friendly if it had an enum for the time zones, based on the abbreviations.
- Likewise these api that take a zone Id, should accept the daylight string as well.
- Similar to 9, a list of string constants in a class, such as KnownTimeZones would be very helpful. I hate string literals in my code, and they should only be there because I've stepped outside the box ;)
- It would be nice if .NET distanced itself a bit further from the OS, and provided the basic known time zones as a *backup* should they not be found in the registry. That is the base of this API should be platform independent, but it should use the platform configuration if it is there, just like any "setting" should.
I think that's the majority of the things that came to mind in the very brief play and investigation I had. Other than that the class is very cool. Seems to work well. What I would like to see next are some TimeZone2 operations for DateTime, such as adding n hours to a DateTime and ensuring that is adjusted as needed due to DayLight Savings changes etc.
And of course then the final bit would be to include this with DateTime in a structure that will read and write nicely from XML preserving the time zone (ideally as abbreviated string for known TimeZones), and even have a SQL CLR type ??
almost a month ago
I posted about the annoyances of Calibri font if you don't have font smoothing and clear type turned on. Sadly, I'm seeing it more and more even in some mailing lists as people try out Office 2007 and Vista. What's worse is I don't think people realize just how friggin bad that font looks without font smoothing.. here's a hint ..
IT'S FRIGGIN UNREADABLE !!!
No without doubt it's not the user's fault, it's clearly Microsoft's. They designed it to be that way. You think they'd at least have a system that was smart enough to say… oh, font smoothing isn't turned on, let's fallback to a reasonable font. But no, this is one of those force the change on everyone kind of crap moves that just disenfranchises people bit by bit. Can you tell that I'm annoyed yet ? Well if not, just send a big FU to the people who decided to push such a crap font as the default on a system that's too stupid to correct itself based on the user's settings !!
Okay, rant over.. time to get on with life and being happy :) And guess what ? Well thanks to those incredibly smart Microsofties who wrote Windows 3.1 you can say FU to Office 2007 default fonts. What incredible fore-sight that crew had !!!! :)
Yes the magic of FontSubstitiutes
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"Calibri"="Verdana"
Funny thing is this is the first time I've ever had to use it, and the cause was not a 3rd party, instead it was Microsoft.