Older blog entries for johnm (starting at number 7)

Zaitcev talked about the TiVo's "30 minutes T/S buffer" being too small. I'm not entirely sure what he means by "T/S buffer", but I'm guessing that he's talking about the way it will record up to 30 minutes of Live TV when you haven't told it to record anything in particular. In fact, you can increase this if you try hard enough.

Okay, you guessed it, I'm a proud new TiVo owner. I chose it because it runs Linux and you can do silly things like drop extra hard drives in and get a bash prompt on its serial port. One day I'm going to remember to take my Palm Pilot cradle home so I can use a terminal program on that serial port. Or I guess I could finally get around to buying a computer with a keyboard...

This personal TV / digital video recorder stuff is way cool. It took about a day for us to realise that the thing was indispensible and we should have got one months ago. I think I will end up watching less television: no more sitting there glumly surfing around thinking there must be something worth watching somewhere.

There's no way I can ever get home by 6pm when it's on, but now I can watch the BBC World News every night regardless. Bliss. I wish it had more British news though...

6 Sep 2000 (updated 6 Sep 2000 at 02:24 UTC) »
gibreel says he finally found time to do the prc-tools package for Debian. Great! It's only been about a year. :-) But if the months are flying by for you the way they are for me, it's no surprise...

Now the bad news: there's a few stupid bugs (the fp and build-prc ones in particular) that you ought to at least apply fixes for locally rather than be broken like the 2.0 upstream distribution.

Now the really bad news: there's at least one (:-( though the other guy's really cooked himself this time) new release coming along real soon now to tidy up all these little things. It's been gestating far too long already, but I hope to have a 2.1 out by the end of this month to fix up all the little problems and a few biggies.

Uh... I hope you folks can get the bug-fixed .1 one rather than the .0 one. We should talk...

Can I move to Cape Town too please?

Zack mentioned `scare quotes' in a recent checkin. "Scare quotes,", I thought, "I know what that means, but I wonder where the term came from". Google found me a truly scary definition.
friday afternoon
Oh dear. More stuff that fell through the cracks. One of them's easily fixed; the other will take a little more work.

life in the bay area
Has anyone else noticed that VTA's light rail is always a couple of minutes early in the evening and especially in the wee hours? One week I missed trains three days out of five. One of those days I set out for the 0126, 0236, and 0346 trains home and missed each one, and eventually gave up and spent the night at work. One time I mentioned the schedule to the driver, and he turned the tannoy on to say that his watch was synchronised to an atomic clock. I wish the clocks on the platform would agree with his then.

I missed the train just now (by 20 seconds; it was two minutes early by the platform clock), so I've come back to work on the other problem.

wee hours of saturday
I just went to catch the 0020 train home. Just before I got to the station at 0015 by my watch, the train went past. @%$! So I turned back. Minutes later, I remembered that sometimes they inexplicably send dark trains five minutes before the real ones. Sure enough, at the now distant station, there it was: another train.

overriding settings
So I've fixed the other problem and checked it in. I'm not 100% sure it's exactly right, but it's checked in so people can test it.

It turned out to be a really interesting problem: we have a linker sort of thing, and its behaviour is governed by a bunch of settings. These are set from their default values, from the default handling in a control file, from specific overrides in the control file, from explicit stuff on the command line, and from options on the command line. And these all have to override each over in the right order.

This would be easy if the override order was the same as the order in which the program processes them. But that's impossible: for example, you don't know the filename of the control file until after you've processed the command line options.

...I'd write about the cute solution now, but I'm sure nobody wants to read about me missing another train!

Not happy. I've just spent a few hours tracking down a bug in gdb.

We have a bunch of patches against stock gdb, which mostly add a new remote protocol to communicate with the monitor in a Palm OS ROM. A while back, I pushed the patches from applying to gdb 4.16 up to 4.18, and I assumed that today's problem was that I'd missed some subtle change in gdb's interface to its remote modules between the releases. An hour of poring over serial line logs and gdb stack traces pretty much disabused me of that notion.

(Yes, I've finally tried using gdb to debug another gdb while it's debugging another program running on an emulator on another computer. Fun. The set prompt command comes in handy!)

Grovelling through the stack traces turned out to be the way to go. I was able to find the exact point where a nice machine address got turned into a big invalid zero. Deep inside gdb's expression parser was a function that just copied the address in 4.16 and 4.17, but did an endianness conversion in 4.18.

On big-endian machines [...] the wrong bits [are] being stored. Only the simplest case is fixed here, the others just get the old behavior.

I don't know what the old behaviour was. All I know is that in 4.18, cross-debugging between machines of different endianness was broken, and it wasn't in 4.16 or 4.17. Here you can see the code getting ripped out again, apparently about two weeks after the 4.18 release.

So I've achieved a few things:

  • Before today, I knew two gdb commands: backtrace and quit. Now I know a whole lot more.

  • I've found some good ammunition for my battle against misguided endianness munging. But that's another story...

  • I've tracked down a bug that was fixed a year ago.

It just goes to prove what we've known and have been working towards for a long time: we ought to be working against the current mainline and even contributing to it. But there are all the usual stupid release and support issues on the one hand, and, on the other, all of binutils, GCC, and gdb are working on consolidation releases at the moment. It doesn't seem like the right time to be bugging them with a new port, especially one that still has some truly crazy requirements like ours.

Just checked in the final (for a while :-)) reorganisation of the PRC/PDB file reader. I think the interesting bits are now about as well factored as they can get, i.e., the plan is that the functions are right: there's no duplication and each part gets the right information at the right time. I don't know whether this means the code is comprehensible or not.

This format has the distinction that the only sane way to parse it is backwards. Tres cute.

I've been pottering about reading Advogato for a little while now, thinking I really ought to get around to signing up. I was finally moved to do so just now because I know the answer to Zack's question in his diary:

P.S.: Does anyone know how to get rid of the damn splash screen and go straight to the start page?

But if only I kept better records... it took 20 minutes to dredge the answer out of my hard drive.

I thought it was a setting in the .netscape/preferences.js file, which says "DO NOT EDIT" at the top but I remember having to edit several things in it. But nothing seemed relevant, and five minutes of randomly setting the more bizarrely named option strings didn't perceptibly change anything.

Then I tried netscape's X app-defaults. I vaguely remembered having tweaked those too. This would have been easy to track down, except that I'm not an X programmer and I don't know where app-defaults files live. Searching the entire file system showed that I couldn't find any netscape app-defaults file because it didn't have one.

There was one off in some documentation directory, but that couldn't be it, could it?

! Uncomment the following line to bypass the startup licence page.
!
! Equivalent to using the '-no-about-splash' startup flag.
!
!*noAboutSplash: True

I was sure I had made an app-defaults file with this, but it seems I just added the option to some script somewhere. Oh well... It's funny how your memory sends you on wild goose chases sometimes...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!