I think maybe my work machine's zip drive is faulty. I had
terrible trouble trying to transfer some stuff to a machine
at home last week, and it has a joyous habit of corrupting
the
filesystems on my archive zip disks that have five year old
email on them. Eeeeek.

So I now have no trust in zip disks as an archival medium,
and I'm shopping for a CD writer.

It's not as terrifying as I was expecting, and they seem to
be well supported under Linux. There's a huge number of
different drives, but it seems like most of them speak the
same language and once I've picked an ATAPI drive and
plugged it all in there shouldn't be too much to it.
(Famous last words...)

Of course I have no idea what a good brand is. I guess the
next step is to check out the selection at Fry's on the way
in tomorrow.

I never knew ATAPI meant "SCSI over IDE". What a horrible
hack IDE is! And looking at the front of the machine in
front of me, it occurs to me that 4 - (CD + Zip + CD-RW) =
not many IDE spaces left for hard drives. Hmmm...

I looked at the calendar today, and it turns out that I've
been back from New Zealand for four weeks now. That's hard
to believe: I haven't achieved a great deal in all that
time, and it sucks to be back.

If printf is a macro, this is nonportable because the
preprocessor is not required to be able to handle directives
while it's reading the arguments in a macro invocation
(ISO/IEC 9899:1999 6.10.3 para 11). In particular, current
GCC doesn't handle it.

But what kind of freak would define printf as a macro?

It turns out that doing that is valid: (ibid 7.1.3, and the
same language is in C89 too)

[U]nless explicitly stated otherwise [for that function]
[...] Any function declared in a header may be additionally
implemented as a function-like macro defined in the header

Perhaps it's just me, but I find that surprising. I knew
simple things like abs() were allowed to be macros and
expected them to be, but I didn't realise the implementer
was allowed to provide macro versions of pretty much
everything. I'm sure I've written code like the above
in the past (or maybe it was just with my own functions, but
I don't think so).

The obvious fix is to write the whole printf twice. There's
two other solutions too: one cute (but possibly hard on
moronic maintainence programmers), and the other surprising
at first that it is acceptable, but not when you think about
it. IMHO.

The nice thing is that the standard actually tells you all
about these solutions. That's unusually friendly for the C
standard. :-)

Long long ago, I had a friend who did a late show on our student radio station.
Sometimes I would go along to the studio and he would put "Walking down Madison" on the radio for me. But
we're not in touch any more, and there won't be any more songs from
Kirsty MacColl.

I don't have a story like Rachel's.
Only that I could have seen Kirsty in concert in some small
venue in London once upon a time, but I didn't go along that night. Only memories of some private
episodes in my life that have songs from her earlier albums as their soundtracks.

I go back to New Zealand for a while on Saturday, and I'll be bringing my copy of Kite back to the Bay Area in the
new year.

"Open the door and look up to the skies / And leave the shore / And let my hand trail in the cool water / Float
downstream, say goodbye to that dream"

Palmsource 2000 is winding down[...]I was asking
them some pretty heavy questions about their position on
linux and
unix support with Bluetooth. They were hesitantly evasive
[...]
Again, somewhat evasive
[...]
Ugh. They're so blind sometimes.

Sometimes, David, I wish you would be a little less
confrontational and perhaps give people the benefit of the
doubt occasionally. "Hesitantly evasive" usually means that
the person hasn't previously considered the point you've raised,
doesn't want to give an implicit commitment to something
that they haven't thought through, wants to be helpful so
wants to avoid a
flat NO, can't give you a full answer for stupid
confidentiality reasons but doesn't want to turn you away,
isn't involved in that area and doesn't know what other
people in the rapidly expanding company might have already
done in that area, or generally a combination of all of the
above.

I happen to know all of the people in the talks you
mentioned, and I can tell you that it's not very fair to
accuse them of being evasive or blind. On the contrary:
they're all very keen to help people's cool ideas become
reality. Your cool ideas, so don't alienate them!
:-)

A lot of engineers work at Palm. Not all of them know much
about what we're doing with Linux or with free software, but
that doesn't mean that it's not happening. All of my work
and Keith's work is free software and runs on Unix. I think
David knows that there are many people -- such as Kenneth,
Flash, and me -- inside Palm who care about pilot-link a
lot. We also spend a lot of time evangelising for these
things within the company.

To be perfectly honest, it's kind of hard to stay motivated
to fight the good fight when people oversummarise and tell
you you're
blind and you get close to zero support or assistance from
the community for your open projects!

In other news, in the labs tonight the Llamagraphics
people showed me another bug in CodeWarrior which
partially screws up something we're trying to do in our SDK
(yeah, that one that David's going to interrogate me about
tomorrow). It whines that you can't do this static_cast
with an incomplete type:

struct S;
S* foo (void *pv) { return static_cast<S*>(pv); }

By my reading of the C++ standard, this violates paragraph
10 of 5.2.9 ("Static cast"), in particular because a pointer
to an incomplete struct type is indeed a pointer to an
object type (3.9 paras 6, 9), and see also 3.2 para 4 (and
pretend it's decreeing the converse :-)).

Bah. Fortunately, while walking back to the office after
talking to Catherine and Stuart, I realised there's a
workaround
for full on C++ programmers who don't want to fall back to a
C-style cast: use reinterpret_cast. Okay, so that's not
great either, but it's not our fault! Get a real compiler!

7:30am. Still here. Slides almost done. My talk is in three hours. I'm cobbling together a 2.1pre1 release to collect all the
miscellaneous
little bugfixes over the last few months. It's on the fourth hour long RPM build now, and it should actually work
this
time. Unfortunately I've just found out that not only does SourceForge have scheduled downtime tonight so that
nobody will be able to download my release, but also the uploader has been broken for the last week so I can't
upload it either.

...a car tried to force me into a different lane ... perhaps
they should check the laws...

Just curious... does Oz law recognise skates as a roadworthy
vehicle? If so, I'm impressed!

Happily, no cars tried to kill me on my way in to work this
morning (cycling on Sunnyvale's
Lawrence Expressway, which
is much like a New Zealand motorway, only with more lanes).
It may be a better than average week on that statistic.

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...

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...