jc blog - tales of a modern-day nomadic hunter-gatherer

Follow jcomeau_ictx on Twitter This is the weblog of Intrepid Wanderer. You never know what you might find here; graphic descriptions of bodily functions, computer programming secrets, proselytizing for the antichrist, miscellaneous ranting and kvetching, valuable information on living off the land... if you don't share my rather weird interests you may want to try slashdot instead.

You can consider my Del.icio.us links an extension to my blog, as are my LifeTango goals and my other to-do items. My to-buy list is also public, but only for sharing any useful ideas that might be there; I'm not requesting charity, neither do I offer it.

You can find me easily in google searches, as jcomeau, jcomeau_ictx, or jcomeauictx. There are lots of other jcomeaus, but AFAIK I'm the only jcomeau_ictx out there so far.

If you want to comment on anything you see here, try the new Facebook comments, reachable by clicking the "[comment]" link at the end of each post. If for some reason that isn't working, go ahead and email me, jc.unternet.net. You know what to do with the first dot. Make the 'subject' line something reasonably intelligent-looking or it goes plunk! into the spambasket unread.

This RSS feed may or may not work. Haven't fiddled with it in forever. RSS Feed


OK, I'm finally starting to get pretty good with this sourdough shit. Yeah, I know, wheat isn't supposed to be part of my diet, but this is arguably one of the healthiest ways to cook it if you're going to indulge.

Make your starter by putting some wheat flour in a jar of unchlorinated water (or chlorinated water left out long enough for the chlorine odor to disappear), and leaving it for a day or two till it starts to bubble and smell "sour" (hence the name). You can freeze some of this for later or, as I do, just use it all for the first batch, and leave a little of that batch to start the next, and so on. If I ever leave for a few days and my sourdough gets moldy, I can always make another starter any time.

Take your bubbly starter and dump it in a bowl. Add a cup or two of water, depending on the size of your bowl, and a pinch of salt. Then add whole wheat flour until the mixture is hard to mix. Leave it for a few hours to a few days, long enough for the bacteria to start predigesting it and turning it sour. When you're ready for some bread, dump a bunch of flour onto your big block of cedar (what, you don't have one? I do... nyahhh, nyahhh) and dump the bowl out onto that. Knead flour in until it's no longer sticky, roll it into a ball, mash one side of the ball into the flour just to be safe, and put that side onto the flat stone that you've preheated in your oven (what temp? hell if I know, mine's a wood stove). Walk away for an hour or two, play some cards with your neighbor, and come back with a knife and a stick of butter with which to attack that monster. Just lift it off the stone; amazingly, it doesn't stick, no oiling needed! Friß gut!

Oh, and don't clean out the bowl. Just add more water and flour and let it sit for the next batch.

Not letting it rise a second time, you can expect a very dense loaf, but it's more flavorful than yeast bread, easier to make, and uses only half the ingredients (no yeast, fats nor sugars necessary; only flour, water, and salt). It's a hacker's bread, no doubt about it. [comment]


Found a bug in my program, took me literally days to solve it, though... it's related to the way Python treats "ill-formed" Unicode characters:

jcomeau@USER ~/www/www/blog
$ python
Python 2.4 (#1, Dec  4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> u'\uda5d' + u'\udc9d'

Funky, isn't it? Anyway, I've modified docpack to skip that range and now I've successfully packed and unpacked the .txt files in the RFC database:

jcomeau@USER ~
$ du -b /tmp/rfcpack
47      /tmp/rfcpack/data/nfs/ftp/in-notes/tar
47      /tmp/rfcpack/data/nfs/ftp/in-notes
47      /tmp/rfcpack/data/nfs/ftp
47      /tmp/rfcpack/data/nfs
51953952        /tmp/rfcpack/data
34      /tmp/rfcpack/pdata/nfs/ftp/in-notes/tar
34      /tmp/rfcpack/pdata/nfs/ftp/in-notes
34      /tmp/rfcpack/pdata/nfs/ftp
34      /tmp/rfcpack/pdata/nfs
41055061        /tmp/rfcpack/pdata
96772077        /tmp/rfcpack

jcomeau@USER ~ $ du -b /usr/doc/rfc 103 /usr/doc/rfc/nfs/ftp/in-notes/tar 103 /usr/doc/rfc/nfs/ftp/in-notes 103 /usr/doc/rfc/nfs/ftp 103 /usr/doc/rfc/nfs 206246051 /usr/doc/rfc

Not very good, I admit, but still, saving half the space while still leaving documents searchable can't be bad. I was hoping the packed files would compress better with bzip2 than the originals, but no, slightly worse; on the other hand, gzip gets significantly better compression after packing:

jcomeau@USER ~
$ wc -c /tmp/rfc*z
 39197064 /tmp/rfc.tbz
 51339394 /tmp/rfc.tgz
 40710471 /tmp/rfcpack.tbz
 43923724 /tmp/rfcpack.tgz
175170653 total

So much for that. I was going to test it with the Linux sources, but ran out of steam. If anybody else wants to play with it and let me know, please do.

Luna County rejected City of the Sun's application for exemption from property taxes, so I'm drumming up support for a protest. We have 30 days to appeal to the exact same entity, the County Assessor. Nice setup for the parasites. How can any thinking person agree that "we" created this monster and we have to keep feeding it? Likewise, I'm stymied in my ALJ hearing request to the SSA; it might take a year more before I get my hearing, and I'm not even 100% sure they haven't file-13'd it already. I sent my last letter advising them of my physical address with a return receipt, so I know they got it on the 2nd of this month, but they never sent a reply.

A friend is on a mission for me, to get me a bottle of Laphroaig 15 and one of Lagavulin 16, so the Don't Nowhere Shebeen will be the only source of good single-malt scotch in a 60-mile radius in addition to always having a cool keg of Guinness on tap.

My sexual horizons expanded a bit recently with a mini-orgy, and while I can't find fault with bouncing around in bed with two beautiful women, I guess I still prefer the old one-on-one. Would I do it again? In a heartbeat. Even if the sex weren't awesome, the ego boost gives a guy a rush of dopamine that I doubt any drugs can match (though I'm not in any position to support that statement, not having experimented much in that realm). To me, a woman yielding her body to my pleasure, and pleasuring herself with mine, is the goddess herself blessing me and affirming her love for me. A double-dose of that is amazing.



Got docpack working on my "narrow build" Cygwin Python which doesn't support unicode characters above 0xffff, with some really nasty hacks. I'm not even going to try to backport this to Python-1.5. I've added 'dpcat' and 'dpgrep' routines to it, the latter as a very primitive proof of the ability to search the compressed files without decompressing -- it will decompress only when it's already found the search term in the packed source. [comment]


Hmph. I finally got the packing code in docpack.py working under Cygwin, but docunpack fails. Here's why:

jcomeau@USER ~/src
$ python
Python 2.4 (#1, Dec  4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a=u''
>>> a += u'\U0001d133'
>>> a += 'b'
>>> a
>>> map(None, a)
[u'\ud834', u'\udd33', u'b']
>>> a[0]
>>> a

The utf-8 decoder recognizes the character but the array treats it as two separate characters. So not only does it fetch the wrong tokens, the line isn't the expected length so the decoder will barf on trying to detokenize a None object instead of a character. Bleah. I don't see any easy workaround for that. [comment]


Woohoo! My customer bought me a new Dell Inspiron 600m for $599. This old Compaq Armada M700 hasn't died yet but it's seen better days. Plus, I didn't have enough to cover the shipping so I applied for credit and got it! Amazing, considering how badly fucked up my credit history is. Now I just have to force myself to pay the whole balance when the bill comes... I don't want to get on that revolving-charge roller-coaster madness again. [comment]


Trying different things to work around the Unicode limitations of the Python in my Cygwin configuration, and it's still not working, but docpack.py seems to be working under coLinux. I won't know until the compression finishes running and I can decompress and compare with the originals. [comment]


Forgot to mention, I did reload pre-RC5 on my master router, and the WDS connection came right up, thanks to that cron job mentioned previously. Now I've got to get another late-model WRT54G and see if I can figure out what the problem is. [comment]


I've been working on a text compression method (docpack.py) that, by tokenizing a common vocabulary, can allow direct search of the compressed files; which, unlike gzip and bzip2, speeds indexing of the compressed data. I haven't gotten it to where it can compress the whole RFC database yet, due to all the ASCII-art diagrams, but it's a work in progress. It should do better with C source, I'll have to run it against the linux kernel sources and see how it does.

Almost finished eating the beef I bought from a local rancher, gotta get some more soon so I don't go back to my bad dietary habits. There's also a new keg of Guinness here at my shebeen, but unless I get an aficionado here I'll keep drinking the flat stuff out of the old keg.

It's been unseasonably warm here the last couple of days and nights, hoping for an early spring! Still haven't had a rain strong enough to test my cistern yet. If I can collect a decent amount of the rainfall off my roof, I'll be sitting pretty when the Machine falls apart. Otherwise I'll have to move up into the Tres Hermanas mountain caves where the water constantly drips from overhead. [comment]


I'm eating the good beef I got from a local rancher for $2 a pound. If I could only stay away from corn chips, beer, and other crap I'd probably be a lot healthier. Nonetheless, it's an improvement.

Whenever I'd reboot the master WRT54G, the one with the slotted waveguide antenna on my roof, it would take hours for the WDS connection to get established again. Besides not being able to reach the router and computer in the community center, just running ifconfig would show no wds0.49152 interface. So today, after rebooting and finding the same problem, I walked down to the community center, logged into the computer, and pinged the near router, then the master. Instantly the network was up. So I had an idea; I put in a cron job like so:

* * * * * ~/send.py udp 9999 test >/dev/null 2>&1

Rebooted again after making sure it was sending the datagrams and boom! Instant WDS network! Now I can maybe try reloading WhiteRussian pre-RC5 and verifying the network still works. [comment]


Got coLinux working, yeah! Finally gave up on the winpcap bridging with my wifi, and instead switched to the wired ethernet. Boom! Got an address via DHCP instantly, and am running apt-get to install the stuff I need for testing.

Also worked on the COSF unternet this weekend, and got my logbot.py script running on Python 1.5 (on Dragon Linux, based on Slackware 7.1). I've only tested it with Slackware 4's ircd, haven't even looked at the RFC in years, so don't count on it to work. I had to change a number of other scripts, including template.py, gpl.py, jclicense.py, and pytest.py to get it running on the older Python. Some of the code is better, but there are still some huge ugly kludges left over from when I was first learning Python, so don't expect too much. The good news is that my big programming job is over, so I can spend more time on cleaning up my old code. [comment]


I gotta remember to write down my dreams in the morning when I remember them better... two nights ago I was about to let a cop convince me to let someone drill a hole in my leg in order to help capture someone who was going to blow up a building... then last night I was walking the perimeter of a triangular building over and over, and each time I reached one corner, the security minions kept harrassing me, even though they apparently knew I was working for The Boss. Weird. Let's see what locura tonight's dreamworld brings.

Some dreams are apparently what Ayn Rand describes something like the undigested memories of the day. But others seem to be more like glimpses into alternative realities. The above two, I believe, fall into the second category. Someday, if I keep religiously writing these down in as much detail as I can remember, and the search engines improve, I will find someone who's also visiting these same universes, and we can piece together a Bigger Picture, though I doubt we'll ever discover the Big Picture -- it's always going to be out of reach. [comment]


2006-2007 edition of PCDecisions is now shipping. Phew! There will of course be support issues, but the big push is over and I can maybe relax for the next 19 months. There are some projects I want to catch up on, like postforth and a ROCS system for City of the Sun. [comment]

view blog for 2023-10
view blog for 2023-09
view blog for 2023-08
view blog for 2023-07
view blog for 2023-06
view blog for 2023-05
view blog for 2023-03
view blog for 2023-02
view blog for 2023-01
view blog for 2022-12
view blog for 2022-11
view blog for 2022-10
view blog for 2022-09
view blog for 2022-08
view blog for 2022-07
view blog for 2022-06
view blog for 2022-05
view blog for 2022-04
view blog for 2022-03
view blog for 2022-02
view blog for 2022-01
view blog for 2021-12
view blog for 2021-11
view blog for 2021-10
view blog for 2021-08
view blog for 2021-07
view blog for 2021-06
view blog for 2021-05
view blog for 2021-04
view blog for 2021-03
view blog for 2021-02
view blog for 2021-01
view blog for 2020-12
view blog for 2020-11
view blog for 2020-10
view blog for 2020-09
view blog for 2020-08
view blog for 2020-07
view blog for 2020-06
view blog for 2020-05
view blog for 2020-04
view blog for 2020-03
view blog for 2020-02
view blog for 2020-01
view blog for 2019-12
view blog for 2019-11
view blog for 2019-10
view blog for 2019-09
view blog for 2019-08
view blog for 2019-07
view blog for 2019-06
view blog for 2019-05
view blog for 2019-04
view blog for 2019-03
view blog for 2019-02
view blog for 2019-01
view blog for 2018-12
view blog for 2018-11
view blog for 2018-10
view blog for 2018-09
view blog for 2018-08
view blog for 2018-07
view blog for 2018-06
view blog for 2018-05
view blog for 2018-04
view blog for 2018-03
view blog for 2018-02
view blog for 2018-01
view blog for 2017-12
view blog for 2017-11
view blog for 2017-10
view blog for 2017-09
view blog for 2017-08
view blog for 2017-07
view blog for 2017-06
view blog for 2017-05
view blog for 2017-04
view blog for 2017-03
view blog for 2017-02
view blog for 2017-01
view blog for 2016-12
view blog for 2016-11
view blog for 2016-10
view blog for 2016-09
view blog for 2016-08
view blog for 2016-07
view blog for 2016-06
view blog for 2016-05
view blog for 2016-04
view blog for 2016-03
view blog for 2016-02
view blog for 2016-01
view blog for 2015-12
view blog for 2015-11
view blog for 2015-10
view blog for 2015-09
view blog for 2015-08
view blog for 2015-07
view blog for 2015-06
view blog for 2015-05
view blog for 2015-04
view blog for 2015-03
view blog for 2015-02
view blog for 2015-01
view blog for 2014-12
view blog for 2014-11
view blog for 2014-10
view blog for 2014-09
view blog for 2014-08
view blog for 2014-07
view blog for 2014-06
view blog for 2014-05
view blog for 2014-04
view blog for 2014-03
view blog for 2014-02
view blog for 2014-01
view blog for 2013-12
view blog for 2013-11
view blog for 2013-10
view blog for 2013-09
view blog for 2013-08
view blog for 2013-07
view blog for 2013-06
view blog for 2013-05
view blog for 2013-04
view blog for 2013-03
view blog for 2013-02
view blog for 2013-01
view blog for 2012-12
view blog for 2012-11
view blog for 2012-10
view blog for 2012-09
view blog for 2012-08
view blog for 2012-07
view blog for 2012-06
view blog for 2012-05
view blog for 2012-04
view blog for 2012-03
view blog for 2012-02
view blog for 2012-01
view blog for 2011-12
view blog for 2011-11
view blog for 2011-10
view blog for 2011-09
view blog for 2011-08
view blog for 2011-07
view blog for 2011-06
view blog for 2011-05
view blog for 2011-04
view blog for 2011-03
view blog for 2011-02
view blog for 2011-01
view blog for 2010-12
view blog for 2010-11
view blog for 2010-10
view blog for 2010-09
view blog for 2010-08
view blog for 2010-07
view blog for 2010-06
view blog for 2010-05
view blog for 2010-04
view blog for 2010-03
view blog for 2010-02
view blog for 2010-01
view blog for 2009-12
view blog for 2009-11
view blog for 2009-10
view blog for 2009-09
view blog for 2009-08
view blog for 2009-07
view blog for 2009-06
view blog for 2009-05
view blog for 2009-04
view blog for 2009-03
view blog for 2009-02
view blog for 2009-01
view blog for 2008-12
view blog for 2008-11
view blog for 2008-10
view blog for 2008-09
view blog for 2008-08
view blog for 2008-07
view blog for 2008-06
view blog for 2008-05
view blog for 2008-04
view blog for 2008-03
view blog for 2008-02
view blog for 2008-01
view blog for 2007-12
view blog for 2007-11
view blog for 2007-10
view blog for 2007-09
view blog for 2007-08
view blog for 2007-07
view blog for 2007-06
view blog for 2007-05
view blog for 2007-04
view blog for 2007-03
view blog for 2007-02
view blog for 2007-01
view blog for 2006-12
view blog for 2006-11
view blog for 2006-10
view blog for 2006-09
view blog for 2006-08
view blog for 2006-07
view blog for 2006-06
view blog for 2006-05
view blog for 2006-04
view blog for 2006-03
view blog for 2006-01
view blog for 2005-12
view blog for 2005-11
view blog for 2005-10
view blog for 2005-09
view blog for 2005-08
view blog for 2005-07
view blog for 2005-06
view blog for 2005-05
view blog for 2005-04
view blog for 2005-03
view blog for 2005-02
view blog for 2005-01
view blog for 2004-12
view blog for 2004-11
view blog for 2004-10
view blog for 2004-09
view blog for 2004-08
view blog for 2004-07
view blog for 2004-06
view blog for 2004-05
view blog for 2004-04
view blog for 2004-03
view blog for 2004-02
view blog for 2004-01
view blog for 2003-12

Valid HTML 4.01 Transitional

Valid CSS!