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


Aha! Apache mod_ssl provides SSL_SESSION_ID, but not by default. So I just need to require SSL/TLS, and don't have to implement (or use anyone else's) schlocky session management. [comment]


Earlier this morning I was considering what the Native Americans did wrong. Though they did so much right, they weren't ready for interacting with a group of people who would stop at nothing to take their land away from them, and who had the belief in a supernatural being that wanted them to have it. The typical "injun" war was a punitive mission that generally succeeded in one side or the other learning a lesson; the white man, however, refused to learn. The more lessons the natives tried to teach us, the more forces we gathered to fight them, kill them, destroy them and their "inferior" culture.

As much as I value the input and ideas of some of my fellow occupiers, I feel that the principle of nonviolence can only go so far, and that a people that wishes to survive can never entirely purge the concept and the practice of violent attack against a ruthless enemy. Even if the whole world could be convinced to lay down arms and work out differences in civil ways, invaders from other parts of the universe may not be so inclined. [comment]


Able to walk again, flat-footed at least, on my left foot after smashing its 4th toe on a convex corner of the wall on the 25th. Was I drunk? Maybe, but not much. Just one of those freak accidents. I don't believe it's broken, but it hurt like hell for hours. Now it only hurts when I bend it. [comment]


When using https, Chrome changes the port every new request, but Firefox reuses the same one. Can't be reliably used for session management. I'd like to find a server-side way of keeping session state without having to rely on cookies or anything that can easily be spoofed from a shared hotspot. [comment]


Just finished the last mouthful of my Burning Man mix of cooked bacon and almonds fried in bacon grease. Over 4 months without refrigeration, how's that for food storage success?

I released my USB-bootable colorforth a couple of days ago, not to much interest apparently. The kernel doesn't work with Howerd Oakford's cf2010, but probably only needs block defined to use offset and maybe a few other tweaks. [comment]


Hiked with some friends up around Shell Beach this morning. Breezes took the previously-incessant smog out to sea today; the view was gorgeous from Red Hill, and I could communicate easily with Petaluma on the nine-one repeater. Jogged the trail back, poured some wine into my coffee cup, and am awaiting my compañeros in comfort. Twisted my ankle slightly on the way down, but hoping it will be all right. [comment]


The Chacos I bought in Seattle on that miserable new year weekend of 2009 and hadn't started wearing regularly since last June due to the discomfort of the straps on my feet, finally started wearing out a couple of weeks ago. And the sole of the left sandal actually cracked, and broke right through just a few days after. I thought that was unacceptable for a $70 pair of sandals, and so did the guy at the Santa Rosa REI today. I got a new pair, and almost $40 back since they were on sale. Made out like a bandit. [comment]


Anybody with an old Purex Tropic Isle model C180-C W pool/spa heater has probably had to change out the overtemp limit switch at some point. It looks like a 3" piece of copper tubing sticking out of a 1/4x1/8" NPT reducing bushing, with two wires sticking out the 1/8 end, with potting epoxy sealing the wires from water. Unfortunately, the copper corroded through and the water ate the wires from inside. There was a bimetal switch in a glass tube inside I might have been able to salvage, but I accidentally lopped the end off while cutting open the copper tube, losing the vacuum. So I'm going to have to see what I can rig as a substitute, since 3 different shops we tried were unable to locate one. [comment]


Turns out the int 0x13 call is resetting the trap flag, or otherwise causing my diagnostic code to cease running at that point. Found out after a series of modifications to my [comment]


At a party I was out on the balcony talking about how the old Indian in Ishi jumped off the cliff into the trees, and kayaking friend Chocolate Larry told me about parkour. Look it up, it's really sick. [comment]


So it's !lng in block 84 that's storing the sector count, overwriting my bootcode. Now to figure out the nicest way to fix that... plus I have another, new problem with boot from a partition, but will leave that for later. [comment]


I read the news today, oh boy...

When I jogged downtown and stopped at Evil Corporate Coffeehouse for my regular, there was the New York Times someone had left behind. On the front page was a story about military documents left behind in a junkyard that gave details about our Marines killing Iraqi civilians as a daily occurrence; something I'd already heard from other sources, notably WikiLeaks, but this was even more in-your-face.

And also on the front page was news that the government was again on the brink of shutting down, due to dithering over the payroll tax cut. They can't agree on how to fund it. But chances are they'll just punt, as they always seem to do. Of course, I wish they'd just shut down, close the doors, go home, have an auctioneer sell off the furniture, and make a Museum of Fascism and Fraud out of what's left.

Inside there was an op-ed that started "THE Occupy Wall Street protests have come and mostly gone, and whether they continue to have an impact or not, [blah, blah, blah]"... are you kidding me, Gar Alperovitz? "Mostly gone"? Please pull your head out of whatever cavity it's in and get with the program.

Anyway, just glad I don't indulge in that brainwasting activity too often. Besides all the mental prions making a sponge out of a rational mind, it's depressing as hell.

But there was one sign of hope: a bunch of working-class Chinese put up roadblocks and armed themselves with homemade weapons after a man delegated to negotiate with the government died in custody, apparently tortured to death. Occupy China! Occupy Everywhere! [comment]


Trying some homebrew lipid therapy: a couple of raw eggs yesterday, and some hempseed oil today. Not enjoyable but definitely kills my appetite.

Realized yesterday evening that the BIOS was leaving interrupts enabled after int 0x13 calls. Freed up some more space by studying the instruction set a little better, and stuck CLIs in after each disk service call. Now my E625 boots clusterFix all the way up from a partition, and does not crash after a save. However, it still overwrites the bootblock (not the MBR, though, if it's installed to a partition) and fills the unused part of the last sector with 0xcc. The last probably isn't important but the first definitely is. Good possibility of finishing this tonight, "this" being the accomplishment of BIOS reads and writes from clusterFix. [comment]


okadfull.nasm:640: error: shift operator may only be applied to scalar values errors? Solution: use %assign rather than %define, as the latter produces a "relocatable reference" whereas the former evaluates to a pure number. [comment]


There probably exists a bindiff program like this, but I felt like making one. It took me a while wading through the Bash manpage till I found out the magic incantations to fetch the last two positional parameters. There's probably a far more elegant way but this is working:

# compare two binary files
if [ "$#" -lt 2 ]; then
 echo Usage: $0 [DIFFOPTIONS] FILE1 FILE2 >&2
 exit 1
file1=${@:$(($#-1)):1}; file2=${@:$(($#)):1}
binfile1=$(mktemp); binfile2=$(mktemp)
if [ -f $file1 -a -r $file1 -a -f $file2 -a -r $file2 ]; then
 xxd $file1 $binfile1; xxd $file2 $binfile2
 diff $switches $binfile1 $binfile2
 echo Both files must exist and be readable >&2
 exit 1

Using it, I found that the trashed USB key had overwritten almost perfectly; only the first block had been hopelessly ruined, and the trailing zeros in the last block had been overwritten by 0xcc. At this point I could try to figure out where it got the bogus data, or I could just keep working on debugging the code. Mañana. [comment]


Status on clusterFix: boots, runs, saves image fine with both Qemu and Bochs as a virtual floppy. Boots from the MBR of a USB key on real hardware, but crashes on "save" and the image is unbootable afterwards. Still need to do a post-mortem. From a partition on a USB key, it starts to boot but hangs somewhere in the first int 0x13, with AH = 8, for obtaining the disk geometry. And the SI register should be pointing to the partition table, but it has 0xAA55 instead. Something really strange there. Qemu can't boot it from a partition at all, it loads the wrong sector into 0x7C00... I probably didn't specify the right geometry in the Makefile. Haven't tried with Bochs yet, guess that should be my next step. Finally was able, with sshwartz's help, build Bochs with internal debugging enabled; and while it still is missing two-thirds of the graphics-mode screen as Qemu is, at least the top part of the screen shows the same thing as Qemu does now, instead of being all black. [comment]


Turns out the weird problems with the bootcode were caused by my overwriting the GDT. I was under the mistaken impression that once LGDT was executed, the contents were cached in the processor and the space could be reused. Wrong.

Still having problems with it, because that meant I had to make room for all those variables I was attempting to store in the GDT. That meant a major overhaul of the code, so I'm chasing down bugs again. [comment]


Something strange going on here...

<bochs:20> r
eax: 0x00000003 3
ecx: 0x00094144 606532
edx: 0x000f03fb 984059
ebx: 0xe0004144 -536854204
esp: 0x0009fffc 655356
ebp: 0x00000f9a 3994
esi: 0x0009f400 652288
edi: 0x00200200 2097664
eip: 0x0020028e
eflags 0x00000046: id vip vif ac vm rf nt IOPL=0 of df if tf sf ZF af PF cf
<bochs:21> s
Next at t=123858401
(0) [0x0000000000200291] 0008:00200291 (unk. ctxt): out dx, al                ; ee
<bochs:22> r
eax: 0x00000003 3
ecx: 0x00094144 606532
edx: 0x000f03f8 984056
ebx: 0xe0004144 -536854204
esp: 0x0009fffc 655356
ebp: 0x00000f9a 3994
esi: 0x0009f400 652288
edi: 0x00200200 2097664
eip: 0x00200291
eflags 0x00000082: id vip vif ac vm rf nt IOPL=0 of df if tf SF zf af pf cf
Why the hell is PF dropping? Same in Qemu with the GDB stub:
(gdb) si
0x0020028e in ?? ()
=> 0x0020028e:	80 ea 03	sub    $0x3,%dl
12: /x $eax = 0x3
11: /x $ebx = 0xfe004144
10: /x $ecx = 0x4144
9: /x $edx = 0x3fb
8: /x $esi = 0x9f400
7: /x $edi = 0x200200
6: /x $ebp = 0xf9a
5: /x $esp = 0x9fffc
4: /x $es = 0x10
3: /x $ds = 0x10
2: /x $cs = 0x8
1: /x $ss = 0x10
(gdb) info reg
eax            0x3	3
ecx            0x4144	16708
edx            0x3fb	1019
ebx            0xfe004144	-33537724
esp            0x9fffc	0x9fffc
ebp            0xf9a	0xf9a
esi            0x9f400	652288
edi            0x200200	2097664
eip            0x20028e	0x20028e
eflags         0x46	[ PF ZF ]
cs             0x8	8
ss             0x10	16
ds             0x10	16
es             0x10	16
fs             0x0	0
gs             0xb800	47104
(gdb) si
0x00200291 in ?? ()
=> 0x00200291:	ee	out    %al,(%dx)
12: /x $eax = 0x3
11: /x $ebx = 0xfe004144
10: /x $ecx = 0x4144
9: /x $edx = 0x3f8
8: /x $esi = 0x9f400
7: /x $edi = 0x200200
6: /x $ebp = 0xf9a
5: /x $esp = 0x9fffc
4: /x $es = 0x10
3: /x $ds = 0x10
2: /x $cs = 0x8
1: /x $ss = 0x10
(gdb) info reg
eax            0x3	3
ecx            0x4144	16708
edx            0x3f8	1016
ebx            0xfe004144	-33537724
esp            0x9fffc	0x9fffc
ebp            0xf9a	0xf9a
esi            0x9f400	652288
edi            0x200200	2097664
eip            0x200291	0x200291
eflags         0x82	[ SF ]
cs             0x8	8
ss             0x10	16
ds             0x10	16
es             0x10	16
fs             0x0	0
gs             0xb800	47104
Real hardware is crashing too, but not sure if it's due to this or not. Note that it doesn't crash right here; it crashes later, when I'm trying to jump back into 16-bit protected mode with a far ret. Then it triple-faults. [comment]


The clusterFix project, built on the last Public Domain release of arrayForth, is almost at release stage. The pmode image boots up fine on my laptop and goes through the hoops to get from real to protected mode and back, but somehow the newboot.cf binary crashes while switching to real mode from protected. I haven't been able to figure it out on Qemu, even with gdb, because it just GPFs on the retf with no explanation. I suspect it's something to do with the stack, but haven't tracked it down yet. Also, Qemu loses track of the PM flag, and shows it in real mode even though it's clearly executing 32-bit code.

Bochs, on the other hand, gets stuck in an I/O loop, so it never fully boots. That's probably fixable with some option in the bxrc file, but I haven't investigated that enough, either.

Plus, now that I've gotten Twitter OAuth working I'd like to build a GA (#Occupy General Assembly) online app with it, so my attention is divided. And, I still need some working jobs to get myself out of debt. Though some of my fellow conspiracy nuts now believe it's the Occupiers who will be the first to be rounded up into FEMA camps, there's also the hypothesis that they will first be used as debtors' prisons. No point in giving the gummint any more reasons to incarcerate me. [comment]


Took it easy on the MMS last night as I had to drive into San Francisco this morning. Feeling a lot better. Brought a pair of my ripped pants to get fixed by another member of the BACE timebank: my first transaction.

Attempting to pull my whiskers was a mistake. Now I have lots of bumps on my face that get cut open when I shave. Seems to be an either/or matter: pluck or shave, but not both.

Some tension in Occupy Petaluma as we evolve, but nothing really major. Overall, the level of discourse is refreshingly high. [comment]


Drank the MMS all night, and by 5 or 7 had a headache. Still have it, and some nausea. Stopped until tonight. Seems to be doing something this time. [comment]


Decided to start taking the MMS again, but at night rather than during the day. If I wake up every two hours I can take a double dose and go back to sleep.

Client hasn't gotten back to me with data I need, so have been messing with colorforth again. Getting close to being able to drop back into realmode for BIOS reads and writes to the boot disk. [comment]


I want to make progress on some software tools to facilitate true participatory democracy, but keep getting sidetracked by current events. Damn, these silly puppets in the Congress and White House are really getting disgusting, "hey, look at me, when you say 'jump', I jump higher!"

I say they're all guilty of treason, anyone who voted for these anti-Constitutional laws to strip us of due process, freedom of speech or the press, the right to bear arms, the right to be secure in our persons and possessions. Hanging is maybe a bit extreme. I'd say send them to Haiti and let them live on the street, but the poor Haitians have enough problems as it is. [comment]


The MMS hasn't noticeably affected my phlegm problem yet. But the last few days it hasn't noticeably reacted to the acid (vinegar) activator. The indirect sunlight coming into the kitchen may be releasing the oxygen. [comment]

view blog for 2024-07
view blog for 2024-06
view blog for 2024-05
view blog for 2024-04
view blog for 2024-03
view blog for 2024-02
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-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-02
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!