<?xml version="1.0"?>
<rss version="2.0.">
  <channel>
    <title>Advogato blog for johnm</title>
    <link>http://www.advogato.org/person/johnm/</link>
    <description>Advogato blog for johnm</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Fri, 4 Jul 2008 20:57:01 GMT</pubDate>
    <item>
      <pubDate>Thu, 4 Mar 2004 17:34:14 GMT</pubDate>
      <title>4 Mar 2004</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=24</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=24</guid>
      <description>Ob-it's been a really really &lt;b&gt;really&lt;/b&gt; long time...
&lt;p&gt;
For today, this is just a wee note about my &lt;a href="http://www.advogato.org/person/johnm/diary.html?start=23" title="Diary entry for 28 October 2002" &gt;previous entry&lt;/a&gt;, in which I had found an inadequacy in &lt;a href="http://ccache.samba.org/" &gt;ccache&lt;/a&gt;'s hash.  It had returned a cached object with incorrect file paths in its debug information, which the linker was then printing out in warnings and error messages.
&lt;p&gt;
Other people must have been noticing that too, because soon thereafter ccache acquired a &lt;tt&gt;CCACHE_HASHDIR&lt;/tt&gt; option to put the whole path into the hash calculation.
&lt;p&gt;
That wouldn't help me much, of course, because with my build directory varying daily it would be the same thing as just disabling the cache entirely!  Instead, I wound up using a small sed script to canonicalise the logs before I looked at them.
&lt;p&gt;
Pretty stone age, but effective.</description>
    </item>
    <item>
      <pubDate>Tue, 29 Oct 2002 02:24:56 GMT</pubDate>
      <title>29 Oct 2002</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=23</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=23</guid>
      <description>&lt;b&gt;Extreme panic!&lt;/b&gt;
&lt;p&gt;
Each time I do a full &lt;a href="http://www.advogato.org/proj/prc-tools/" &gt;prc-tools&lt;/a&gt; build, I get a 1.3 Mb
build log and sometimes I even look at it.  (Building prc-tools means
building two binutilses, two GCCs, a GDB, and a few other bits and pieces.
Along the way you build four BFDs and six libiberties.  So that log builds
up pretty quickly!)
&lt;p&gt;
At the moment, due to popular demand (three FreeBSD whiners :-)), I'm working
on making --enable-nls work properly.  To be sure, there's a bug here in the
current top-level prc-tools, and I'm glad to be finally looking into it.
&lt;p&gt;
So I'm comparing the logs from builds with and without --with-included-gettext.
I look at the differences between successive builds regularly (all hail
tkdiff!), but these two (of course) differ from each other in different
places from the usual.  And there's many more differences to look at
than usual, alas.
&lt;p&gt;
This means I'm studying different parts of the logs from usual.  Here's a few
lines from tonight's builds:

&lt;p&gt; &lt;blockquote&gt;
gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -g -O2 -o size size.o bucomm.o version.o filemode.o  ../bfd/.libs/libbfd.a ../libiberty/libiberty.a
&lt;br&gt;
bucomm.o: In function `make_tempname':
&lt;br&gt;
/home/johnm/work/rpmbuild/BUILD/prc-tools-20020831/m68k-palmos/ binutils/binutils/../../.././binutils/binutils/bucomm.c:236: the use of `mktemp' is dangerous, better use `mkstemp'
&lt;/blockquote&gt;
&lt;p&gt;
Huh?  What's that path from the end of August doing there?  That build tree
is long since blown away -- each one is over half a gigabyte, so I nuke them
pretty quickly.  So I look at the build logs from the last week, and they all
say &lt;i&gt;20020831&lt;/i&gt;, and sure enough that directory certainly hasn't existed
for a long time.
&lt;p&gt;
What's going on?  Has ext3 let me down?  Is my hard drive failing again?
Is the end nigh?
&lt;p&gt;
Panic stations!  Single user mode, fsck... no, nothing.
&lt;p&gt;
Have you guessed yet?  It was &lt;a href="http://ccache.samba.org/" &gt;ccache&lt;/a&gt;.
&lt;p&gt;
I last really compiled bucomm.c back in August when I switched ccache on.
One of ccache's big features over compilercache is that it doesn't give up
in the face of warnings.  So that 20020831 directory doesn't really exist;
it's just that I'm getting the old stderr log from August.  It's hard to
see how ccache could correct this without rerunning the compilation or
parsing the basic error format and guessing, so it's understandable; on
the other hand, the Web page &lt;b&gt;does&lt;/b&gt; say
&lt;blockquote&gt;&lt;i&gt;
[ccache provides] exactly the same object files and exactly the same compiler
warnings that would be produced if you use the real compiler. The only way you
should be able to tell that you are using ccache is the speed.
&lt;/i&gt;&lt;/blockquote&gt;
&lt;p&gt;
Sure, the speed is great -- ten minutes instead of 40 with my machine on
this project -- but I've just learnt one grain of salt to apply to the warning
guarantees :-).
&lt;p&gt;
Sure, there's other lessons to be learnt here: like don't vary your paths when
you're trying to do repeatable builds (but some form of date convention is a
useful and commonly used way to stay sane) and don't use absolute paths (but
sometimes your tools will make them absolute whether you want it or not).
&lt;p&gt;
Anyway.  Onward to the next disaster...
</description>
    </item>
    <item>
      <pubDate>Sun, 8 Sep 2002 17:43:27 GMT</pubDate>
      <title>8 Sep 2002</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=22</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=22</guid>
      <description>My fascinating question for today:
&lt;b&gt;What should &lt;tt&gt;malloc(0)&lt;/tt&gt; return?&lt;/b&gt;
&lt;p&gt;
Composing a critique of somebody else's crappy half-baked stdlib
implementation today caused me to take another look at
&lt;a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/prc-tools/prc-tools/libc/" &gt;my
own crappy half-baked stdlib implementation&lt;/a&gt;.  In part, my critique puts
the memory allocation functions &lt;tt&gt;malloc()&lt;/tt&gt;, &lt;tt&gt;free()&lt;/tt&gt;,
&lt;tt&gt;calloc()&lt;/tt&gt;, and &lt;tt&gt;realloc()&lt;/tt&gt; under the microscope.
One of the four is easy:
&lt;tt&gt;calloc()&lt;/tt&gt; is really just &lt;tt&gt;malloc()&lt;/tt&gt; in disguise --
the only wrinkle is to remember to call &lt;tt&gt;memset()&lt;/tt&gt; afterwards,
which the somebody else in question forgot :-( --, but the other three
engage in an interesting dance.
&lt;p&gt;
The C99 standard has the following to say about &lt;tt&gt;malloc(0)&lt;/tt&gt; and
friends, and the text in C90 is similar:
&lt;blockquote&gt;&lt;em&gt;
If the size of the space requested is zero, the behavior is
implementation-defined: either a null pointer is returned, or the behavior
is as if the size were some nonzero value, except that the returned pointer
shall not be used to access an object.
&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;
I've always preferred the latter behaviour for &lt;tt&gt;malloc()&lt;/tt&gt;:
it avoids overloading the meaning of a NULL return, so, especially if your
size was a variable rather than a constant, you can say
"if malloc returned NULL, then abort due to out-of-memory" without having
to fudge about and check that it wasn't really a
returned-NULL-due-to-zero-size situation.  (Of course, you could
say that people who actually call &lt;tt&gt;malloc()&lt;/tt&gt; with a size of zero
deserve what they get!)
&lt;p&gt;
That (the latter) is also the behaviour required of a C++ allocation function.
So if you're writing &lt;tt&gt;operator new()&lt;/tt&gt; in terms of
&lt;tt&gt;malloc()&lt;/tt&gt;, you have to know that your &lt;tt&gt;malloc()&lt;/tt&gt; has
the same preference as I do, or take extra care instead of &lt;em&gt;just&lt;/em&gt;
calling &lt;tt&gt;malloc()&lt;/tt&gt;.
&lt;p&gt;
Now let's look at some of the other requirements that C90 and C99 place
on these functions:
&lt;blockquote&gt;&lt;pre&gt;   free (NULL)    = ({})
realloc (NULL, n) = malloc (n)
realloc (p, 0)    = ({ free (p); return NULL; })    when p != NULL&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; The first is just saying that &lt;tt&gt;free(NULL)&lt;/tt&gt; does nothing, which is,
of course, very convenient -- you get to avoid some tedious checking.
The other two are parts of the definition of &lt;tt&gt;realloc()&lt;/tt&gt;.  They are
spelt out in the C90 text; the C99 text as pertains to the last one is quite
different, but it can still be derived from the text.
&lt;p&gt;
Now, the "&lt;tt&gt;when p != NULL&lt;/tt&gt;" condition on the last rule is not very
pleasant: it makes for an ugly algebraic rule.  Futhermore, I would contend
that programmers who actually write code that's literally
"&lt;tt&gt;realloc (p, 0)&lt;/tt&gt;", with &lt;tt&gt;p&lt;/tt&gt; variable but a constant 0,
expect &lt;tt&gt;realloc()&lt;/tt&gt; to Do The Right Thing even when &lt;tt&gt;p&lt;/tt&gt; is NULL,
just as &lt;tt&gt;free()&lt;/tt&gt; does.
Thus I would contend that programmers actually expect that they are using
a stronger set of rules, in which the third rule holds regardless of the
value of &lt;tt&gt;p&lt;/tt&gt;.  (In particular, this is what the Linux man page says
&lt;tt&gt;realloc()&lt;/tt&gt; does; yes, the man page is way stronger here than the
C Standard!)
&lt;p&gt;
In that case, we can calculate the value of &lt;tt&gt;malloc(0)&lt;/tt&gt;:
&lt;blockquote&gt;&lt;pre&gt;malloc (0) = realloc (NULL, 0)
           = ({ free (NULL); return NULL; })
           = NULL&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;
So that means that the choice is really between:
&lt;ul&gt;
&lt;li&gt; either a &lt;tt&gt;realloc()&lt;/tt&gt; that Does The Right Thing for size=0
&lt;li&gt; or a &lt;tt&gt;malloc()&lt;/tt&gt; that does what I've always preferred for size=0
&lt;/ul&gt;
You can't have both!  So I've changed my mind:  being able to write
&lt;tt&gt;realloc(p, 0)&lt;/tt&gt; and have it Just Work, like &lt;tt&gt;free(p)&lt;/tt&gt; does,
is more important to me than having &lt;tt&gt;malloc(0)&lt;/tt&gt;, which I never actually
use, be easily distinguishable from memory exhaustion.
&lt;p&gt;
In retrospect, this was all obvious.  The specification of
implementation-defined behaviour that I quoted at the beginning applies to
&lt;b&gt;both&lt;/b&gt; &lt;tt&gt;malloc()&lt;/tt&gt; and &lt;tt&gt;realloc()&lt;/tt&gt;.  Wanting
&lt;tt&gt;realloc(p, 0)&lt;/tt&gt; to be useful in cleanup functions (by just freeing
through &lt;tt&gt;p&lt;/tt&gt;, and not also allocating some dummy "zero-sized" object
that the caller will ignore and will become garbage) means that you've already
made the choice:
&lt;tt&gt;realloc()&lt;/tt&gt; given a size of zero will return a null pointer.
Either that means you've also already made the choice for &lt;tt&gt;malloc()&lt;/tt&gt; too; or you've decided to make the choice differently for the two functions, which
would be &lt;em&gt;really&lt;/em&gt; ugly and I'm not even sure is allowed by the Standard.
&lt;p&gt;
But playing with the algebra was fun while it lasted!
&lt;p&gt;
(Looks like I'm going to have to put that "&lt;tt&gt;malloc (size? size : 1)&lt;/tt&gt;"
stuff back in my library's default C++ allocation functions.)
</description>
    </item>
    <item>
      <pubDate>Thu, 30 May 2002 11:46:41 GMT</pubDate>
      <title>30 May 2002</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=21</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=21</guid>
      <description>&lt;a href="http://www.advogato.org/person/Ilan/" &gt;Ilan&lt;/a&gt; writes
&lt;blockquote&gt;&lt;em&gt;
If Jango Fett was the genetic template for the storm
troopers (which is what I assume they were implying), why do
they have American accents in the first three movies? Were
English accents considered a genetically undesirable
trait and removed from the cloning process?
&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt; That's a &lt;strong&gt;New Zealand&lt;/strong&gt; accent, mate!  (Oh,
and the answer to your question is no, English and other
non-USA accents are not genetically undesirable :-).)
&lt;p&gt;
The kid's (Boba's) accent was pretty strong too.  I was
laughing during their conversation while flying through the
asteroid field:  it's not every day I get to hear a Kiwi
accent out here in Norway.
&lt;p&gt;
&lt;b&gt;ObLongTimeNoDiaryEntry:&amp;nbsp;&amp;nbsp;&lt;/b&gt;
I've been submerged with work for ages.  I decided a while
back that I was going to ignore everything else until I got
the new release of &lt;a href="http://www.advogato.org/proj/prc-tools/" &gt;prc-tools&lt;/a&gt; out the door.  It
took at least six weeks longer than it should have, alas,
and I finally released 2.1 on Monday.  Phew!  So now I can
get back to having a life, working on more interesting parts of
prc-tools, and replying to all the friends' emails I've been
ignoring (sorry Graham!).</description>
    </item>
    <item>
      <pubDate>Sun, 24 Feb 2002 23:01:30 GMT</pubDate>
      <title>24 Feb 2002</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=20</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=20</guid>
      <description>I've been back home from New Zealand and PalmSource for a
couple of weeks now.
It's great to be back, especially since we've had a nice
sprinkling of snow
over the last few days: the frozen lake near my house is
looking really really
good.  It's a beautiful place for a (very flat) walk at the
moment.

&lt;p&gt; &lt;p&gt;&lt;b&gt;Palm tools stuff&lt;/b&gt;

&lt;p&gt; &lt;p&gt;
A compatibility bug in PilRC's parser has been bugging me
for almost
a year:
&lt;blockquote&gt;&lt;tt&gt;INTEGER 1000 10&lt;/tt&gt;&lt;/blockquote&gt;
got unilaterally changed to
&lt;blockquote&gt;&lt;tt&gt;INTEGER 1000 VALUE 10&lt;/tt&gt;&lt;/blockquote&gt;
back then.  There was some value in this new &lt;tt&gt;VALUE&lt;/tt&gt;
keyword because
it was a way of specifying negative numbers, but it should
have been made
optional so as not to break people's old source code.

&lt;p&gt; &lt;p&gt;
&lt;a href="http://www.advogato.org/person/ardiri/" &gt;Aaron&lt;/a&gt; is back motivated to
make releases
again (yay!), and on Friday I made a fix to make the
&lt;tt&gt;VALUE&lt;/tt&gt;
optional that was better than my original fix that hadn't
been integrated.
It was a nightmare btw: every time I do anything in the
PilRC source code
I swear that I'm &lt;b&gt;never&lt;/b&gt; going to touch it &lt;b&gt;ever&lt;/b&gt;
again.

&lt;p&gt; &lt;p&gt;
So there's now a 2.9p2 PilRC release, and I can finally put
new binaries up on the &lt;a
href="http://sf.net/projects/pilrc/"&gt;Sourceforge site&lt;/a&gt;.
(I refused to update them until the source code
compatibility bug was
fixed.)  I've put up x86 Linux RPMs tonight, and will make
packages for
the Cygwin users sometime over the next few days.

&lt;p&gt; &lt;p&gt;
I did something a bit naughty in the RPMs: I created a new
&lt;b&gt;Group&lt;/b&gt;
for them, instead of using one of the standard ones from Red
Hat's RPM
groups file.  I'm in two minds about this; I've previously used
&lt;i&gt;Development/Tools&lt;/i&gt; for my prc-tools RPMs and resisted
creating a
new group.  But the fact is everybody else does it, and it's
helpful
to the users if they can find the Palm OS-related tools in
one place
rather than having to hunt through the 800 other packages in
&lt;i&gt;Development/Tools&lt;/i&gt;.

&lt;p&gt; &lt;p&gt;
After the next time rpmfind crawls through Sourceforge,
hopefully people
will be able to find Palm OS-related tools in
&lt;blockquote&gt;&lt;i&gt;&lt;a
href="http://rpmfind.net/linux/RPM/Development_Palm_OS.html"&gt;Development/Palm
OS&lt;/a&gt;&lt;/i&gt;&lt;/blockquote&gt;
Pretty soon I'll be making &lt;a href="http://www.advogato.org/proj/POSE/" &gt;POSE&lt;/a&gt; RPMs and
putting them there,
and the RPMs of the next &lt;a href="http://www.advogato.org/proj/prc-tools/" &gt;prc-tools&lt;/a&gt; release (any
month now :-(,
really) will be moving there from
&lt;i&gt;Development/Tools&lt;/i&gt; too.

&lt;p&gt; &lt;p&gt;&lt;b&gt;&lt;a href="http://www.advogato.org/person/raph/" &gt;raph&lt;/a&gt;'s rebar&lt;/b&gt;

&lt;p&gt; &lt;p&gt;
Describing builds as a lazy functional program.  Wow.
That is just a &lt;b&gt;gorgeous&lt;/b&gt; idea!

&lt;p&gt; &lt;blockquote&gt;&lt;i&gt;skipping the compilation if it's already been
done (in a previous invocation)&lt;/i&gt;&lt;/blockquote&gt;
Do you mean in a previous compiler invocation (in a
different part of the calculation) during the
same build, or possibly a (memoized :-)) compile of the
same thing during a previous full build?  (Or maybe the
question is meaningless in a functional context. :-))

&lt;p&gt; &lt;p&gt;
The latter is similar to &lt;a
href="http://www.erikyyy.de/compilercache/"&gt;compilercache&lt;/a&gt;,
which was recently featured on &lt;a
href="http://www.sweetcode.org/"&gt;sweetcode&lt;/a&gt;, and which
I've just started using.  It caches object files based on
the compiler flags and preprocessed source used to produce
them, and just spits back the cached object instead of
calling the compiler if sees that the exact same compilation has
already been done.
It's working wonders on testing &lt;a href="http://www.advogato.org/proj/POSE/" &gt;POSE&lt;/a&gt; RPM
builds: each full build takes a few minutes instead of
twenty or more.</description>
    </item>
    <item>
      <pubDate>Fri, 25 Jan 2002 12:30:43 GMT</pubDate>
      <title>25 Jan 2002</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=19</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=19</guid>
      <description>&lt;b&gt;Transit lounge interlude&lt;/b&gt;
&lt;p&gt;
Oddly enough, I'm back at Changi Airport.  This time I
brought an ethernet cable with me, so I don't even have to
play with my Airport settings.

&lt;p&gt; &lt;p&gt; &lt;p&gt;
It was supposed to be a one month trip to Europe, but these
things change. :-)  Am currently on my way back to New
Zealand for a week's holiday before &lt;a
href="http://www.palmsource.com/"&gt;PalmSource&lt;/a&gt; in
California, and then back to my new home in Norway.
&lt;p&gt;
Oslo-&amp;gt;London-&amp;gt;Singapore-&amp;gt;New
Zealand-&amp;gt;California-&amp;gt;Oslo.  I'm
certainly taking the long way around!
&lt;p&gt;
ObFreeSoftware:  I'm too tired this time for the flights to
be very useful for getting any work done.</description>
    </item>
    <item>
      <pubDate>Tue, 14 Aug 2001 09:49:06 GMT</pubDate>
      <title>14 Aug 2001</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=18</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=18</guid>
      <description>&lt;b&gt;Transit lounge interlude&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt;
I'm currently in the transit lounge at Sydney airport, en 
route from New Zealand to the UK.  The world is looking 
better than the last time I was stuck in a transit lounge 
in the US: they have free Internet kiosks here in Australia!
Of course, it's a mutant version of Internet Explorer that 
will only let you have one window, and the keyboard's set 
to some weird Chinese layout (it took me a long time to 
find "w" and "."!).  But you can get to the usual Windows 
telnet client without too much difficulty :-).

&lt;p&gt; &lt;p&gt; &lt;p&gt;&lt;b&gt;prc-tools&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt;
Since I'm sitting on a plane for 24 hours, I've got plenty 
of time to work on prc-tools.  (I had better sign off here 
soon and go and steal some of the airport's electricity for
my batteries though.)  I've been working on installation 
issues for a while now.  I kind of want to spend this time 
working on GLib shared libraries, because a few vocal 
people keep bleating about them and fixing them would shut 
them up once and for all, but I'm really not very 
motivated to work on those.

&lt;p&gt; &lt;p&gt; &lt;p&gt;&lt;b&gt;pilrc&lt;/b&gt;

&lt;p&gt; &lt;p&gt; &lt;p&gt;
Oops.  I seem to have offended a few people by questioning 
the quality of some of their recent patches to this 
project.  
(Since I'm sitting on planes at the moment, I'm not going 
to be posting to the thread I started for the next day or 
two.  
Hopefully not too much momentum will be lost.)

&lt;p&gt; &lt;p&gt; &lt;p&gt;
Actually I certainly didn't intend to offend them; if 
anybody, I was intending to offend the maintainer.

&lt;p&gt; &lt;p&gt; &lt;p&gt;
Well, not really ;-).  But if it were my project, I would 
be a lot more selective about what I accepted.  It seems to 
me that pilrc is being pulled in several directions at the 
moment, and the dominant direction is &lt;b&gt;not&lt;/b&gt; the long 
time user base of application developers.  And that's fine, 
but some of the additions are making things worse for the 
project and for those developers, in particular by making 
pilrc's source code unmaintainable.  If it were my project, 
I would be emphasising correctness and thought-out-ness 
rather than breakneck pace of development, which is what 
one faction seems to want at the moment.  It's fine for 
them to want that, but not at the expense of the long term 
users.

&lt;p&gt; &lt;p&gt; &lt;p&gt;
It's not my project of course, but that doesn't mean I'm 
not allowed to lobby the maintainer!

&lt;p&gt; &lt;p&gt; &lt;p&gt;
And I know Aaron is reading this...  :-)

&lt;p&gt; &lt;p&gt;
&lt;b&gt;[Later] More airports, and airports at airports&lt;/b&gt;
&lt;p&gt;
Now at Changi Airport in Singapore, where there's a free 
802.11 network.  If you don't have a wireless ethernet 
card, they'll lend you one.  &lt;i&gt;Sweet!&lt;/i&gt;

&lt;p&gt; &lt;p&gt;
Unfortunately, at 4.00am I can't be bothered figuring it 
all out (Linux 2.4.whatever recognised the card, the 
interface partly came up, but the network wouldn't speak 
DHCP to me), so this is coming from Windows.  Bugger.  
Can't download my email properly.</description>
    </item>
    <item>
      <pubDate>Fri, 3 Aug 2001 02:40:01 GMT</pubDate>
      <title>3 Aug 2001</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=17</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=17</guid>
      <description>&lt;b&gt;Ob-Code Red&lt;/b&gt;
&lt;p&gt;
&lt;a href="http://www.advogato.org/person/jschauma/" &gt;jschauma&lt;/a&gt; mentioned grepping
apache logs for
Code Red
droppings, so I had a look.  I got 9 today.  This surprised
me:  I'm only
on a dialup, and I've only been online for an hour or so
today.

&lt;p&gt; &lt;p&gt; &lt;p&gt;
When the Red Hat 7.1 installer asked me about what firewall
settings I
wanted, I said none because I would either be on a company
ethernet
behind their firewall or on a dialup, and who on earth's
going to come 
looking for me there?  It seems that may have been a little
naive...
(And it's a good thing I'm not running any servers on the
Windows side of
this dual-booting box!)

&lt;p&gt; &lt;p&gt; &lt;p&gt;
I've only received one email due to it though, so I won't be
breaking out the 
procmail big guns yet.  I didn't realise that email might
have somebody else's 
interesting document in it, so I just deleted it without
looking.  D'oh!  [Double D'oh:  it's the other one that
sends the entertaining emails.  Oops.]

&lt;p&gt; &lt;p&gt; &lt;p&gt;&lt;b&gt;Hacking&lt;/b&gt;
&lt;p&gt;
There's not many things less fun than writing instructions
and tools for 
installing your project on an operating system you don't
care about and 
never use in earnest yourself.  The installation's really
not that hard: 
the old instructions really did work.
The &lt;a href="http://prc-tools.sourceforge.net" &gt;project&lt;/a&gt;
is a compiler 
and other programming tools, so my attitude used to be
&lt;blockquote&gt;
They're programmers, so they should be able to follow the
instructions
to the letter.  If they can't, it doesn't much matter
because they wouldn't
have much luck with the compiler anyway
&lt;/blockquote&gt;

&lt;p&gt; &lt;p&gt; Alas, my attitude is being forced to change to "I'll do
anything to stop 
getting email from these people about this pathetic
issue!!!"

&lt;p&gt; &lt;p&gt; &lt;p&gt;
Admittedly, the part that is changing did seem to be a
little fragile 
(although it always worked for me... go figure), and the new
method
(our own little setup.ini) is what I intended all along. 
And playing with
Cygwin's &lt;a
href="http://sources.redhat.com/cygwin/setup.html"&gt;setup
utility&lt;/a&gt; &lt;b&gt;is&lt;/b&gt; kind of fun.

&lt;p&gt; &lt;p&gt; &lt;p&gt;
But writing moron-proof instructions is &lt;b&gt;never&lt;/b&gt; fun.</description>
    </item>
    <item>
      <pubDate>Thu, 24 May 2001 07:23:15 GMT</pubDate>
      <title>24 May 2001</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=16</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=16</guid>
      <description>It's been a while....  I became one of those layoff victims about a month 
ago, and I've not felt much like computers since -- and I don't have one at home to write on anyway.
&lt;p&gt;
Today had a couple of firsts:
&lt;ul&gt;
&lt;li&gt;For the first time, I turned down an appealing job offer today.  It's a shame, but there it is.  I'm 
accepting the other also appealing job offer though.
&lt;li&gt;Tonight, while I was riding my bicycle down Almaden Expressway in San Jose, for the first time in my 
life some guy in a car decided he needed to throw something hard at me.  Suddenly something painful 
hit me 
in 
the back, there was much wetness that I couldn't immediately identify, and there was laughter and a 
violently accelerating SUV on my left.  It took a while to figure out what he had thrown, and whether I was 
significantly 
hurt (I wasn't, of course).
&lt;p&gt;
What kind of freak has stuff on hand to throw at cyclists while they're driving down the expressway about 
to get on 
the 85 onramp?  One who's just been to the supermarket and bought eggs, I guess.  And one who has the 
appropriately neanderthal mentality.
&lt;/ul&gt;

&lt;p&gt; It seems somehow fitting that that happened on the very day that I decided to leave the United States.</description>
    </item>
    <item>
      <pubDate>Tue, 10 Apr 2001 17:43:44 GMT</pubDate>
      <title>10 Apr 2001</title>
      <link>http://www.advogato.org/person/johnm/diary.html?start=15</link>
      <guid>http://www.advogato.org/person/johnm/diary.html?start=15</guid>
      <description>Rode the bike in this morning (cycling shoes).  Then &lt;a
href="http://www.planetgranite.com/"&gt;bouldering&lt;/a&gt; and a
sauna for a while (climbing shoes).  Now wearing vaguely
formal shoes and the others are arrayed around my cube.
&lt;p&gt;
I feel like Imelda Marcos...
&lt;p&gt;
Fortunately, you don't need special shoes to play with &lt;a
href="http://sources.redhat.com/cygwin/"&gt;cygwin&lt;/a&gt;, which
is what's on the cards for this morning.</description>
    </item>
  </channel>
</rss>
