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 page generally sucks less using Mozilla Firefox. RSS Feed


in the library south of the Caltrain station after a nap in the park across the bridge. I had planned on walking to the city, utilizing the new, partially-completed Kastania road extension and avoiding the 3-mile I street detour, but was offered a ride, then found out about the PresidiGo bus, which took me to the ferry station.

nights in the city are never very fun, but I think I'll make it OK. ate a yogurt to help fight off a nasty cold virus, and am shortly headed to the Panera next door to charge my devices and psyche myself up for the night. [comment]


there was an owl on the opposite bank, and as I approached, it took off and flew up the sluiceway. as that looked the least slippery and least steep way out of there, I started running up it as well. but before I was even halfway up, the dam was released and the water started down. of course I ran back down, trying to beat the wall of water but I woke up. [comment]


so not all my experiments today worked. this one failed: lit tea lamp in ceramic coffee cup. pour a little liquor around it. any 40% stuff should work, I used tequila. clip 3 small carabiners around the edge of the cup, and put a stainless steel cup on top. theoretically, as the heat builds up, the alcohol should be forced out of the water and ignite, heating whatever's in the cup all the faster. but it didn't work. the water only got to a little over 100 degrees F from the tea lamp. [comment]


I'll try and get some photos posted, but this idea is too good not to get out there immediately. it's the ultimate ultralight, compressible, and cheap rucksack for urban bivouacking. cost about $17: 4 chico bags ($2.99 each from Whole Foods), and 2 NiteIze S-biner #2 (plastic probably OK, I got metal for about $2 each). connect the bag in pairs using either a loop-to-loop knot or a girth hitch, doesn't really matter which IMO. then clip the near sides of the handles to each other with the S-biners, and throw it over your head. holds probably 80 pounds, balanced, doesn't slip off the shoulders. I've been working on this for years, finally got it right. not that it can't be improved upon, but it's the best I've come up with so far.

got that photo up. [comment]


I guess you've heard about the DDOS attacks by now. back in the late 90's or early 00's, Kyle Sparger and I came up with a mitigation idea, and the boss, Alvaro, agreed to it and found a provider with good gigabit connectivity to do it for us. basically, all we did was have a router in the remote datacenter, and when one of the computers in our datacenter was being DDOSed, we'd BGP-advertise its /24 on the remote router. whoosh! all the DDOS traffic went to the other datacenter, where it was just dropped on the floor because nothing was actually listening on that IP address, and our own network was unaffected. we floated the idea to other IT professionals at an InfraGard meeting, but I guess it was way over their heads. we were both pretty excited about it (at least I was; I think Kyle was), but when we got done speaking and asked for questions: silence.

I thought people would at least ask about the irresponsibility of advertising a /24 route out of a /16 or /17. but nope.

sometimes I wonder if other people/sites are doing this. it worked like a charm. [comment]


if I could go back in time, I wouldn't invent the wheel. I'd refine the travois. imagine how different things would look if we'd learned to glide better than to roll over everything. [comment]


troubleshooting the trailer wiring. there are several factors which, combined, cause me to question my sanity and wonder whether quantum effects are manifesting on the macro scale. first problem: the LED for the brake light wires is out on the trailer connector. but no problem, I verified 12V to ground with my meter. 2nd problem: I have an intermittent connector on the left flasher/brake wire about halfway through the circuit. 3rd problem: the wire for the LED module that's supposed to attach to the end of the boat has misleading color codes; it looks like it's the right brake/flasher and right taillight wires going to it, but in reality the green (right brake/flasher) is sneakily connected to ground (a bolt under the trailer) so it's taillight and ground. 4th: the aforementioned LED module is dead.

the 5th is a doozy: measuring voltages under different combinations of flasher and taillights were showing reverse polarity! that can't happen, right? and when I finally opened up the left-side taillight assembly and checked it out under each condition, I found the same filament being used for both brake and taillight.

turns out what is happening is that when the flasher comes on, while the taillights are on, the voltage goes to ground through the flasher circuit, instead of through the frame. I'm still not clear on this, or if it's really supposed to work this way. but I had to get this written down for when I need it again. [comment]


on the difference between anarchy and government.

being a generalist developer, I'll do work with one technology, then go for several months without touching it again, sometimes a year or more. often things have changed, sometimes drastically, since my last experience. or it could be just that my memory (in my brain, not on my hard drive) is going bad.

whatever the case may be, I got a TDD job recently which specified Selenium for the unit tests. I'd used it before, but hadn't run into this problem until now. while I was able to solve the problem, strangely enough in the process of complaining about it, I felt that the documentation was horribly misleading and would discourage many who could otherwise use the software to good advantage. hence the complaint linked above.

strangely enough, one of the developers, Dave Hunt, accepted the criticism and offered me an opportunity to do something about it. while busy with the job that required the library in the first place, I figured it was the least I could do to make a stab at it, so I forked the repository and attempted to clone it.

it was huge. after 1GB, I realized I didn't have enough hard drive space left, and was about to give up. but then I read up on sparse checkouts, and was able to just fetch the py subdirectory and do as Dave had suggested. a little back-and-forth later, and Dave had merged my pull request, and now the Python Selenium documentation gives much more correct information.

all told, about 3 and a half days from complaint to resolution.

now let's talk about the "state", in this case, the city of Petaluma, California. their city ordinance 10.56 converts a Constitutionally-protected right to keep and bear arms, especially since the Heller decision, into a privilege, by first revoking the right altogether in 10.56.010, and granting it back in 10.56.020. this is exactly the type of unconstitutional behavior the SCOTUS slammed in Shuttlesworth v. Birmingham: "A law subjecting the right of free expression in publicly owned places to the prior restraint of a license, without narrow, objective, and definite standards is unconstitutional, and a person faced with such a law may ignore it and exercise his First Amendment rights."

though the Petaluma ordinance doesn't impose a fee, it imposes a burden of proof, and thus gives officers of the law reasonable suspicion to deprive an otherwise law-abiding person of their 4th amendment rights. the ordinance cannot stand, and I tried to find a way to address this without going to tedious city hall meetings. but Petaluma doesn't much participate in social media. what they do share is one-way, from above to us peons below, and any feedback is simply unacknowledged. I did get Mike Harris, a former councilmember, to take it up with the city attorney a few years back, but I haven't gotten any followup from either.

so this is the difference, and most of us know it. however, for some unknown reasons, most people reject anarchy, under which they thrive, and embrace government, under which they suffer, at least to some small measure, almost every day. you got some 'splainin to do, Lucy. [comment]


all over the web you can find the sentence "If the State converts a right (liberty) into a privilege, the citizen can ignore the license and fee and engage in the right (liberty) with impunity." cited as a Supreme Court decision on the case Shuttlesworth v. City of Birmingham, Alabama, 373 U.S. 262, but if you search the actual text, you will find no matching text.

however, you do find many similar assertions, this one the first in the list: "A law subjecting the right of free expression in publicly owned places to the prior restraint of a license, without narrow, objective, and definite standards is unconstitutional, and a person faced with such a law may ignore it and exercise his First Amendment rights. Pp. 150-151."

why can't people just post the actual text, and let people extrapolate from it as they wish? [comment]


even easier:

    import sys, os
    if os.path.splitext(os.path.basename(sys.argv[0]))[0] == 'pydoc':
        import django


on and off over the years I keep trying to get `pydoc` to work from inside a Django project. it always fails.

(virtualenv) jcomeau@aspire:~/rentacoder/jmol$ (cd molecules/ && python -m pydoc viewer.views) problem in viewer.views - ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

so then, following this, I do:

(virtualenv) jcomeau@aspire:~/rentacoder/jmol$ (cd molecules/ && DJANGO_SETTINGS_MODULE=molecules.settings python -m pydoc viewer.views)
problem in viewer.views - AppRegistryNotReady: Apps aren't loaded yet.

googling around, I found out I could call django.setup() to fix that, but figured that could cause unwanted side effects in normal use. so then I searched for how to know the name of the importer, and none of these answers worked either. but somewhere along the line I got a pointer to sys.modules and this turned out to be the winner. I added:

import sys
importer = sys.modules['__main__'].__spec__
if importer.name == 'pydoc':
    import django

and now (virtualenv) jcomeau@aspire:~/rentacoder/jmol$ (cd molecules && DJANGO_SETTINGS_MODULE=molecules.settings python -m pydoc viewer.views) shows me the pydoc! [comment]


last night I was gonna make an omelet, but I did the float test on my eggs; they all failed and I chucked 'em. so I already had lots of fat in the pan. what to do?

last year or the year before, I'd had good luck "popping" various grains: wheat kernels, barley, and rice. nothing pops like popcorn, but wheat at least jumps a little, while pearled barley and rice just puff without any noticeable explosion. so I had some brown rice rotini and decided to try and fry it. it was great! add a little salt and it's a nice, crunchy, high-density source of fats and carbs. now to try it with other pastas. [comment]


only occasionally have I seen the bearded black guy who used to bicycle up the hill regularly, but today while I was sitting outside St. Vincent's, uploading the GPX file of my blog to MapMyRun, he rode up and parked his bike. I introduced myself and he, Henry, did likewise. we talked about stuff, and I found out that SVdP hands out $25 dollars for food at Lucky at 1PM on Tuesdays. I didn't hang around for it though. Salvation Army, near the corner of Caulfield and McDowell, also has a food handout once a month, but you have to show ID for that. good to know anyway.

nearing completion of my job, but my client seems upset that I didn't give a more full-featured search function. I gave him about $2000 worth of work for $200, and he's not satisfied. I feel like telling him to keep it for free, and I'll open-source it. but I need the money for my trip. [comment]


got treated to go see Kenny White in Sebastopol tonight. what a performer! I probably wouldn't like his politics, but the man can sing, and has a great stage persona. I was designated driver, and when we got back onto 116 there were flashing lights ahead, and inexplicably, cop cars and other cars lined up on both sides of the road, no accident apparent, nobody moving around. weird. another raid on a dangerous plant?

on a whim, went into my lady's wine cellar to see if I still had anything lying around, and lo and behold, I still had 3 bottles of 2-buck-Chuck left in the box I'd forgotten about. so I'm good for a few days at least. plus she made chicken broth and gave me the stock, so I've got my protein needs taken care of for a few days too. life is good. I can save up my $3/day food allowance for my trip down the coast.

when I took on this last job, I had a vague idea of what test-driven development was, but when my client called me on not having the test suite even started after reaching the first few milestones on the code, I looked it up. ouch. but I gave the excuse, which is true, that I had to wrap my mind around the job first, and to do that I had to code something up that would let me do that. he seemed to accept it. but now as I write the tests, I have to insert return statements in the routines so the tests first fail.

counting down the days. bus leaves on the 25th from San Francisco. [comment]


so it turns out that headache 2 days ago was likely just due to caffeine withdrawal after all. it went away a few hours after I ate the coffee beans — I guess there's a delayed reaction when ingesting it that way — and it slowly built back up overnight. in the morning I made coffee and it went away quickly.

just shows ta go ya... no matter how busy you are, make time for your addictions! [comment]


lost power about 0655 localtime. raining hard again, and looks as though it will hang around for a while this time.

noticed something a few weeks ago, but forgot to blog it. you may know that I've used a few grams of liquor in the morning as mouthwash for years now. just a sip is all it takes, after brushing my teeth and tongue. however, more recently I noticed that if I take a sip at night, after flossing, I wake up with no morning breath whatsoever.

got enough work to get me through the monthly credit card payments, now if I can just complete it on time. the current job is using JSmol, a fascinating molecular viewer that has been around in the Java form for a long time but was recently rewritten in JavaScript for HTML5-capable browsers. I've been having a lot of problems trying to use deferred loading, either through window.onload and/or Jmol.setDocument(0), but when I do it either of those ways, the _applet and some other attributes don't get populated in the object. all I get is the spinner.

so anyway, I rewrote the Django template code to just form the applets in-place using Jmol.getApplet(). problem solved. now I've got a bunch more coding to do before I get paid. [comment]


headache. thought it was maybe due to caffeine withdrawal earlier, so ate a few coffee beans but no joy. haven't been feeling quite right since last night's dinner. [comment]


finally got through Locke's Second Treatise of Government, or at least the part of it provided in the Harvard Justice course, though I had to skim the longwindedness here and there. I especially agreed with his courageous views on opposing tyranny towards the end. there is little doubt in my mind that the US government has long since passed into a state of war with its denizens, and has lost the "mandate of heaven". rebellion is duty. [comment]


my erection wouldn't go down, so I opened it up horizontally, removed the calcified structures that had formed, and while I was at it, tossed out some tumors and other loose bits. it all had the consistency of cooked chicken. but then when I was ready to snap it back togrther, I noticed the top piece was missing, so I threw the rest in the trash as well. then someone pointed out my right foot was completely fractured above the ankle, bones sticking out and shreds of skin hanging loose. I was about to throw that away as well, but then I woke up.

in the morning we found the source of all the splotches of dried blood on the floor: the dessicated remains of a ground squirrel in a wool blanket, surrounded by a hundred or so cocoon shells burrowed deep into the weave, and dead horseflies all around. I hypothesized that a fly had laid its eggs inside the poor little bugger, and anemia-driven delirium or a neurotoxin produced by the larva drove it to suicide, jumping out of the attic to the hard floor, then crawling around till it found the blanket in which to curl up until sweet death came to claim it. [comment]


amazing! an Upwork client posted a job with the declaration "I understand the hard work and importance of your time to get to this level as I have spent countless hours with studies on the python programming language so i will definitely compensate your for your time."

generally a variation on the condescending "This should be easy work for someone with the necessary skills..." is the meme du jour. [comment]


a couple of wartlike growths on the back of my right hand have been starting to worry me; I rub them off and they grow right back in a matter of days. but I tried putting black salve on them this morning and it had zero effect. so I guess I'm stuck with them, whatever they are. [comment]


finally got rid of MapFactor Navigator, which was becoming less useful and more annoying with each upgrade — the ads in the latest making it difficult to impossible to exit — and installed the open source Open GPS Tracker app instead.

that jog I tweeted a while ago was tracked using it. it does as good a job, if not better, than Navigator, and seems to use less battery power and to glom onto the satellites faster. big win. [comment]


in a recurring dream, I'm an alchemist or something similar. and when I land in this dreamworld I can never seem to remember the "backdoor" method to catalyze a reaction.

I, and no other alchemists I'm acquainted with, use the primary method. can't remember why; it's either very expensive, or more likely it requires an elaborate ritual which requires calling upon dangerous entities, which can turn on you if you don't do everything just right.

this alternate method just requires one other alchemist to help out. Alice, for example, initiates the first part of the process, then calls over Bob, who uses a certain amount of power displaced 90 degrees from Alice's, to complete the reaction.

yes, this is all very vague but I don't even understand the process while I'm in these dreams, let alone after I wake up and the details start to evaporate before I can get them down.

some of the other things I vaguely remember are that some kind of expensive powder is used up each time this is attempted, but if it's done right you get back the same amount at the end. and that if you can generate the energy needed mentally or "spiritually", you might even have a little extra at the end. and it seems to be that one time I never even needed Bob, I was able to do the whole reaction by myself without having to summon anyone else at all. but I couldn't remember how this time, or most times, and Googling (in these dreams) never brought up the method; it was some arcane hacker secret, and to keep it that way, other alchemists would clog the results with fake "secrets" that didn't work.

not too unlike programming in that regard. [comment]

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