Jan 072015
 

For years, I’ve been using the online TV guide provided by ZAP2IT to check what’s on TV. Generally speaking, I’ve been satisfied with their service.

Until last year, when they introduced a whole new layout. Which, in my considered opinion, was a significant downgrade (makes me wonder if they were perhaps inspired by Windows 8).

Today I noticed, to my considerable pleasure, that the old layout is back. I now have the option to “Switch to Classic View”. Which I promptly did, without hesitation and with no plans to change my mind.

Now I am no usability or ergonomics expert, but I do have 30-odd years of experience in IT, and I know a thing or two about user interface design. Here are two illustrations that show why, in my considered opinion, the old format is far superior to the new one. First, the new version, with some of its shortcomings highlighted:

And now here are the same shows, in the old format:

So much easier to view! So much easier to find things of interest!

When they switched to the new format, I wrote an e-mail to complain. I did not expect a meaningful response. Noticing the link today, inviting me to switch back to the old format, was a most pleasant New Year’s surprise. I wrote to them again, thanking them for making the old format available. I hope it stays that way.

I know, I know, let this be the biggest problem in my life, when people are suffering and dying in various corners of the world. For what it’s worth, I never for one moment forget how lucky I am to be able to enjoy the luxury of life in a country like Canada. But this stupid TV guide still bugged me :-)

 Posted by at 9:17 pm
Nov 192012
 

I am reading articles about the slow sales of Windows 8 and complaints about its user interface. All valid, I think. Indeed, there is an easy way to explain in two points why I would not recommend anyone to upgrade to Windows 8 on the desktop:

  1. Value added by Windows 8 over Windows 7 for the typical desktop user: None. (To be sure, there are some minor improvements, including speedups. But they are more than offset by the incomprehensible removal of the Start button and the equally incomprehensible move away from the Aero interface, which is actually quite nice.)
  2. Difficulties created by the schizophrenic nature of Windows 8 (“Modern” vs. “desktop”) and the cumbersome nature of a touch-oriented interface on a desktop computer: Lots.

In other words, you are paying a huge price (not the dollar cost of a Windows 8 license but price in the form of re-training yourself or your employees, and the inevitable productivity loss due to a very confusing schizophrenic interface) and you essentially get nothing in return.

Maybe Microsoft will fix all this with Windows 9. Maybe Ballmer has to go first.

 Posted by at 8:57 pm
Sep 272012
 

Earlier this morning, I came across the following headline on Google News: “Fewer crashes when docs report bad drivers, study finds“.

The headline almost made sense. Yes, bad drivers cause crashes, indeed the main reason why modern operating systems crash these days is bad third-party drivers. So being able to identify and report a bad driver kind of makes sense, but how would you do that? And what does it have to do with your docs? Did the author mean perhaps that a document, say, an HTML page, could display a warning about a bad driver instead of invoking the driver (e.g., to display video) and risk crashing the browser or the computer?

Then, about three tenths of a second later, I realized that the headline was about road accidents and medical doctors.

 Posted by at 5:40 pm
Aug 102012
 

It was over thirty years ago, back in 1979-1980, that I first earned money from a software development contract. My first assignment? Aircraft simulation, specifically tabulating the minimum safe take-off distance of TU-154 aircraft at Budapest airport under various loads and weather conditions.

Alas, the Hungarian national airline, MALÉV, is no more. But as of today, I became the proud owner of a MALÉV TU-154 B-2, with the original MALÉV markings.

No, not the real thing, I’m not that rich (and even if I were that rich, I’d not be spending my money on obsolete Russian aircraft), just a beautiful diecast model. Still, it’s a nice reminder.

 Posted by at 6:15 pm
Aug 082012
 

I am reading with astonishment an article in IEEE Spectrum on the origins of DOS. The author, a self-proclaimed expert on software intellectual property analysis, describes his attempt at a forensic comparison of early versions of MS-DOS and CP/M, to prove or disprove once and for all the allegation that MS-DOS was a result of theft.

But I find the article poorly researched, and also a thinly veiled attempt to plug the author’s company and analysis tools. Childish comparisons of identifier names and code fragments… really? The issue was never verbatim copying but the extent to which QDOS (which is the operating system Microsoft purchased and renamed) was derived from CP/M. It is clear that it was heavily influenced by CP/M, just as CP/M was heavily influenced by its predecessors, including operating systems written for the PDP-11. Does this constitute infringement? I certainly do not believe so. Indeed, something very similar (albeit more formal) occurred a little later, when the first IBM-compatible “clones” hit the market, and companies like American Megatrends, Award and Phoenix created binary-compatible versions of the IBM PC BIOS using “clean room” reverse engineering.

Some online commenters went so far as to ascribe ulterior motives to the author and question his sincerity. I think that is uncalled for. However, I do believe that this article should not have been published in its present form. At the very least, the author should have been advised by competent editors to tone down the plugs; to do a little bit more research on the topic; and to shift the emphasis from meaningless code comparisons to an analysis of the functional similarities between the two operating systems, the possible origin of these similarities, and the question of whether or not they might constitute infringement (and the extent to which the law may have changed, if at all, in this regard between 1982 and 2012).

 Posted by at 5:40 pm
Aug 062012
 

Today, I spent an inordinate amount of time messing with IMAP.

IMAP is a protocol that allows e-mail clients to access e-mail stored on a server. Unlike the more popular POP3 (Post Office Protocol version 3), IMAP (Internet Message Access Protocol) allows the messages to stay on the server, and allows clients to establish a folder structure on the server.

This makes it possible, in principle, to access the same mailboxes from multiple client devices like a desktop computer, a smartphone, or a tablet.

Don’t we already have this with any Webmail provider, such as Gmail, Yahoo! Mail, or the new Outlook.com? Well, yes, but… with all these services, your mail actually physically resides on computers that do not belong to you. I’d be less concerned about this were it not for a case that happened just the other day, a hacker using social engineering to gain access to a journalist’s iCloud account and through that account, everything else (including the journalist’s phone, laptop, and other accounts.)

If Apple can fall victim to social engineering, so can Google or Microsoft. So for this reason alone, I prefer to keep my e-mail on servers that I physically own. But I still like the convenience of accessing my e-mail from anywhere without having to copy bulky mail files or worry about synchronizing them.

This is where IMAP comes in. Except that it turned out to be a much more difficult task than I anticipated.

The basic setup is easy… enable IMAP and go. But then… the University of Washington IMAP server that is included with Slackware Linux has some quirky settings (such as showing all my folders on the server, not just my mail folders) that can only be corrected by recompiling. It took a while before I realized this, and therefore I wasted a lot of time with bugs in the various Android IMAP clients I tried, bugs that just went away once I recompiled the IMAP server. Outlook (which I plan on continuing to use on my main desktop computer) has its own quirks, not the least of which is the insanely difficult nature of seemingly trivial tasks, such as relocating built-in folders like the junk e-mail folder.

In the end, I won. There are still some quirks to be worked out, but I can now access my e-mail from Outlook, the Web (with Squirrelmail) and from my Android phone and tablet just fine. Still, it was a much harder battle than it should have been. I honestly expected this technology to be more mature in the year 2012.

 Posted by at 6:36 pm
Aug 062012
 

It looks like Microsoft is absolutely, positively determined to make it hard for long-time users of Windows to continue using their computers productively.

For instance, they actually went the extra mile to disable hacks that allowed Windows 8 to boot directly to the classic desktop and reinstated the Start menu.

What on Earth is going on in Redmond? What are you guys smoking?

 Posted by at 6:05 pm
Aug 022012
 

I just finished reading a very interesting Vanity Fair article about the decline of Microsoft. It paints a devastating picture leaving one to wonder why Microsoft’s shareholders continue to tolerate Ballmer’s (mis)management.

I have been wondering the same thing for many years, for pretty much the same reasons mentioned in this article: the Vista fiasco, the squandering away of the IE lead, Windows CE and Windows Phone, the Zune misstep, and last but not least, the disaster that is yet to happen, which is called Windows 8.

Think about it: how often did you type “google.com” into a browser lately? How about “facebook.com”? Or “twitter.com”? Or “amazon.com”?

And how many times did you type “microsoft.com”?

And I actually happen to like Microsoft.

The Comments section is also interesting, but mainly because of the bias and misinformation. My all time favorite: the story about how Word became the dominant office product because of “secret APIs”. Perhaps there were secret APIs, perhaps there weren’t. But none of that had anything to do with the then market leader, WordPerfect, jumping on the Windows bandwagon several years late, and with a crappy product that crashed even more often than Microsoft Word for Windows 1.0. And by that time, Microsoft was up to version 4.x and frequent crashes were no longer considered acceptable.

 Posted by at 12:08 am
May 212012
 

Remember Microsoft Bob? The revolutionary new interface for Windows that was supposed to make everyday computing easier for the unwashed masses?

It was one of Microsoft’s most spectacular product failures, surpassing even the dreadful Clippy (which, after all, was just an unwelcome feature in an otherwise successful product, Office 97).

But now, it seems that Microsoft is determined to do it again. At a time when the operating system is becoming increasingly less relevant to most users (who cares what operating system runs underneath your browser when you access Gmail or Office 365?) they seem to be dead set on alienating that one class of users for whom the operating system still matters: content creators, which includes artists, designers, software developers and the like.

To their credit, Microsoft is doing this in the open, documenting in a very lengthy blog post the basic ideas behind their most controversial design choices.

But the comments are revealing. Here is a random selection (certainly not unbiased) that I found that I could most closely relate to. After all, just like one of the commenters, I, too, “tried Windows 8 for 2 weeks and then uninstalled“… or rather, not so much uninstalled as never looked at the VM again in which it was installed because I just couldn’t care.

So here are those comments:

Can someone help me out? Should I install Ubuntu, get a Mac, or keep using Windows 7?

Your product is named after a feature of your product. And now the new version of your product tries to abandon said feature in its newly introduced usage mode.

Google just added windows to Chrome OS. You are removing windows from Windows. This won’t end well.

Except for immersive games, I DON’T WANT to run a single full-screen app. Not ever. If I want something to fill the screen, I will maximize the windows.

There is a significant disjunction in the UI. when you hit the start button and are whisked into metro land just to search for something, only to come back to the desktop

Thank you Microsoft for this complete failure. I for one welcome our new KDE overlords!

None of this TABLET CRAP belongs on desktops!

The cold, hard truth of the matter is that Microsoft have created an operating system that I feel is OPENLY ANTAGONISTIC to power users, business users, creative professionals and anyone seeking to use their PC as a productivity tool.

In WW2 the English started a program to analyze aircraft to figure out where they needed to add armor. They looked at all of the planes coming back and did frequency analysis of where the bullet holes were. Some areas were so riddled that easily 60% of bullet holes hit these key areas. The first reaction is to armor these heavily hit areas of the plane. This is wrong. These planes survived. The armor should go everywhere else.

You are killing Aero? You have to be kidding!

Windows 8 prognosis for sales: not that good. That is the latest finding from research entity Gartner.

I have to give you credit Microsoft, you really do know how to alienate people.

The flat UI in no way looks premium. It is harsh, spartan, and an eyesore.

The Metro environment severely compromises functionality by:

  • not allowing real multitasking (only applications in the foreground are allowed to use CPU);
  • not allowing more than two applications to run in the foreground (all other applications are suspended).
  • not allowing the two apps in foreground to use half the screen each (most of the time one of the two apps will be unusable because it has too little space to display information).
  • not allowing the use of more than one display for Metro apps.
  • not allowing more than one running instance for an Metro app.

And the most scary thing is that we already have an example of crippling the Desktop: Windows on ARM/Windows RT. By not allowing third party Desktop applications, the Desktop is only there to allow you to use MS Office.

Do you have a logical explanation why you are screaming permanently that these 9.1 percent iPad/iPhone/Android users are more important than 90% desktop users?

Pls provide a METRO ON/OFF option in Windows 8 (only desktop). With Mouse&Keyboard, METRO is bizarre to use.

How does Windows 8 “metro” and other this teletubby nonsense work on multimonitor setup?

It’s a degradation of Windows. New UI is terrible

The metro interface is horrible and whoever designed it should go back to work for whatever cell phone company they crawled out of.  Lets stop dumbing down the computer for the appliance user.

From my perspective, Aero glass is still fresh and new.  The loss is ultimately cosmetic and therefore minor, but it adds to one of the bigger issues with Windows 8’s UI

Using Windows 8 with a mouse is about as much fun as running Windows Phone 7 in an emulator all day.

And finally, the last comment that sums up my own feelings neatly:

If W8 really works on a desktop used by adults I’ll consider it

But not until then.

 Posted by at 3:12 pm
Oct 132011
 

While the world mourns Steve Jobs, another computing pioneer, Dennis Ritchie, died. Our world wouldn’t be the same without UNIX or the C programming language. My own life would have been very different without him. Jobs will long be forgotten when Ritchie’s legacy will still live on, decades from now.

#include <stdio.h>

main()
{
    printf("goodbye, dennis\n");
}

 Posted by at 12:27 pm
Sep 062011
 

It has been a while since I did anything in machine language. Until this past weekend, that is, when I spent a fair bit of time starting at disassembled code with a debugger.

Last week, I upgraded my Sony Ericsson smartphone to the latest version of its operating system. The upgrade process failed on my main computer when, after updated USB drivers for the phone were downloaded, they failed to install. The problem was not specific to the phone: all driver installations failed, with a not very informative code (0xC0000142, which just means that the application failed to initialize.)

Using the very helpful ProcMon utility from sysinternals (now owned by Microsoft) I managed to identify that it was a process named drvinst.exe that failed. This process is invoked automatically by the system every time a USB device is inserted, and also during device driver installations. So why did it fail?

I downloaded the latest Windows debugger (windbg.exe) from Microsoft; this debugger allows me to do things like debug child processes spawned by a parent process. (I later learned that drvinst.exe actually has a feature whereas it waits for a debugger after startup, to help with driver installation debugging; but chances are that I would not have been able to make much use of this feature, as the failure occurred before drvinst.exe actually started to execute its own code.) I attached the debugger to the DCOM service process (which is the one that spawns copies of drvinst.exe.) I was able to determine that it was during the initial process setup stage that this process failed, when it was attempting to attach to the gdi32.dll system library.

I still have no idea why this happens. But with the help of the debugger, I was able to tinker with this process, changing a processor register’s value at just the right spot, allowing it to continue. This inconvenient but workable process allowed me to install drivers for my phone and also updated drivers for my wireless mouse from Microsoft Update.

Perhaps the most incomprehensible bit is that the same thing works fine on an essentially identical computer. The actual failure occurs inside a kernel subroutine (undocumented system call 123Ah, called from GdiDllInitialize in gdi32.dll) that I cannot debug without a kernel debugger (and since I am trying not to mess my machine up too much, I opted not to do kernel debugging). That subroutine does not appear to be doing anything particularly magical. I checked and all relevant files and Registry settings are identical on the two machines. So it remains a mystery for now… nonetheless, it was educational. I learned a lot about driver installation in Windows 7, about process startup, and incidentally, about the ReactOS project whose open source equivalents to the relevant system components helped me a great deal to understand what was going on.

 Posted by at 8:13 pm
Jun 072011
 

One of the things I like the least about New Scientist (which, in many respects, is probably the best popular science magazine out there) is the “Enigma” brainteaser. I am sure it appeals to the “oh I am ever so smart!” Mensa member crowd out there but…

Well, the thing is, I never liked brainteasers. Are you really smarter than someone else because you happen to remember a random historical factoid? Does it really make sense to ask you to complete a series like, say, 1, 4, 9, 16, ? when the answer can be anything, as there is no compelling reason other than psychology (!) for it to be a homogeneous quadratic series?

But then… sometimes brainteasers reveal more about the person solving them than about the solution itself. I remember when I was in the second or third grade, our teacher gave us a simple exercise: add all the numbers from 1 to 100. (Yes, this is the same exercise given to a young Gauss.) Like Gauss, one of my classmates discovered (or perhaps knew already) that you can add 1+100 = 101; 2+99 = 101, 3+98 = 101, and so on, all the way up to 50 + 51 = 101; and 50 times 101 is 5050, which is the correct answer.

Trouble is, my classmate didn’t finish first. I did. I just added the darn numbers.

Between quick and smart, who wins? What if you’re so quick, you don’t need to be smart? Is it still smart to waste brainpower to come up with a “clever” solution?

Last week’s New Scientist Enigma puzzle caught my attention because it reminded me of this childhood memory. It took me roughly a minute to solve it. Perhaps there is a cleverer way to do it, but why waste all that brainpower when I can do this instead:

/* New Scientist Enigma number 1647 */

#include <stdio.h>

int main(int argc, char *argv[])
{
    int d1, d2, d3, d4, d5, d6, n;

    for (d1 = 1; d1 <= 9; d1++)
        for (d2 = 1; d2 <= 9; d2++) if (d2 != d1)
            for (d3 = 1; d3 <= 9; d3++) if (d3 != d1 && d3 != d2)
                for (d4 = 1; d4 <= 9; d4++)
                    if (d4 != d1 && d4 != d2 && d4 != d3)
                        for (d5 = 1; d5 <= 9; d5++)
                            if (d5 != d1 && d5 != d2 && d5 != d3 && d5 != d4)
                                for (d6 = 1; d6 <= 9; d6++)
                                    if (d6 != d1 && d6 != d2 && d6 != d3 &&
                                        d6 != d4 && d6 != d5)
    {
        n = 100000 * d1 + 10000 * d2 + 1000 * d3 + 100 * d4 + 10 * d5 + d6;

        if (n % 19 != 17) continue;
        if (n % 17 != 13) continue;
        if (n % 13 != 11) continue;
        if (n % 11 != 7) continue;
        if (n % d4 != d3) continue;
        printf("ENIGMA = %d\n", n);
    }

    return 0;
}

Yes, I am quick with C. Does that make me smart?

 Posted by at 2:21 pm
Aug 062010
 

Well, almost 23,000. Mostly JavaScript and PHP, also HTML and SQL. This is a project I’ve been working on all summer. Lots more to do, but at least one deliverable is complete, and I can finally spend a little bit of time doing something else. Plenty of other things I’ve been putting off while I was on this programming binge.

 Posted by at 3:04 am
Jul 262010
 

It’s not for the first time I said this, but you just gotta love this Internet thing. The big news this morning of course is the leak of some 90,000 classified US military documents from Afghanistan. Guardians of state and military secrets are horrified: troops’ lives will be at risk, they say. What they should recognize is that the fact that we live in an open society, far from being a weakness, is really our greatest strength. Open discussion of the pros and cons, the successes and failures, the risks and possible outcomes of a war is part of living in a liberal democracy.

As to the release itself, it’s funny how times are changing. When I learned the database language SQL ages ago, it was because I make my living as a computer professional. I did not necessarily expect to use my SQL skills in scientific endeavors, but that, too, came to pass when I began using the wonderfully crafted SQL-based query interface of the Sloan Digital Sky Survey. What I certainly never expected is that one day, a journalistic leak will arrive in a variety of formats, perhaps the most useful of which is an SQL dump. I wonder: do they teach the building of SELECT queries in journalism school these days?

 Posted by at 1:01 pm
Jul 242010
 

I have been reading the celebrated biography of Albert Einstein by Walter Isaacson, and in it, the chapter about Einstein’s beliefs and faith. In particular, the question of free will.

In Einstein’s deterministic universe, according to Isaacson, there is no room for free will. In contrast, physicists who accepted quantum mechanics as a fundamental description of nature could point at quantum uncertainty as proof that non-deterministic systems exist and thus free will is possible.

I boldly disagree with both views.

First, I look out my window at a nearby intersection where there is a set of traffic lights. This set is a deterministic machine. To determine its state, the machine responds to inputs such the reading of an internal clock, the presence of a car in a left turning lane or the pressing of a button by a pedestrian who wishes the cross the street. Now suppose I incorporate into the system a truly random element, such as a relay that closes depending on whether an atomic decay process takes place or not. So now the light set is not deterministic anymore: sometimes it provides a green light allowing a vehicle to turn left, sometimes not, sometimes it responds to a pedestrian pressing the crossing button, sometimes not. So… does this mean that my set of traffic lights suddenly acquired free will? Of course not. A pair of dice does not have free will either.

On the other hand, suppose I build a machine with true artificial intelligence. It has not happened yet but I have no doubt that it is going to happen. Such a machine would acquire information about its environment (i.e., “learn”) while it executes its core program (its “instincts”) to perform its intended function. Often, its decisions would be quite unpredictable, but not because of any quantum randomness. They are unpredictable because even if you knew the machine’s initial state in full detail, you’d need another machine even more complex than this one to model it and accurately predict its behavior. Furthermore, the machine’s decisions will be influenced by many things, possibly involving an attempt to comply with accepted norms of behavior (i.e., “ethics”) if it helps the machine accomplish the goals of its core programming. Does this machine have free will? I’d argue that it does, at least insofar as the term has any meaning.

And that, of course, is the problem. We all think we know what “free will” means, but is that true? Can we actually define a “decision making system with free will”? Perhaps not. Think about an operational definition: given an internal state I and external inputs E, a free will machine will make decision D. Of course the moment you have this operational definition, the machine ceases to have what we usually think of as free will, its behavior being entirely deterministic. And no, a random number generator does not help in this case either. It may change the operational definition to something like, given internal state I and external inputs E, the machine will make decision Di with probability Pi, the sum of all Pi-s being 1. But it cannot be this randomization of decisions that bestows a machine with free will; otherwise, our traffic lights here at the corner could have free will, too.

So perhaps the question about free will fails for the simple reason that free will is an ill-defined and possibly self-contradictory concept. Perhaps it’s just another grammatically correct phrase that has no more actual meaning than, say, “true falsehood” or “a number that is odd and even” or “the fourth side of a triangle”.

 Posted by at 1:36 am
Jul 042010
 

I hate dogma. I hate it even more when a valid scientific observation becomes dogma.

One case concerns the infamous goto statement in programming languages. It is true that a programming language does not need a goto statement in order to be universal. Unfortunately, this led some, most notably among them the late Edsger Dijkstra, to conclude that goto is actually harmful. While it is true that goto can be misused, and that misusing the constructs of a programming language can lead to bad code, I don’t think goto is unique in this regard (it is certainly no more harmful than pointers, global variables, or the side effects of passing variables by reference, just to name a few examples). Nonetheless, with Dijkstra’s letter on record, the making of a dogma was well under way.

And here I am, some 40 years later, trying to write a simple piece of code the logic of which flows like this:

LET X = A
LABEL:
Do something using X
IF some condition is not satisfied THEN LET X = B and GOTO LABEL

The condition, in particular, is always satisfied when X = B.

Yes, I know how to rewrite the above code using a loop construct, to satisfy structured programming purists. But why should I have to, when the most natural way to express this particular algorithm is through the use of a conditional jump, not a loop? Oh wait… it’s because someone who actually believes in dogma prevailed when the JavaScript was designed, and therefore, goto never made it into the language.

 Posted by at 7:01 pm
Dec 222009
 

I have done many things in my misguided past as a programmer, but strangely, I never did much work with XML. Which is why a recent annoyance turned into an interesting learning opportunity.

I usually watch TV on my computer. (This is why I see more TV than many people I know… not because I am a TV junkie who really “watches” it, I am actually working, but I have, e.g., CNN running in the background, in a small window, and I do occasionally pay attention when I see something unusual. Or change to a channel with The Simpsons.) For years, I’ve been using various ATI All-In-Wonder cards. (No, I don’t recommend them anymore; whereas in the past, they used to attach a tuner to some of their really high-end cards, this is no longer the case, the base graphics hardware of their current crop of AIW cards is quite lame. Their current software sucks, too.) The old ATI multimedia program I am using, while far from perfect, is fairly robust and reliable, and among other things, it comes with a built-in program guide feature. A feature that downloads programming information from an online server.

Except that, as of last week, it was no longer able to do so; the server refused the request. Several customers complained, but to no avail; they were not even able to get through to the right people.

So what is a poor programmer to do? I have known about Schedules Direct, the fee-based but non-profit, low-cost replacement of what used to be a free service from Zap2It, providing the ability to download TV guide data for personal use. The information from Schedules Direct comes in the form of XML. The ATI multimedia program stores its data in a Paradox database. In theory, the rest is just a straightforward exercise of downloading the data and loading it into the Paradox tables, and presto: one should have updated programming information.

Indeed things would be this simple if there were no several hurdles along the way.

First, the Paradox database is password-protected. Now Paradox passwords are a joke, especially since well-known backdoor passwords exist. Yet it turns out that those backdoor passwords work only with the original Borland/Corel/whatever drivers… third party drivers, e.g., the Paradox drivers in Microsoft Access 2007, do not recognize the backdoor passwords. Fortunately, cracking the password is not hard; I used Thegrideon Software’s Paradox Password program for this purpose, and (after payment of the registration fee, of course) it did the trick.

Second, the Microsoft drivers are finicky, and may not allow write access to the Paradox tables. This was most annoying, since I didn’t know the cause. Eventually, I loaded the tables on another machine that never saw the original Borland Database Engine, but did have Access 2007 installed (hence my need for a “real” password, not a backdoor one), and with this machine, I was able to write into the files… not sure if it was due to the absence of the BDE, the fact that I was using Office 2007 as opposed to Office 2003, or some other reason.

So far so good… Access can now write into the Paradox tables, and Access can read XML, after all, Microsoft is all about XML these days, right? No so fast… That’s when I ran into my third problem, namely the fact that Access cannot read XML attributes, whereas a lot of the programming information (including such minor details like the channel number or start time) are provided in attribute form by Schedules Direct (or to be more precise, by the XMLTV utility that I use to access Schedules Direct.) The solution: use XSLT to transform the source XML into a form that Access can digest properly.

With this and a few lines of SQL, I reached the finish line, more-or-less: I was able to update the Paradox tables, and the result appears digestible to the ATI media center application… though not to the accompanying Gemstar program grid application, which still crashes, but that’s okay, I never really used it anyway.

And I managed to accomplish all this just in time to find out that suddenly, the ATI/Gemstar update server is working again… once again, I can get programming information from them. More-or-less… a number of channels have been missing from the lineup for a long time now, so I may prefer to use my solution from now on anyway. Perhaps when I have a little time, I’ll find out what causes the crash (I have some ideas) and the program grid application will work, too.

Needless to say, I know a lot more about XML and XSLT than I did 24 hours ago.

 Posted by at 7:41 pm