Ken's Weblog

People should not fear their governments; governments should fear their people.

Month: June 2004

  • Best To-Do List Software? .

    Best To-Do List Software?. JojoLinkyBob writes “Greetings, Council of Slashdot. I am curious what everyone here recommends as their favorite organizational software. Specifically, I am … [Slashdot]

    I use my Newton with More Info.

  • # Richard Edwards at This Is London – Steaming gang’s terror reign

    #
    Richard Edwards at This Is London –

    Steaming gang’s terror reign
    – a gang of punks has been
    surrounding bus and train travelers in London and robbing and beating
    them. They have been captured by the police, but appear intent on
    continuing their behavior while out on bail. If only the English
    hadn’t decided to be a nation of helpless victims. One bullet to the
    head of one of these punks from one of their intended victims would
    stop the whole thing in a British minute. [pournelle] [End the War on Freedom]

    Smaller gangs of punks have tried things like this on subways in the more socialist US cities, but here at least we have heroes like Bernie Goetz to stand up to them.

  • # Bob Wallace at The Price of Liberty – The Way It Should Have Been – how 9/11 would have gone d

    #
    Bob Wallace at The Price of Liberty –

    The Way It Should Have Been
    – how 9/11 would have gone down had
    Americans not been trained and required by “law” to be helpless
    victims. [price]
    bq.
    Hijacker: This is a hijacking! I have a boxcutter!

    Grandma: I have a .45! Now reach for the sky, or I’ll put a hole in
    that diaper-hat on top of your pointy little head!

    Hijacker: What?! I did not know Americans were allowed to carry
    handguns on airplanes! I thought the liberals took away your firearms
    and your gonads!

    Grandma: What alternate universe do you live in? This is America, land
    of the free and home of the brave! And the armed!

    Bureaucrat: Everyone put away your handguns and surrender! Do what
    they tell you! There won’t be any trouble if you just act like sheep!

    Grandma: Shut up you, you worthless idjit! (Smacks bureaucrat on top
    of his head, which causes him to cry like a girl.) Anyone who listens
    to anything said by anyone from the government deserves exactly what
    they get!
    [End the War on Freedom]

  • Do You Want to Save Your Changes? .

    Do You Want to Save Your Changes?. Web apps are great, but they have interface problems. A Web-based interface is just never going to be as rich as a traditional client-server app. Spolsky alluded to this in a post I made yesterday. HTML can really go just so far before you run into limitations. Here’s a big one:


    That’s a pretty common dialogue box, but very hard to do on the Web. Picture this:

    bq. Joe User has just spent 20 minutes in the article editing interface of your Web-based content management app. He’s worked over this article until it’s just perfect, laboring intensively over every word. Then he accidentally hits Refresh and it’s all gone. Joe is not happy.

    That’s the problem with Web forms — there’s no real way to stop the user from screwing themselves this way.

    After they start work on the form content, they can (1) click a link and navigate away from the page, (2) press the Reset button on the form (never put these on your forms — think about it: when was the last time you used one), (3) close the browser, (4) refresh the page, etc. There’s any number of things they can do to wipe out their form data, and it’s very hard to stop them. I know this because I tried…

    I set out this morning to try and minimize these risks in an app I’m developing. I come away from this process pretty convinced that it’s not practical. Here’s what I tried to do:

    In my page, I bound a JavaScript function to the unload event:

    window.onunload = warn_if_form_dirty;

    This means the “warn_if_form_dirty” function will run whenever the current page leaves the browser window for any reason. Note that you can’t stop the event — the page is leaving no matter what, but you can do a few things before it goes. (If you could actually stop the page from unloading, then pop-up advertisers would have a field day with it.)

    I also set two variables:

    form_dirty = false;
    warn_onunload = true;

    The first variable indicates whether or not the form data is “dirty” — whether it’s been changed since they loaded the page. The second variable indicates whether or not we should warn them that they’re going to lose their data. When should we NOT warn them? When they submit the form. Remember that the unload event fires whenever the page unloads, even if it’s because they submit, in which case they WANT it to unload.

    I added this to all my form fields:

    onchange="form_dirty=true;"

    So whenever a form field changes, the “dirty” switch is flipped. And I added this to my FORM tag:

    onsubmit="warn_onunload=false;"

    Because, remember, if they submit the form, I don’t want to warn them. In this case the unload event is fine.

    Then I wrote the actual function that will run when they attempt to navigate away from the page while the form is dirty:

    function warn_if_form_dirty()
    {
    if(warn_onunload == true && form_dirty == true)
    {
    alert('WARNING: You have chosen to navigate away from this page. You have UNSAVED CHANGES in this form. If you want to save these changes, click the Back button on your browser to return to your changes and press the "Save" button.');
    }
    }

    So, the system works something like this:

    1. User loads the page and starts working. “form_dirty” is false, because no changes have been made. “warn_onunload” is true because we want to warn them.
    2. User changes some form data. When this happens “form_dirty” is now true because they have done some work and are at risk of losing it.
    3. User accidentally hits the Refresh button (stupid user…). The onunload event fires, the “warn_if_form_dirty” function runs. It finds that both “form_dirty” and “warn_onunload” are true, so it pops the warning.

    The warning, for its part, basically says, “you may have screwed up, and here’s how to fix it if you want.” Remember that I can’t stop the event. It would be nice if I could, but the potential for abuse is huge, so you can’t. All I can do is tell them what they did, and how to fix it.

    The problem: the advice isn’t always true.

    It would be nice if you could always hit Back and get back to your data, but this turned out to be a lie. I tried it on a number of machines here in the office, and whether or not this is true depends on the browser and on the cache settings.

    It seemed to work on Mozilla and Firefox all the time, but IE was fussy. For some people it worked, but for others, IE pulled the page fresh every time. It didn’t work more often than it did.

    So I come away from his experiment thinking that fighting this scenario is a losing battle. If you’re on an intranet, and everyone is using IE with loose security, you could conceivably do some ActiveX mojo to head it off, but that isn’t an option for me.

    A possible solution: browser developers should build this functionality into the browser. They should detect whenever a user (not script) has changed form data and warn the user if they try to unload the page. Let the user choose to continue or cancel the unload.

    If anyone else has thoughts on theories on this subject, I’d love to hear them.Click here to comment on this entry [Gadgetopia]

    I’ve run into the UI inferiority of web apps myself. If it were up to me I’d do a regular application (or two, one for Windows and one for Mac) first, and then implement a web version later. Unfortunately, bosses are in love with web apps and don’t want native apps. There’s not really any logic to it, the web app only thing seems to be more fad than logic. Rather like Java, really.

  • ChatBarrier X3 brings encryption to iChat .

    ChatBarrier X3 brings encryption to iChat. Macintosh security software developer Intego on Thursday released ChatBarrier, a new tool that encrypts text messages sent using Apple’s iChat instant messaging software. ChatBarrier X3 uses 512-bit encryption to help protect iChat text messages from prying eyes — useful for companies or individuals that use iChat to exchange sensitive information. [MacCentral]

    The product web site doesn’t really provide any more information, just a vague reference to “military-grade 512-bit encryption.” There’s no source code for review, or even a mention of what encryption algorithm they’re using. It’s probably snake oil.

  • I received this email about “Skype”: On June 16, 2004, there was an internal demonstration at Skype of the alpha version of Skype for MacOS.

    I received this email about “Skype”:

    On June 16, 2004, there was an internal demonstration at Skype of the alpha version of Skype for MacOS. The alpha version worked well and the development team is working towards a beta launch of Skype for Mac. It will likely take about 2-3 months until release. When Skype for Mac is available, an email will be sent to you through Public Mind to let you know. Thanks for your patience.

  • After giving it careful thought, and with the help of some very good ideas from the comments on my earlier post , I decided that I would buy a new hard drive for my TiBook.

    After giving it careful thought, and with the help of some very good ideas from the comments on my earlier post, I decided that I would buy a new hard drive for my TiBook. I’ll put off fixing the motherboard until the bottom DIMM slot actually does fail, at which point I’ll send it to PowerBookResQ for a new motherboard.

    It was a close thing, and I thought the surprisingly large number of people who read my earlier post might be interested in my reasoning. After talking to the co-worker who sold me the TiBook, I learned that it had lasted for two years before the top DIMM slot wore out. The cost of a motherboard replacement from PowerBookResQ is twice what I’ve paid Apple in the past for my Pismo repairs. If the replacement motherboard lasts as long as the current one, that means the repair costs will be about equal–except that the TiBook also needs that new hard drive.

    Based on this, it seemed at first like it would be marginally more economical to write off the TiBook. But then I got to thinking about Apple’s response to the TiBook’s DIMM slot failure. Apple refused to repair it for their usual flat rate because they didn’t consider it a manufacturing defect–and they’re right. The use of flimsy plastic is not a manufacturing defect, it’s a design defect (which Apple apparently doesn’t feel any responsibility for).

    The problem is, the Pismo’s yearly motherboard replacement is also the result of a design defect, not a manufacturing defect. I hadn’t used the Pismo in the eight months since I got the TiBook, so it’s good for roughly another five months before it needs a new motherboard–and how do I know that Apple won’t say, “Sorry, it’s not a manufacturing defect, pay $945?” So, taking that possibility into account, I decided to go ahead and repair the TiBook, in the hope that two years is the minimum time it takes the DIMM slot problem to manifest. Of course I still don’t know how long it takes both DIMM slots to fail.

  • # Jerry Pournelle – TSA Anonymous – Dr.

    #
    Jerry Pournelle –

    TSA Anonymous
    – Dr. Pournelle had a run-in with airport sekurity
    amounting to basically a strip search. When he made to write down the
    name and badge number of one particularly rude flunky he was told that
    doing so was against regulations and if he did it they would refuse to
    allow him on the plane. So he memorized it instead. No word of lodging
    a complaint. [End the War on Freedom]

    Another example of why I don’t go near airports any more.

  • Radiological Weapons Containment .

    Radiological Weapons Containment. Vanguard Response Systems, a Canadian company, is now testing equipment for containment and mitigation of the effects of radiological weapons. This type of weapon, now commonly mis-labeled a ‘dirty bomb’, is a conventional explosive device packed with bits and bobs of medical or other radiological sources in place of bolts and nails. Such bombs would kill few if any persons not killed in the initial blast. They are weapons of mass annoyance rather than destruction… [Samizdata.net]

    This post has a refreshingly realistic look at the real effects of a “dirty bomb.”