Blog - Title

October, 2010

Sorting it all Out
Michael Kaplan's random stuff of dubious value
Be sure to read the disclaimer here first!
  • Sorting it all Out

    Why one LIP and not another?

    • 2 Comments

    Today's blog ties up some unresolved issues from a few prior blogs.

    In particular, this blog talks about some issues that I hinted at in 4 out the door, in both 32 & 64 (aka What Irish, Malay, Maltese & Bengali have in common) from about three months ago.

    In that blog, I pointed out several commonalities among those four Language Interface Packs.

    And then there was a cryptic ending:

    Now two of these LIPs (Maltese and Irish) both have something else interesting in common, something that I'll talk about more another day....

    Think of that day as being today.... :-)

    Now one of the data items I have mentioned every single time I have talked about a new Language Interface Pack being released is the number of speakers of a language.

    That number often (though not always) represents the number of people who would consider it either:

    • the only language they know, or
    • the primary language they know if they know more than one.

    Obviously this number alone is not necessarily the driver that decides whether a LIP will be released, and the fact that LIPs see this number all over the place helps to make this point.

    For Irish and Maltese, that number is much smaller than most of the other LIPs, in fact. That is what they have in common.

    But if it not just this number, then one of the obvious questions that can come up in a person's mind is simply wondering what might be the other factors that drive the decision to make a LIP.

    Though if one thinks about it, they may be pretty obvious.

    For example, although Language Interface Packs themselves are free downloads, they obviously aren't too terribly useful unless one has a copy of Windows one can use them on.

    So the existence of a particular LIP can help encourage adoption of Windows itself!

    Or in cases where one will almost certainly have already decided to have Windows, the LIP can really improve the user experience of it -- leading to improved customer satisfaction.

    Sometimes there are formal procurement requirements that must be followed.

    There might be times that  formal request from a government is involved as a part of its own efforts to enhance support of a language under its jurisdiction. Such requests are often tied to other work that Microsoft can be doing with a country like consulting or partnerships of various kinds. Kind of a win-win for Microsoft and the government and the users -- since everyone gets what they are looking for!

    Now one method that as a rule is not a way considered in the complex decision-making process is individual requests from users.

    I mean, even though Microsoft makes them free downloads, they are not free to create -- it is an expensive engineering effort, and there must always be a justification for such costs to be approved, for a language to be approved.

    This answer of course covers not only the previous ideas I mentioned but probably the next ten I could put on the list, so in a way that answer short-circuits the need to keep listing our reasons.

    In the case of individual users, there is no real way to quantify the benefit of supporting the LIP with such a small pool of people (or person!) making the request. There has to be more to it than that before such a large group of people is involved in such a big effort.

    People like me and others often have to field such "individual" requests (I have even written about them here on occasion!) and although sometimes it is an idea already in some people's minds and can thus be added to a business case in progress, it is often just as likely to be a new request. And one that not very much can be done with.

    Now that I think about it, a lot of the same rules apply to locales on windows too.

    Though obviously it is a lot easier to add support for a locale then it is a partial (or full!) localization. I mean even if it is an easier business case to make, someone still has to make it....

    One of the things I like about a lot of the work I do in general and the things I do to help out LIPs in particular is that despite the fact that at some level there is a business case and all that other stuff, it is mostly a feature that is at its core free and can really help people out.

    It isn't ever just a raw body count....

  • Sorting it all Out

    Sorting my kind of vegetarianism (lacto baconarianism) all out

    • 2 Comments

    This post is so not technical. Please skip if you don't care for the blogs that aren't about technology!

    I am not a Vegan.

    I am also not a Vegan, but were it not for speed of light issues maybe I'd spend more time there. That is a topic for another day....

    You see, the Wikipedia definition perhaps helps put it in context:

    Veganism is a philosophy and lifestyle whose adherents seek to exclude the use of animals for food, clothing, or any other purpose.

    Now I not only have colleagues and former colleagues who are Vegans, but I also have several friends and even a few people I admire.

    But it is just not me.

    Some of that group I referred to above respect that, some tolerate it, and others are unaware and couldn't care less. It is a nice, wide range of reactions. :-)

    Now I am also not vegetarian.

    To be honest there have been times that I have been a vegetarian -- specifically periods of time that I was variously a vegetarian, a pescetarian, a pollotarian, and an  ovo-lacto vegetarian.

    In each of those cases, it was the fact that the person I was dating was that specific type of vegetarian or semi-vegetarian. Because when they were, I kind of was too. It is really all you can do if you want to spend time with them....

    To be honest, I could probably be a vegetarian on my own merits, were it not for just a few basic issues, parts of my life that I find very difficult to do without:

    • A Fatburger about once every three months, a habit I picked up from Cathy;
    • A lot of chicken, usually in Americanized dishes claiming to be Thai food like panang curry with chicken and spicy crispy chicken -- this is probably the staple in my diet;
    • Bacon.

    Now if I didn't do the Fatburger I'd probably live, and the main appeal to the chicken for me is really the spices around it; whether I can substitute something else there depends on whether I can find a version of tofu I don't hate at that moment.

    And I really do generally hate tofu. Sorry.

    These two workarounds are generally the ones I use for my first two guilty pleasures on the list, when dating vegetarians who aren't pollotarians.

    This just leaves one thing.

    Bacon.

    Now being raised a conservative Jew who was briefly an orthodox one (and a strong Dresnerian advocate) before retreating into a cynical kind of agnosticism, the idea of not eating bacon should not be so hard to contemplate.

    And yet I really find that bacon is something I need pretty regularly.

    Not every day or anything like that.

    But now and then, on a somewhat regular basis, I find myself really wanting bacon.

    Needing bacon.

    And now I am going to point out a company I really like: Bacon Forever.

    Disclaimer: this blog and this reference does not represent a paid endorsement, but they did send me a t-shirt as a thanks for being a "beta tester" of their web site before it formally opens on November 15th. The t-shirt did not influence me to do or say anything I wouldn't have done anyway.

    There are two products of Chris and Tina, the folks behind Bacon Forever, whose products I first saw at the Fremont Sunday Market, that grab me in particular:

    • Hot 'n Spicy Bacon Jerky -- for when I just really want something spicy, and
    • Chocolate-Dipped Bacon-- because between this product and Limonata I know that we are able to make the universe a better place by being here and contributing!

    Perhaps one day I will be a Vegetarian for real, graduating from my flex lacto pollo baconarian type of vegetarianism to a lacto-baconarian type of vegetarianism (how else to allow for the Chocolate-Dipped Bacon?), and in truth I may well be heading in that direction now.

    We each have to make our choices, right? This may even be not entirely incompatible with some future semi-vegetarian I date, though I will try not to assume too much there....

  • Sorting it all Out

    UI languages don't limit cultures

    • 2 Comments

    The question that came up a few weeks ago:

    Is the method CultureInfo.GetCultures() OS dependent, such that an English OS may only load en-US and en-GB but an OS would additional localizations would return more?

            public static string GetCurrencySymbol(string ISOCurrency) {
                if (currencySymbols == null) {
                    currencySymbols = new Hashtable();
                    foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures)) {
                        RegionInfo ri = new RegionInfo(ci.LCID);
                        if (!currencySymbols.ContainsKey(ri.ISOCurrencySymbol))
                            currencySymbols.Add(ri.ISOCurrencySymbol, ri.CurrencySymbol);
                    }
                }
                return currencySymbols[ISOCurrency].ToString();
            }

    Wow.

    I think about that huge list of locales on Windows, and I wonder what people think that list is for if not for stuff like this -- locale data like currency symbols!

    Of course the answer is the UI language of Windows is not something that gates this information in any way....

    Though in truth there is at least one case where this question could be reasonable to ask.

    It isn't correct there either, mind you. But there is a time that things do seem kind of filtered.

    Does anyone know the scenario I am thinking of here? :-)

  • Sorting it all Out

    Yes, if we do not speak Māori, our treasured language will be lost.

    • 0 Comments

    I think maybe I should just start randomly going to the microsoft.com website and adding suffixes I find interesting to see what comes up.

    Because every time I turn around, someone is telling me about some link that has been around for a while to tell me about some exciting new content!

    Like over on the Local Language Program site.

    There's a Local Language Program site?

    Maybe I knew that at some point.... I am sure I should have known that.

    Well, I know it now!

    Anyway, they have cool new videos there on the site, one about Māori, and the other about Vietnamese.

    The quote in the title comes up at about 1:47 on the Māori video. And really both videos contain some interesting info about how several different native speakers look at their language, at Microsoft products, and of course at having Microsoft products in their language.

    You can look at the other videos too, though perhaps you have already seen them and the new ones are the only ones you'd have to look at. :-)

    Either way, I also put the link to the site on my "Microsoft Links" here on the side of the blog.

    For those of you wanting to know more about what's behind the LIPs, you may want to check out some of these videos....

  • Sorting it all Out

    Note to the NLS API: It ain't ever gonna by 13 o'clock, either.

    • 3 Comments

    The other day, in a comment to I Triple Adar you!, regular reader Mihai said:

    Trivia: did you know that GetLocaleInfo/GetLocaleInfoEx never returns anything for LOCALE_SMONTHNAME13? (and in general any LOCALE_S*MONTHNAME13)

    This is very true, and in its own way not actually trivial!

    The logic of this is kind of weird.

    One might say it is Microsoft-style logic, kind of.

    It's a design issue I first ran across in a significant way when the CultureAndRegionInfoBuilder class was being designed.

    It starts with the GetLocaleInfoEx Function. Like it's older cousin, it has lots of constants for grabbing months, from the LOCALE_SABBREVMONTHNAME* constants to the LOCALE_SMONTHNAME* constants.

    There are 13 there for each set, the last one from each is:

    LOCALE_SMONTHNAME13 Native name for a 13th month, if it exists. The maximum number of characters allowed for this string is 80, including a terminating null character.

    LOCALE_SABBREVMONTHNAME13

    Native abbreviated name for a 13th month, if it exists. The maximum number of characters allowed for this string is 80, including a terminating null character.

     But there is a problem here. The problem is that the GetLocaleInfoEx Function only ever is returning information about the Gregorian calendar.

    So that text above, that goes on about "for a 13th month, if it exists" for these two items.

    Well, it is true. 100% of the time that the Gregorian calendar has a 13th month, this field will contain the info.

    Because it can't ever happen.

    Similarly, the CultureAndRegionInfoBuilder's DateTimeFormat is a GregorianDateTimeFormat. Because the locale model itself can' ever handle more than the Gregorian calendar. The other calendars are stored separately, in a place that doesn't support localization (as I first pointed out in Calendars on Win32 -- Not all there yet nearly six years ago. It is just a real lameness and limitation of the model.

    So sure, the GetCalendarInfoEx Function can find occasional use for a CAL_ABBREVMONTHNAME13 or CAL_MONTHNAME13, because sometimes it will be needed.

    But LOCALE_SABBREVMONTHNAME13 and LOCALE_SMONTHNAME13 are like those folks I met in Los Angeles last Saturday who say they are actors but never go on auditions or casting calls, so they never actually get a chance to work as actors.

    LOCALE_SABBREVMONTHNAME13 and LOCALE_SMONTHNAME13 are pretty much doomed to that same fate, never finding any work in their claimed profession. Waiting for hacks, and living an empty [string] life....

    Awfully optimistic of the documentation though, huh? :-)

  • Sorting it all Out

    The hair affair (or lack thereof)

    • 3 Comments

    Nothing Technical Whatsoever....

    I have had a strange relationship with my hair for most of my life.

    It has always been curly, and I have always hated that fact.

    After as much pressure as a stubborn and smart-ass of a young child can apply to the situation, it was determined by the stylist at the beauty salon my mom went to that if I kept it reasonably short that I could comb it straight, parted on the left (my left).

    then, as the hair got longer, it would start to have waves. And those waves would threaten to move into full-flown curls. I would then have to get it cut before that happened.

    For many years, this was the way things were.

    Then one day in I think the Eighth grade, it was a costume party kind of a day. I decided to go as "a white Michael Jackson" and my costume consisted of my hair (that was too long and in need of a cut) left curly, sunglasses, some sequins, and some greasy stuff in my hair (his hair always looked greasy).

    I wasn't a huge fan, but my musical tastes were bizarre compared to my friends and I figured everyone would recognize him.

    Actually, everyone assumed I got a perm.

    As if!

    Anyway, the next day everything was washed out of the hair but I decided not combing it straight was easier since it involved no special work.

    And then, the new way things were for my hair was the curl.

    Which I hated, but I hated dealing with it more.

    Eventually I gave up on the curl, which was an unstable situation anyway (since I hated it), and settled on just combing it straight back and getting it cut regularly.

    As a small aside, for a brief period in my late 20's I started dating the girl who was cutting my hair, and those fourteen weeks can be thought of as the Golden Age of my hair, as it is the only time in my life I used product and my hair has never looked as good, before or since.

    When we broke up, I stopped with the product and reverted back to combing my hair straight back.

    I kept waiting for my hairline to recede, as I was warned that was a natural consequence of combing my hair back tightly and consistently and since I did not know the definition of "tight" in this context i assumed my follicular days might be limited.

    But the hairline never did manage to recede, and the hair stayed in its holding pattern of needing to get cut every 6-8 weeks to have a hope of staying straight.

    And then there was a costume party for Halloween 2010.

    This past weekend, in fact.

    Realizing that the options for realistic costumes involving wheelchairs are limited and not being too fond of Mike Myers, I decided to consider going as Professor Charles Xavier (Professor X) of X-Men fame.

    You know, the guy Patrick Stewart played in the movies.

    Friend Holly (whose husband also happens to bald in real life) and friend Dave (who is bald in real life) and friend Ellen (who was going with me to the party) all asked whether I planned to a) wear a bald cap, or b) shave my hair off.

    I was leaning toward the bald cap but everyone seemed disappointed by this answer

    As I started toying with choosing the other option, all three of them seemed excited. And a little surprised.

    Too surprised. I started wondering if people were playing one of those little jokes.

    Asking the question a bit wider and getting only one negative response (a friend who has less hair than a full head who claimed he did the same thing once and it never grew back -- he may have been joking) out of ten, I decided to risk it.

    I asked over at Gene Juarez whether they could do this, and they said they did not have razors to do the 100% job, but they could use clippers with no attachments and get it very very close.

    Appointment for Friday afternoon.

    And Ellen agreeing to help me touch it all up with a razor for whatever I couldn't get to well, on Saturday afternoon.

    And the party in Los Angeles on Saturday night.

    The plan was set..

    Memories of how rough I had been with my head in the past (including a fight of sorts with a family room table) came to mind, unbidden. And I wondered what might be underneath all that hair.

    I decided to hang on to the bald cap as a backup in case something really unsightly was under there.

    But now with so many knowing about it I knew I was going to go through with it.

    And I did!

    We went to the party at Hollywood Castel (last minute unfortunate venue change but the party was still pretty wild), with me as professor X and Ellen as Storm.

    About half the people paying attention to costumes guessed mine correctly, though I had not really done enough with the Picardian take on the demeanor. I decide I could improve that on future runs with the costume (I have at least three more Halloween parties between now and November 1st!).

    I may talk about other party details some other day. Perhaps though I should not do that....

    I touched up the hair last night (Sunday) keeping it shaven, and probably will keep doing so at least through the 1st of November and all the parties.

    Though I suspect I won't keep it up forever; it seems like yet another unstable situation as it is a lot of work to keep it up, and really I like my hair best when I don't have to do anything.

    But for the next week or so, I'll be keeping it bald. Maybe longer if the response between now and then is as good as it was for the party (adjusted from Los Angeles to Seattle, of course!)....

  • Sorting it all Out

    Why not engineer inefficiency?, aka "Forget to charge my battery and take me to Jabba now" the iBot said

    • 5 Comments

    Maybe it is something about Saturday.

     Medical blogs, on this blog, seem to be happening mainly on Saturdays now.

    Seems like a theme, for now as theme I will go with....

    Anyway, I have been going on for a while about our awesome health care plan and how unhappy I was at what I believe to be issues behind pending changes.

    That is not what I am going to talk about today.

    I have also leveled specific charges at what I believe are mostly administrative sloppiness issues that cost Microsoft money and which if they were doing right they'd have fewer problems now.

    But that is not what I am gong to talk about today, either.

    I'm going to talk about batteries.

    "Batteries?" you may think in wonder.

    Yes, batteries.

    The scooters I used to use all the time made use of batteries. And so does the iBot I use now.

    You may know or possibly have heard the expression "it's not the initial investment, it's the upkeep."

    It's true.

    The iBot itself clocks in at a cool $26,100.00. That is the initial investment.

    This rather amazing chair uses Nickel-Cadmium (a.k.a. Ni-Cd, a.k.a. Ni-Cad) batteries. This is nit entirely unusual in wheelchairs.

    On the whole I wouldn't care about whether they were Ni-Cad or the Lithium Ion batteries I use in my laptops, except for the known memory effects that Ni-Cad batteries can suffer from.

    It is more complicated than I'll present here, but this is not a Battery Blog so I feel comfortable with the simplification.

    In essence, if you set the battery up to recharge every day and it never gets below a certain percentage, then it will tend to forget its own lower limit and start thinking the lowest level it has reached is the lower limit.

    The imagine it conjures in my mind is that weak-minded assistant to Jabba the Hutt who Luke Skywalker was able to adle so easily. Luke confused Bib Fortuna and filled the vacuum created with new instructions.

    And NiCad batteries seem to be just as easy to confuse, though it does take a bit longer.

    Now there are two defenses against this:

    1) You can fully use up the charge every day park it at virtually 0% and charge it up fresh, so it will always think the full charge is nothing short of the full charge.  There are way too many reasons why this is impractical, not the least of which the notion of every day using the same amount of the battery is more or less impossible to orchestrate.

    2) You can periodically do a "deep discharge" by draining the battery all the way down and letting it charge back up.

    The official recommendation for #2 is monthly, but I have found this to be less than ideal, and tend to do it at least weekly (and more often any time the battery ends it's day under 15%.

    Officially they rate the battery as lasting for a year, though through a practice of doing it once a month for the first half of the battery's life and with my new schedule for the second half, I have made it last two years.

    This next time I will use my way from the start an I hope to make it last longer. I'm off to as good start so far, we'll see what happens.

    But that is not exactly what this blog is about, either.

    When it was time to get the battery replaced, I had to put up the money myself and tehy billed the insurance (check to me afterward since I paid upfront).

    The cost was $1100.00.

    Eventually I got the Explanation of Benefits (EOB). It was attached to a check for $24.09.

    That is not a typo, the balance was "my responsibility."

    Hmmm.

    Of course, I call the insurance company. They inform me that this the "reasonable and customary amount" given the code it was billed with. "Perhaps they mis-coded it?" was the question presented to me.

    The woman working for Blue Cross explained the procedure for them to change the claim.

    So I call the iBot people.

    They are frustrated, not with me but with the fact that they do not feel there is a better code.

    "What is the code?" I ask. Though she doesn't tell me. She suggests it is the insurance company's issue.

    I call the insurance company again, and after a bit of time re-iterating that this is the usual amount, I am given the code being sent to them.

    It is 2008 HCPCS K0108.

    The text description for this code is "Wheelchair component or accessory, not otherwise specified"

    Well crap, no wonder they paid so little. This looks like the code you would use for replacing the cup holder (if it had a cup holder, which it doesn't). Clearly this does look wrong.

    I resolve to call the iBot reimbursement folks again, but first I prepare myself. It looks like perhaps another code would be more appropriate, but I should try to figure out which one.

    Perhaps 2008 HCPCS K0733 would be better.

    The description for that one is "Power wheelchair accessory, 12 to 24 amp hour sealed lead acid battery, each (e.g., gel cell, absorbed glassmat)".

    Not much better, but a friend of mine in the industry tells me that the intent of the "e.g., gel cell" which is not about lead acid batteries, indicates it is more general purpose than it sounds.

    I have looked through all the other "2008 HCPCS K-codes" and none of them come any closer.

    So I talk to the iBot folks again.

    They are doubtful.

    "It doesn't sound like the right code," I am told.

    I agree, but at least it hints at it being a battery, instead of the code more suited for the cigarette lighter (if the iBot had a cigarette lighter, which it does not).

    She is going to check with her management on what they think.

    Though the "reasonable and customary amount" for 2008 HCPCS K0733 is about the same as for the 2008 HCPCS K0108 anyway, so the insurance answer will likely be the same.

    Other codes, like 2008 HCPCS E2397 ("Power wheelchair accessory, lithium-based battery, each") are closer to the mark, but the wrong battery type. In theory that could be considered fraud, and I do not question their unwillingness to go down that road. Even nearby codes like 2008 HCPCS E2399 ("Power wheelchair accessory, not otherwise classified interface, including all related electronics and any type mounting hardware") seem fraught with that sort of peril.

    She will look into it, though.

    Companies that do not deal with insurance are often loathe to test the limits, and at no point did either they oir the insurance company deign to speak directly, as that would have made entirely too much sense.

    She suggests that short of her hearing otherwise from her superiors, the only way to handle this, especially when Blue Cross originally claimed to expect that the battery to be covered, was to appeal the decision.

    Of course I am on my own doing the appeal, though I am forwarded the iBot battery stats to help me do it.

    I am reminded of something I was told by several people in response to my previous insurance posts: that the principal cost for the typical person is the administrative overhead. And I can't help feeling like this is engineered overhead:

    • Provide a wheelchair with warranty coverage of five years and whose effective life overall is more than twice that;
    • Provide that wheelchair with batteries that have an anticipated effective life of one year;

    This problem of mine would ordinarily be expected to occur at least five times and perhaps 10 times or more. Yet the insurance has no methodology by which to bill for such a situation that does not rely on the time consuming for me and more expensive for the insurance company (under the "time is money" theory of resource costs) process of the appeal?

    This is just stupid. Pure stupidity.

    I guess maybe if I were too dumb or too busy to or whatever to appeal than the insurance company saves some money. Or Microsoft saves some money.

    But Microsoft will never see this one (people reading my blog notwithstanding), as Blue Cross will pay the amount on first appeal anyway.

    This is hardly unique to my iBot -- a casual survey of just about every powered wheelchair and scooter will show that irregardless of battery type batteries will usually and customarily cost way more than the "reasonable and customary amount" and that the effective life of batteries is pretty much universally less than the devices they power.

    So in other words this whole situation is engineered wrong, and someone should fix it, to minimize the additional costs, costs that while not the biggest part of the expense in my case can well be in other cases. More common cases.

    Why engineer inefficiency?

    I plan to make this battery last as long as I can. The fewer the number of times I have to deal with this crap the better. Maybe that is everyone's intent here in making it such a pain in the ass?

  • Sorting it all Out

    I Triple Adar you!

    • 5 Comments

    Some may consider this blog to be a continuation of I Adar you! Hell, I Double Adar you!, written about 2.5 years prior.

    The title might help that opinion, since it is certainly suggests a continuation. :-)

    But i'm not sure whether I think of it that way.

    The quote I am going to take out of it will also probably help there:

    ...but the Hebrew calendar starts jumping too far ahead if left to its own devices, so seven out every nineteen years an extra month is added -- generally this is known as intercalation.

    You can see how I buried a very technical piece of information about the calendar there in the language.

    It looks like the same kind of over-generalization as phrases like "every four years we add a day" in discussing leap years, since that says nothing of the exceptions to the rule.

    Unrelated tangential point: We have no other calendar supported by any Microsoft platform that has more than 12 months. I mention this only because someone was asking; also, we have no support for weeks longer than seven days.... :-)

    Thinking about the original inspiration behind the Gregorian calendar, mentioned in It's still not a Freedom Tree -- and it's AD, fercryingoutloud!:

    ...this was for the Gregorian calendar, that so many "Protestant" and well basically non-Catholic countries did not pick up until as long as two centuries later since its secular benefit over the Julian calendar (fixing the drift caused by the Julian year being a tad too long) was ignored due to the specific religious benefit (keeping the date of Easter from drifting further and further).

    The driving force behind the Hebrew calendar has a similar motivation, since there are two central guding principles:

    1. Months are strictly lunar, and
    2. Passover must always happen in spring-time.

    Now obviously Spring is something driven by the Solar year and it has nothing to do with the moon. So you can think of the calendar as a rather fancy way to keep these two very different cycles (lunar and solar) from falling too far out of sync to mess with some of the expectations around Passover.

    The leap months happen in specific years:

    • the 3rd
    • the 6th
    • the 8th
    • the 11th
    • the 14th
    • the 17th
    • the 19th

    years of the full Metonic cycle (it is kind of fun that two of noteworthy uses for the Metonic cycle are in both the calculation of the Hebrew calendar and the calculation of Easter -- though in very different ways!).

    Bonus trivia question for the reader: Using just the information here in this blog and no other source, can you explain why one cannot simply say that the Hebrew year's connection to the Gregorian year repeats every 19 years? All of the information you need to answer the question is in this blog and no links need to be followed.

    But now that I pointed out the huge effort to correct drift in the Gregorian case, I have to mention another point: the deal with the full day the Hebrew calendar loses every 231 years, as described in Wikipedia here):

    "Rectifying" the Hebrew calendar
    Given the importance in Jewish ritual of establishing the accurate timing of monthly and annual times, some futurist writers and researchers have considered whether a "corrected" system of establishing the Hebrew date is required, due to the small but accelerating changes in the actual lunar cycle interval. Further religious questions include how such a system might be implemented and administered throughout the diverse aspects of the world Jewish community.

    Irv Bromberg has proposed a 353-year cycle of 4366 months, which would include 130 leap months, along with use of a progressively shorter molad interval, which would keep an amended fixed arithmetic Hebrew calendar from drifting for more than 7 millennia.

    It has been argued by some that, as the fixed arithmetic Hebrew calendar was established on the authority of Hillel II, President of the Sanhedrin in Hebrew year 4119 (358 CE), only an equal authority (a modern Sanhedrin) can either amend it or reinstate the observational Hebrew calendar. The attribution of the modern Hebrew calendar solely to Hillel II has, however, been questioned, as the rules developed over a long period of time. (see Hillel II)

    Microsoft will likely let the problem be solved by others and will just pick up the solution on their own. :-)

    The argument that a rabbi of specific stature would be needed is no more odd than those who argue against "modern" solutions in other cases like I mention in Good things can happen when religious authorities work with science and technology:

    The real problem (in my opinion) is that the original intent is not completely known. Even if the motivation for rules was known and the rules were made since they were the best at the time, then at this point there is still no way to know if those who made the rules would accept such an innovation or not. Thus it could be easily considered either pious or heretical, depending on how you look at it. And one would be hard pressed to argue the point either way, since it is a legitmate religious question.

    My personal take is that from what we know of Hillel, he was a stand-up guy. He's take the correction gracefully and incorporate it. There would even be some parable in there, to boot!

    Though the lack of agreement on future course and the lack of desire to splinter Hebrew calendar usage may keep this correction from happening any time soon. Perhaps only when Passover is about to be no longer in the Spring will action finally take place....

  • Sorting it all Out

    The Least Common Denominator Effect on features?

    • 0 Comments

    Regular reader Ivan Petrov asked, over in the Suggestion box:

    Hi Michael,

    There has past a long time I've not posted here :-(

    Anyway, my question is:

    Why in Microsoft Office 2010 the 'Choose ScreenTip Language' Preference respectively the 'Set your ScreenTip language' Option has not been added to the 'Microsoft Office 2010 language Preferences' application instead in the 'Language option' of every 'Microsoft Office Application', as 'ScreenTip Language' option is a Global preference for all 'Microsoft Office Applications' (Word, Excel and etc.).

    Regards,
    Ivan Petrov.

    That's an interesting question. :-)

    In the absence of a member of the Office division, we'll have to see if we can find hints about the reason.

    Starting from the Microsoft Office 2010 Language Preferences:

    Okay. Good.

    There is a lot going on there, but it is kind of clear what is happening.

    Now let's see what the fuss is about.

    First in Word:

    Ah, I see what Ivan meant.

    A lot of settings are shared defaults from the one dialog thast you can then override in the individual Office application.

    Interesting.

    In PowerPoint:

    Yep, there too.

    I sense a pattern.

    Oh, wait a minute.

    I know the best place to break a suspected Office pattern.

    In Access!

    Ah, it isn't there -- this looks like the same subset of controls!

    Perhaps an accident/coincidence.

    Maybe there is an Office person lurking nearby who knows if it more complicated than a Microsoft Office 2010 Language Preferences Least Common Denominator effect?

  • Sorting it all Out

    Khmer and let me tell you about a LIP....

    • 5 Comments

    THE WINDOWS 7 KHMER LANGUAGE INTERFACE PACK IS LIVE!

    Click here to download the Khmer Windows 7 LIP via the Microsoft.com Download Center.

    Please note that the Khmer  Windows 7 LIP can only be installed on a system that runs an English client version of Windows 7.   It is available to download for both 32-bit and 64-bit systems.

    The Khmer Windows 7 LIP is produced as part of the Local Language Program sponsored by Public Sector.

    A LITTLE BACKGROUND INFORMATION ON KHMER

    NUMBER OF SPEAKERS

    12 million native speakers in Cambodia; 20 million speakers worldwide

    NAME IN THE LANGUAGE ITSELF:

    ខ្មែរ

    Khmer, also called Cambodian, is the official language of Cambodia where it is spoken by about 13 million people as first or second language. It is also spoken in neighboring Vietnam (1 million) and Thailand (1.2 million).
    Due to the cultural influence of Hinduism and Buddhism, Khmer has heavily borrowed from the Indian languages Sanskrit and Pali. Unlike the neighboring languages Thai, Laotian and Vietnamese, Khmer is not a tonal language.

    FUN FACT:

    Khmer words are predominantly monosyllabic. Words with three or more syllables exist, particularly those pertaining to science, the arts, and religion. However, these words are loanwords, usually derived from Pali, Sanskrit, or more recently, French.

    Khmer user interface primarily used Khmer UI, the font I discussed previously in blogs like Want to hear about a cool new typographic convention? Khmer, and I'll tell you about it...; as it turns out, the changes are leading to something of a generation gap, with older native speakers much less happy than the newer ones.

    CLASSIFICATION:

    Khmer is one of the main Austroasiatic languages. It belongs to the Mon-Khmer subfamily (of which Vietnamese is a member, too). 

    SCRIPT:

    The Khmer script, an abugida, evolved from a variant of the Devanagari script called Pallava. Since Khmer does not have enough graphs for the vowels being used in the language, the vowel sign is interpreted differently depending on the accompanying consonant symbol (which can belong to two different series). There is also a number of diacritics which are used for differences in pronunciation and so-called subscript consonants which help form consonant clusters and cancel the vowel value of the preceding graph.  Khmer has its own set of numerals derived from Indian numerals which also used for Thai.

    Click here to learn more information about the Khmer language.

  • Sorting it all Out

    When Moses was in GDI+ land, "Let my font memory go!"

    • 3 Comments

    The question was (as many of these questions) are, entirely reasonable.

    I tried to write a simple program to open a lot of fonts and dispose them. I am not seeing the GDI+ memory itself getting freed. Am I doing something wrong in this code? My code is written in C#, as shown below:

            static void Main(string[] args) {
               int i = 0;
               foreach (FontFamily fontfamily in FontFamily.Families) {
               i++;
               try {
                 Font f = new Font(fontfamily, (float)8.0, FontStyle.Bold);
                 Console.WriteLine("Created Font #{0} {1} ", i, f.Name);
                 f.Dispose();
                 f = null;
               } catch (Exception ex) {
                 Console.WriteLine("Exception while creating Font {0} {1}", fontfamily.Name, ex.ToString());
               }
               // Console.ReadLine();
               fontfamily.Dispose();
             }
             Console.WriteLine("Finished");
             Console.ReadLine();
           }

    My questions are: When exactly does the GDI+ memory that corresponds to a Font get freed? And how can we free the memory? Any suggestions will be sincerely appreciated.

    Like I said, quite reasonable!

    However, there is no guaranteed symmetry of reasonableness between question and answer. And this case is no exception....

    The answer that came back from some of the GDI+ experts was a surprise to some.

    It would have been a surprise to me if I weren't so numb to shock in things in GDI+ that didn't work the way I wanted and/or expected them to:

    To optimize performance, GDI+ retains some resources throughout the lifetime of the invoking process.  These resources are not freed by the call to dispose.  The only supported way to free these resources is to end the process.

    Ouch.

    And then one of my favorite people knowledgeable about details in WinForms that few people know about, Jessica Fosler, added:

    There’s some caveats about HFonts as well – if you’ve called ToHFont at all (maybe to pass out to a p/invoke call) you need to call DeleteObject yourself.
    (ref Font.ToHfont Method)
     

    But yes, if I remember - if you Delete a font that’s still in use your control will be majorly unhappy and revert back to a really ugly system font.  If you’re disposing the font, you need to make sure it’s not in use anywhere still.

    Looks like there isn't any way to free that memory up, in that case.

    Seems like a[nother] good reason to not use GDI+ if you can skip using it, just in case the myriad of other problems don't manage to dissuade....

  • Sorting it all Out

    No one knows what it's like to be the sad man, to be the bad man, with blue filtered sight!

    • 5 Comments

    This blog you are reading is not about Viagra (a.k.a. sildenafil, aka. the little blue pill). Well it is about it some even though I'm not taking it, so it kind of isn't. You'll understand if you read it. Though I am curious if all of the mentions of Viagra and sildenafil will cause this page to be not listed as high in Google, or to be filtered as adult content, or spam. :-)

    For at least the first ten years of having multiple sclerosis, one of the things I could count on happening regularly was brand new symptoms. They were

    • often hard to describe;
    • only sometimes specifically listed as "MS" symptoms;
    • more often listed vaguely as neurological signs and symptoms.

    Eventually I stopped reporting them most of the time, as it really didn't accomplish anything or change anything.

    So my Lhermitte's Sign or my positive Romberg or my hearing tones half an octave lower (which destroyed my ability to tune guitars long before lack of coordination ruined it anyway) or loss of position sense in my limbs or foot drop in my left foot (which ruined manual transmissions and my porsche for me) or lack of temperature sensation in my limbs or inability to discern touch from pin or somatic RSD-esque ashen skin appearance or double vision or loss of peripheral vision or really any random  new symptom that might pop up?

    It's the MS. Again. Every time.

    Then over time, there were not new symptoms so often (one imagines cards that some imp picks to choose new symptoms and they just ran out or cards?).

    The old signs and symptoms would then fill in the slack.

    But then every once in a while a new symptom would pop up.

    Like yesterday, when I started noting that as soon as things started getting even a little bit darker, everything would start getting truly, deeply, and distractively blue.

    It is called Cyanopsia. As per that Wikipedia article:

    Cyanopsia is a medical term for seeing everything tinted with blue. It is also referred to as blue vision. Cyanopsia often occurs for a few days, weeks, or months after removal of a cataract from the eye. Cyanopsia also sometimes occurs as a side effect of taking sildenafil(Viagra), Cialis, or Levitra (Viagra and vision, n.d.).

    Cyanopsia is a medical symptom and not a sign. It is a purely subjective state, and can be caused by a physical or functional abnormality of the eye, a physical or functional abnormality of the brain, or by nothing at all (i.e., it can be purely psychological). Cyanopsia, if unaccompanied by any other sign or symptom, is not an indication of any disease or disorder. Unless it causes an impairment or significant distress, it is not in and of itself diagnostically relevant.

    Interesting.

    Now I just so happen to have MS involvement with my optic nerve (the P100 wave of my Visual Evoked Potential that usually happens in 100ms is actually more like 150-160ms) and I have known MS plaques in my left/right occipital lobes visible on my MRI (you can't see them in the scan I have on the blog home page but they show up in other views and scans).

    So most likely this is due to a problem somewhere between the optic nerve and the right/left occipital lobes of the brain. Probably the optic nerve.

    Where it is doesn't matter so much, because there is one cool thing about eyes. And that is that they have the easiest possible physical therapy of all time. They just have to look at stuff!

    Now the puns ran heavy last night, as did the song lyrics (Behind Blue Eyes, Blue Velvet, Am I Blue, and so on...).

    Though there is that one interesting factoid about cyanopsia -- the fact that it is a common side effect of too much Viagra.

    This made the conversation with both the insurance health nurse and the neurology resident on call take at least 15 minutes longer than it probably needed to, so that Viagra involvement could be ruled out by them (in a patient not taking Viagra!).

    And I found out another interesting sheaf of factoids in talking to these folks in the industry.

    The health care industry, I mean. Though there are other industries making heavy use of Viagra, of course!

    • Factoid #1: Viagra doses (25mg, 50mg, 100mg) tend to cost almost the same amount per pill irregardless of which dose, which often leads people to take a bigger dose than they need to -- and this usage pattern leads to mild OD as a common consequence.
    • Factoid #2: The issues often associated with performance anxiety can often lead a man to take more Viagra then he is supposed to, if there is worry about being able to perform at a specific time -- kind of built-in OD expectation.
    • Factoid #3: When men who take too much Viagra are talking to the medical folks about side effects, they pretty much always lie about taking too much -- which provides some insight into indications of cyanopsia usually occurring at "lower doses" in clinical settings than in the original studies - because they aren't in fact lower doses. In the words of Dr. Gregory House, everybody lies.
    • Factoid #4: Most insurance companies, including Blue Cross, don't cover these drugs except when there is an underlying medical cause, though the unofficial word is that this is pretty easy to argue for just about any medical condition since this is a commonly listed possible symptom. And the easiest way to take too much of something is when you didn't really need to be taking any of it.
    • Factoid #5: A lot of Viagra is received threough means other than the health care plan (especially given Factoid #4), which is why they were asking me I was taking it even though it was not on my list of medications. Because it often isn't....

    These factoids combine to make sure that in today's society, cyanopsia is seen more often in people taking Viagra than from pretty much any other cause.

    Which is why both of the early phone conversations had to waste so much time given the almost garden path sentence issue where mentioning cyanopsia in someone only 40 years old leads medical folks to assume it's all due to sildenafil.

    Me not having taken it non-withstanding.

    My feelings about the whole thing are well described in my Twitter tweet about it last night:

    1st new multiple sclerosis symptom in yrs: CYANOPSIA. Unfair of MS to give me Viagra side effects w/o the "benefit".

    Now this is obviously a little silly; I would not ordinarily be looking for the "desired" effects if I am in public, in a club. But you know what I mean....

    I spent at least a third of the night at the official opening of Pink in Seattle (I had been at both  prior "soft" opening too; at least half othe owners and the general managaer and many of the bouncers and several of the bartenders like me at Pink!), which when the pink shirts of a third of the staff combined with my blue-filtered view of the world led to quite a few purple people clearing empty dishes off the bar....

  • Sorting it all Out

    The ordinary nature of being exciting

    • 5 Comments

    There are many things I cannot do, e.g. run, dance, ski.

    Another is the ability to maintain a sustained anger about anything, really.

    One could rightfully assume that my blog of a week ago on the Health Care changes at Microsoft (The exciting nature of being ordinary) came largely from such a place.

    But it does not really tell the full story.

    Several people at various levels of importance/seniority reached out to me and assumed I had not seen the Town Hall framing of the issues involved, but I had.

    It did not really tell the full story, either.

    A few others reached out to me, assuming my job was about to be lost, but they didn't understand the larger problems that would entail, or really the mindset of the people involved. This too is an interesting topic to me, though one I doubt I would cover unless I was leaving and felt like burning a lot of bridges. which for the most part I don't.

    Some might think it too bad I am not angry now -- since that is the way to get Mini linking to you and if I had that as a goal then I suppose I could aim my content that way. I remember a lunch a few years back with Robert Scoble where he lectured me about all of the rules about "A" list blogging I routinely violate. I told him I wasn't trying to drive heavy traffic here, and that whatever popularity the blog has is accidental.

    Although it has been an exciting week, I found it all to be pretty ordinary. So even when throughout the week friends of mine pointed out the Mini ref to see what I thought, it was hard to get excited about it. If felt ordinary....

    Anyway, in this last week, after a listening tour, some authorized research, some not entirely authorized research, several conversations, and a few revelations, I feel that I have a much better idea what is going on.

    I thought I might share my thoughts on thie matter with you, just in case you were interested in having some more discernible facts now that the anger has passed.

    If you are not interested, please leave now. :-)


    It all started with a Town Hall.

    The Town Hall had a slide deck.

    The slide deck had a chart in it.

    The chart had a title on it: Microsoft U.S. Health Care Trends.

    The title had a subtitle under it: (Per Employee Per Year).

    The figures in the chart were alarming:

    • Cost in 2000: $5,800
    • Cost in 2009: $11,800
    • Cost in 2020: $33,900 (estimated)

    Since the chart notes a 203% difference (aka 103% growth) between the first and second points, and a 287% difference (aka 187% growth) between the second and third, this is obviously kind of alarming.

    These stats, along with some basic stated principles of the company's health care policy, are the justification given for the suggested changes.

    If you were there or saw the video then you knew all this, but I wanted to have a basis for understanding that even those who have not seen or cannot see the slides can have.

    It leads us to the problem.

    And the problem is?

    Well, the chart of this slide deck of this Town Hall is more than just a little bit manipulative.

    I'm going to take a moment and list our all of the ideas I can think of factors that can, over the course of 20 years, have statistically significant impact on those numbers, on that graph:

    1. The cost of the underlying health care services are increasing
    2. The age of the average employee is increasing
    3. The number of dependents (spouse, domestic partner, and/or children) is increasing
    4. A tendency to ignore preventative measures and favor ones that only apply once one is sick leads to ever-increasing expenses
    5. As employees go through the natural process of sickness and recovery their general lack of attentive oversight leads to natural tendency of uncorrected mistakes to increase over time
    6. Inefficiencies and lack of appropriate oversight in changes and coverage of new services occur, increased costs are incurred and there is insufficient review to correct the issue
    7. As health care service providers realize the generous nature of Blue Cross when they only administer and Microsoft is paying the bill, the amount of service given increases, at times out of proportion to the need
    8. As employees realize the generous nature of Blue Cross when they only administer and Microsoft is paying the bill, the amount of service given increases, at times out of proportion to the need
    9. As health care service providers with the required mens rea realize the generous nature of Blue Cross when they only administer and Microsoft is paying the bill, they may find the actus reusto take advantage of it and commit the crimes of theft, fraud, and so forth
    10. As employees with the required mens rea realize the generous nature of Blue Cross when they only administer and Microsoft is paying the bill, they may find the actus reus to take advantage of it and commit the crimes of theft, fraud, and so forth

    You get the idea.

    If I had spent another hour I could have thought of more (e.g. the overlap of Worker's Comp. cases covered via health care benefits due to the ease of doing it -- something i have witnessed and which while I cannot claim it is explicitly encouraged I can claim it is implictly encouraged -- and certainly not audited or monitored), but this covers the broad strokes.

    Now on this list, item #1 is not changeable by the HR Benefits portion of Microsoft. It really is completely outside their power to do anything significant to "fix" it.

    Items #2 and #3 are not changeable by the HR Benefits portion of Microsoft without severe and in many cases illegal changes to the core guidelines of how benefits and provided and how employees are let go. Given a general aversion to this, it is clearly in Microsoft's interest to reject any changes (e.g. not cover dependents, lay off sick or older employees for being sick or old) out of hand.

    However, given the simple facts that those first three factors

    • have a significant impact on the increase in cost of health care per employee, and
    • are items that can be independently tracked and thus removed from the figures for the purpose of determining the impact

    the simple fact that Microsoft has not stated they want to change the philosophical basis of the benefits means that trying to keep the chart simple in this way leads to very misleading numbers.

    You can't talk about a problem honestly and openly when the proofs given are not honest and open themselves.

    Anyway, to continue:

    Items #7 and #8 are difficult to solve as long as the rules encourage it -- the water tends to flow where it is most natural to do so. The HR Benefits portion of Microsoft cannot do much here if it cannot change the nature of the coverage to change that perception.

    Items #4 and #5 and #6 are also difficult to solve as long as there is no real change in mindset; and when the mindset is created by the rules the system works under, it is difficult to change without changing the rules.

    Items #9 and #10 are crimes -- whether felony or misdemeanor or something to inspire civil suit if one wanted to recover damges. And the HR Benefits portion of Microsoft has a real vested interest in such actions when they happen.

    There are, as I said, other items that could be added to the list, though one the whole I believe they all fit in one if these categories.


    Microsoft's (pre-Health Care Change) Remedies

    The issue, while new for most employees, is not new for the HR Benefits portion of Microsoft or the Executive Staff or the Leadership Team.

    And people in the HR Benefits portion of Microsoft have been working the problem for several years now -- particularly:

    • item #1 -- by trying to shift costs (e.g. having doctors do house calls is cheaper than having employees go to emergency rooms
    • item #4 -- by openly encouraging preventative care measures
    • item #6 -- by changing processes when they are identified that are not correct and lead to increased cost
    • item #9 -- by attacking such fraud directly when it is discovered
    • item #10 -- by attacking such fraud directly when it is discovered

    However, they get no credit for going after these things first in my eyes as they did not announce these things the way they did the plan to share costs with he employees.

    Note that in many cases these items are hard to address since the bullets that try to change employee behavior (the first two) have limited success when the employees do not feel they have enough reason to pay attention to them and take advantage of them, and the bullets that try to fix inefficiencies and problems and crimes (the last three) are hard to identify when no one reports them (and if no one is paying attention because there is no impetus to pay attention, then this is the behavior the system creates).

    Additionally, problems with Blue Cross were being handled (and are still being handled) as external vendor management issues, so that even though the HR Benefits portion of Microsoft has been working on the problem for years and making great efforts to go after everyone other than the employees to preserve the original principle of not wanting them to worry about health care, they get no credit from me or many other employees because they didn't let us know this was happening and that they were trying to solve the problem years ago. From our standpoint, the first major step beyond tracking the problem was to tell us how much we were going to have to pay.

    Sure, the most obvious "answer" to many problems here is to make employees pay more attention, but this pretty much impossible to do, beyond what they have been doing. And even doing that stuff has still led to increased costs (which as a side note suggests additional problems with the chart and the numbers that could be resolved by better use of the data, but I'll quit beating that dead horse).

    The "easiest" way to get people to care is to get them involved.

    To be honest, I myself know of only two ways to consistently motivate huge numbers of Microsoft people to do stuff: you have to either make stuff free (this works great with pizza and dove bars and lattes and beer), or make stuff cost something (preasumably the hope is that if employees were needing to pay they would pay more attention).

    Okay this is an interesting plan they have.

    There, I said it.

    In fact, it is so interesting that it is too bad that they really are wrong, Wrong, WRONG here.

    Perhaps I should explain why I think they are incorrect.


    I'm going to categorize Microsoft employees into a few different groups here. Think of this as the broad over-generalizations portion of the blog today, which is an answer to even worse over-generalizations in the plan.

    • The young and healthy (and probably single) group, who have minimal health care expenses. They may have used it a little, but now they will probably go to the Health Savings Plan and many of them will spend less than $1000 a year -- so that the money the HSP gives them for future health issues will be banked. The additional cost to Microsoft for these folks: up to $1000 a year (or $1500 during these next two years) that would not have been paid out as health care either. These are people who didn't cost Microsoft hardly anything under the old system.

      Note: what little they have in Health Care expenses, they'll likely be paying more attention, since some of their valuable saved up cash will be spent. Them looking can help solve many of the other problems that come with not paying attention, but as their expenses are so minimal it is not much benefit for Microsoft.

      Note 2: I expect that this group is not huge, though certainly these first two years are the ones where moving them over to the Health Savings Plan is critical since healthy people don't spend time thinking about health care but a cash bribeinducement is just the thing to attract them.

      Note 3: Getting this group thinking about health care is probably thought of a big win -- these are the ones who still think they are going to live forever.

     

    • The mostly healthy group who have some Health Care expenses beyond the [still free, covered at 100%] ones. They may spend some percentage of the $1500/$1000 in the Health Savings Plan, but they are fairly break-even, Most likely -- not saving much in the Health Savings Account, but not overdrawing it, either. The additional cost to Microsoft for these folks: probably nothing, mostly -- they are in that sweet spot where they might have been spending that same amount as will be in the account. These are people who didn't cost Microsoft much under the old system.

      Note: This group is needing some Health Care, and they'll likely be paying more attention, since some of their valuable saved up cash will be spent. Them looking can help solve many of the other problems that come with not paying attention, and perhaps they are spending enough that the money their "extra eye' on the situation is can be worth watching.

      Note 2:I expect that this group is also not huge, though certainly these first two years are the ones where moving them over to the Health Savings Plan is critical since healthy people don't spend time thinkign about health care but a cash bribeinducement is just the thing to attract them.

      Note 3: Getting this group thinking about health care is probably thought of a big win.

     

    • The "hell yeah I use the health care" group, who use more than the $1000 that would be handled by the deductible (which they can pay out of the Health Savings Account), but less than the $11000 total a year one would have to spend to get back to 100% coverage. The additional cost to Microsoft for these folks: Again probably nothing -- it is no accident that the total amount spent on health care ($11,000) so closely matches the average amount per employee. I suspect this group has a lot of people in it.

      Note: Getting this group thinking about health care is probably thought of a huge win and the driver of most of the decision.

     

    • The critical accident group, who were in one of the other two and they have a huge unplanned event happen like falling off a mountain or being attacked by wolves or whatever. These people will cost Microsoft the most, since they are the ones who will spend enough on health care that they get to eventually move back into a "100% coverage" plan. The additional cost to Microsoft for these folks: not much. I mean, it will cost oodles, though it is more or less the same oodles as before. The user perception is that they are making $2000 less along the way and they really are (even though the Health Savings Plan's job is to pay for stuff that would be co-pay or whatever, it is too easy to look at a balance reduced as money lost that was once theirs. So even though it costs Microsoft about the same, the employee was forced to cough up money they weren't expecting to have to, making $2000 less after their accident.

      Note: Assuming the accident doesn't cause a long-term expense, the person may be back to normal by the next year, with nothing but the memory of how in their time of need Microsoft paid them less, that it cost them more.

      Note 2: They may or may not be reviewing medical stuff more closely during the period of accident than they would have otherwise (depending on how busy he accident recovery itself keeps them). Afterward? What people choose to remember for the future that is relevant to the Microsoft/health care situation will vary, but in future years they will probably remember what it is like to lose that whole $2000 more than anything else, and how they were being charged upfront for the first $1000 and then nickel-and-dimed for $1000 of the next $10,000 spent. While they were recovering.

     

    • The Long term expensive illness group, the ones with multiple sclerosis (like me) or diabetes or AIDS or who found out that Dr. House's "It's not Lupus" shout can occasionally be wrong. They are people who are definitely so far from the $11,000 a year category of expense that the "charged upfront for the first $1000 and then nickel-and-dimed for $1000 of the next $10,000 spent" thing is an annual experience that may be over before they are through with February, and then for the rest of the year they don't care anymore. The additional cost to Microsoft for these folks: no appreciable difference, since the shared bit of cost is nothing compared to the actual cost.

      Note: While I don't personally take this whole issue as discrimination against the sick, I am friends with people who do (I think of it as a side effect whereas they don't distinguish on the intent here and/or are not as prepared to assume Microsoft is being honest in the intent). Given that many in this group already face genuine discrimination of one sort or another, it can be quite easy to believe that thinking of it differently is pointless and a true distinction without a difference, since the effect is the same.

      Note 2: This group does watch their medical care for quality and therefore perhaps are never in that "I don't pay attention" category. But at the same time I am very willing to accept both $1200 a month drugs that help me and the iBot wheelchair that Blue Cross paid for 100% despite it being from an out-of-network provider. And if Scott Hanselman had the opportunity to be able to use a system for his diabetes that was more automated and made his life more normal and yet cost two times or four times the price or more, he would probably want it because properly managing the disease is what keeps him from going blind or losing limbs or even dying (not uncommon when diabetes management is not done as well). From a fiscal Health Care at Microsoft standpoint this can thus be significantly more expensive than the savings the plan might save them.

    If you carefully consider the impact of the health care change on each group, you may notice that the impact does not necessarily get felt where it is arguably most needed.

    In an effort to maximize the awareness while minimizing the pain, they found a way to in several cases (including mine) maximize both.

    I understand what they did and why they did it, but I have no respect for the way they did it as the inaccuracies in the presentation of data and the fact that this blunderbuss shotgun approach that will not have the best impact is hurting people like me currently and will almost certainly require significant changes and/or additional costs in the long run.

    As en engineer who is on the front lines of the new costs, I can't claim to be happy about poor communication of a poor plan. That is both bad engineering and bad marketing.

    As someone who recognizes the importance of both, screwing up either one is pretty bad; screwing up both is a poor way to present to a bunch of engineers and marketing people.

    Also inescapable is the fact that it effectively discriminates most against those most sick (whether one believes that is the intent or not, or whether you believe the distinction matters or not), rather than discriminating against the three things that (in my opinion and in the opinion of others I have talked to) should be most penalized given the above:

    • those who continue to fail to pay attention to Health Care service and administration, and
    • those who attempt to defraud the company in one of the many ways I mentioned, and
    • those policies that continue to make either of these things continue to be likely.

    Hard problerm? Sure. But I thought Microsoft wasn't afraid to take on the hard problems.

    Or to solve them properly.

    Especially since (by loose analogy) after putting the wrong person in jail for a murder, you will still have the murderer out there killing people and therefore will have to do more to catch the murderer eventually....

    What they have done here is a second rate solution, and I think we deserved, and that we deserve, better.

  • Sorting it all Out

    "Breaking changes" are mostly about potential, not realization

    • 2 Comments

    "Breaking changes" is often referring to the contract of both an interface's definition and its behavior, which makes it one crazyass metric.

    Much moreso for the latter than the former, because the former's "break" potential is direct a compile-time issue, while the latter'as "break" potential is a nebulous theoretical issue once you move past the "elementary school" issues of exception types.

    Bundlng all of this in one place is ridiculous since it is like bundling up your apples with your seas otters.

    Take me word for it, this is a bad idea; when I have done this in the past, my sea otters have eaten my apples every time.

    So for the rest of this blog, let's assume I have added a define:

    #define BREAKING_CHANGE SutbleBehaviorChangesThatBreakAppsWhenYouMayLeastExpect

    and just make that part easier, since the problem I am limiting the definition to is enough on its own....

    You may have noticed earlier this month that when I wrote Figuring out the applicability of the term "breaking change", I palmed a card there. Lots of you didn't but a few of you did.

    What did I do?

    Well, by focusing only on the behavior at two levels of granularity:

    • the level of an individual data change in a locale, and
    • the level of the bundle of many changes made in one release

    the simple fact that every version is guaranteed to have changes makes the second level a guaranteed expectation of a breaking change that every application simply must assume as both past behavior and future intent will apply their own behavioral correction on anyone who refuses to allow the facts to intrude on their world view.

    Note that .Net 4.0 forces managed code developers to learn the same lesson for managed culture changes, an issue they were largely shielded from in all previous versions!

    That blog post is a very reasonable method of framing the question in a way that lets one control the direction the conversation will take.

    If you read it, then sorry if you feel manipulated. :-)

    Now it is time to widen the problem a bit and see if I can make the issue a little more complicated!

    We'll start with the rule.

    The main rule.

    The rule we never never never want to break.

    We never change locale data except in new OS versions.

    Even after we make a change in a new version, we do not go back and change prior versions.

    Easy, right?

    There are very good reasons for this, but one of the most important ones relates to both managed code that parses data formatted according a specific culture and any work that another developer has done to do the same thing with locale-specific formatting. Because if any of the formats change within a single version then code that would never have broken can suddenly break.

    And that is lame, when it happens.

    So from a "breaking change" application compatibility standpoint, this is a very careful and deliberate rule that avoids breaking customers.

    Then of course every good rule kind of begs for an exception.

    And that exception?

    Currency updates with the likely potential of huge impact on large customer segments that have a reasonable expectation of the change occurring.

    Both the initial update of many countries to change their currency to the Euro and later updates as new countries joined the Euro zone were judged to fall into the category carved by this exception. And thus far every country moving to start using the Euro as their currency has enjoyed this privileges of membership of this category

    Other updates with smaller impact have had mixed results -- some have been taken even when only some of the dimensions of this exception's requirements are proven, many more have not.

    Each of those two groups will have both people in it

    • grateful for the results (in one case because people got the change they wanted and in the other because their apps kept working) and
    • angry about them (in one case because it broke their application and in the other case because Microsoft is not picking up a change that they consider crucial).

    I won't go so far as to say there is always a completely consistent bar applied here, because the decision is so often dependent on how compelling of a case is made and how backed up by facts it is -- above and beyond the obvious objective points like "national standard" and such -- and those more subjective requirements can often drag the issue either over the finish line or into the penalty box, by the time all is said and done.

    You may even have your own examples of the past in your mind as you read this blog.

    And perhaps even prior blogs on Turkish or Kazakh or Paraguayan, and so on. I suspect it will always be this way.

    Okay, now that I have tried to outline everything in a way that I think is all reasonable, it is now your turn to rip holes in this and explain why too much is changing, or not enough is.

    Ready? Set? Go!

  • Sorting it all Out

    Where'd that font go? Was it ever in there?

    • 0 Comments

    Over in the Suggestion Box, Beat Staunber asked:

    Michael, remember this post? The big font list in Windows

    What happened to the Arabic font Majalla UI? It no longer is shipped with Windows 7. I read somewhere it may have been merged into Segoe UI. Is that true?

    Thanks,

    Beat Stauber

    I was wondering if anyone was going to ask this one!

    The story I told at the top of that blog:

    I was talking with Simon Daniels the other day and I asked whether there was some information about the fonts that can be used for each of the various languages and scripts supported by Windows.

    He told me there was not, except for a spreadsheet he had (which he sent to me) which had a nice full table in it.

    I asked whether there was anything that customers could look at.

    His reply, I don't know to quite what to do with. He said they can look at my blog post that contains a copy of that table. :-)

    was a true one, but after he gave me the list and gave me permission to write it up, there were some changes....

    In particular, Majalla UI never shipped in Windows.

    It was pulled out during beta but after that list was given to me, in fact.

    I asked later when someone noticed the issue if I should change the blog and Simon suggested I leave it alone. For years no one seemed to notice.

    Well until now, I mean!

    Eventually that font made it back into Windows, though it was not technically a UI font, which made the name a bit odd.

    But if you go to the Fonts folder and search for Majalla, you'll find the font:

    Now Sakkal Majalla has some special characteristics to it, that I hinted at without naming a font, way back in blogs like 'crap cartoon font' (Part 1) and 'crap cartoon font' (Part 2) when in that second blog I said:

    One may wonder (looking at that huge list above) why it seems to common to create Arabic script fonts without Latins, and then thinking back to part 1 why so many of the Arabic script font coverage that does include Latin appears to work so poorly when combining the scripts.

    Short answer (a guess on my part), it is really hard to get right, so most either don't bother or do it poorly.

    Obviously this deserves a longer answer, though. :-)

    That answer is that the first part is in large part correct -- it is hard to get them to interact properly.

    But the second part is really not so true. There is just a case of conflicting goals to deal with:

    • Font can look good for all Arabic script (or mostly Arabic with some Latin script)
    • Font can look good for Latin script (or mostly Latin with some Arabic script)
    • Font can look terrible for both

    Assuming that the third "goal" is not a target that most font makers aim for and concentrating on the first two, there really is no good way to do both -- the qualities that make one look better make the other look worse.

    Sakkal Majalla, like Majalla UI, is (in my opinion) about as beautiful as you can get in Naskh when it comes to a font that "can look good for all Arabic script (or mostly Arabic with some Latin script)".

    Because it does. :-)

    Now it does this by having a little more space between lines (good for when there needs to be room for ascenders and descenders) which can look a bit like double spaced text in pure English, but it is very natural for Arabic or even mostly Arabic text. And the metrics are such that there is not some awful space penalty -- it is designed the way good text ought to be designed....

    Now it is Naskh, and I'll be talking about that issue soon. Stay tuned! :-)

Page 1 of 2 (28 items) 12