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

I decided to move my blog to my own webspace from jcomeau.blogspot.com, since blogger doesn't reliably keep past blogs. A lot of my more useful content was deleted. So, let's start off 2004 with this new weblog and see what the year might bring.


OK, so time.exe does exist. I forgot that some cygwin tools require the .exe extension and some don't; and I tend to forget it's not a unix system, and those files actually do have an .exe extension... [comment]


Found a tool in cygwin called 'time', under /usr/bin; can't tell anything more about it because there's no manpage for it, '--help' doesn't work, and the file doesn't really even exist (!)... but the damn thing works! I tried:

jcomeau@notebook /tmp
$ time 2bit unpack chr3.fa.2bit

real 5m43.755s user 1m55.656s sys 1m19.774s

jcomeau@notebook /tmp $ time 2bit pack chr3.fa.2bit.fa

real 3m5.541s user 1m51.870s sys 0m5.738s

This is still using cygwin1.dll, for some reason it still fucks up with msvcrt.dll. [comment]


Got a WAV file tranposer written. Yes, it would be better to write a 'play' program with a transpose option, and I do intend to eventually do that, but for now this will have to do. And it transposes by lengthening or shortening the overall sequence, slowing it down or speeding it up, like the old tape-drive karaoke machines, not by fancy programming. This was a one-day hack, and it was hard enough getting this to work reasonably well.

I found out why the 'play' routine I put into the winsound module yesterday only plays the first 40 to 45 seconds of the song: the Win32 PlaySound service that I'm using just stores as much as it wants to in RAM and plays it from there. I'll have to write something more sophisticated. [comment]


Come to think of it, the feeling in my mouth now is very similar to what it feels like several hours after having had Novocaine injected. I wonder if that plant could have some use as a local anesthetic. [comment]


Got a good scare today. You know how I'm always edibility-testing different plants? OK, well, either way, that's what I do every few days. Today I tried a new leaf on a common decorative plant here in Florida, that was growing near the bus stop on Taft street close to home. It has large, fleshy leaves and a trunk that looks like a large snake, particularly a boa constrictor. This trunk snakes around along the ground and sends up leafstalks about 7 feet into the air usually.

Anyway, so I was chewing on a piece of a leaf, and it was very bland, like cabbage. But then it hit me. An incredibly painful burning sensation, perhaps oxalate crystals, that seemed to be tearing apart my tongue, inner cheek, and gums. Immediately I spit it out, and washed my mouth out in the little decorative pool outside Walnut Creek homes. Then I quit waiting for the bus and went to Benchwarmer's, where I had a couple pints of Bass and a dolphin sandwich. I also sucked on a slice of lemon to neutralize the oxalates, if that was indeed what they were. After that I felt a little better. I took the #9 bus to Park Rd., and now I'm in Offerdahl's again with my fudge brownie and coffee. Looks like I live to fuck up another day. [comment]


A lot has happened. First of all, that piece-a-shit luggage I bought from Wallgreens fell apart in only a few hours! Both one of the wheels and the main zipper! And I had thrown away the damned receipt so I can't get my money back. $20 down the toilet.

Then, I found out from my buyer in NJ that he got his gold coin! Finally, after 3 weeks, USPS delivers!

Tonight, I found in a web search how to compile executables under Cygwin so that they don't need the cygwin DLL: use -mno-cygwin as a switch to gcc. It then uses MinGW to link with the Visual C runtime, msvcrt.dll. So I changed a lot of my Makefiles and recompiled. The 2bit program wouldn't link though; it turns out index() is a gcc thing, apparently, and had to change all my index calls to strchr() instead. That fixed the link problem, but then the executable failed to produce a matching chr3.fa file from a previously 2bitted one. So I fixed the Makefile to continue using the cygwin libraries until I get around to fixing the C code. I'm pretty sure it has to do with my crappy treatment of newlines. [comment]


Finally got a cygwin replacement for the winsound module working. I probably could have figured out how to get the one that came with the Windows Python distribution working under Cygwin but it was more fun rolling my own.

Had a flat tire (well, the whole wheel actually) on my little collapsible luggage cart today. Luckily I was right in front of Wallgreen's at the time so I found a piece of luggage with wheels and bought it. My cornet and Hennessy hammock fit perfectly inside, and my laptop case stacks on top. Let's see how long this lasts, the luggage cart only lasted what, 3 weeks? Not the worst $25 I ever spent, but still bad. Now before this falls apart I'd better have some spare wheels made for it.

Now to get back to my wav2mid conversion program. Got another hour before this Starbucks closes. [comment]


Some good luck for a change. I got a script working that calculates the primary frequency of a sound file. It's off by one octave and one hertz, but I think I know why and in any case it will be trivial to fix. It's the start of my wav2mid program I've been promising for years now. Finally the intuitive understanding of the fourier transform that I've had for about 15 years has matured to a partially functional understanding; it will probably take another 15 years before I have a mathematical understanding of it.

I also learned how to sing vibrato using the free online lessons at http://www.vocalist.org.uk/. Of course, it needs practice, but I'd been trying to do it for at least 30 years with no success until today!

I'm thinking of starting an archive of conversion programs. They will have a common naming convention of xxx2yyy, where xxx is the source format and yyy the destination format. 3-letter abbreviations (extensions) will be used even if they aren't the most common extensions for the files, e. g. "sgm" instead of "sgml". If there isn't a 3-letter extension but there is a 1- or 2-letter extension, that will be used, e. g. ps2htm for postscript to html. There will also be a common syntax, e. g. executing the program without arguments should consistently print a usage message to stderr, -o should set the output, -o "*.txt" should append ".txt" to the name of each input file to make the output filename, and "-" should indicate stdin or stdout depending on where it's used: 'cat file.html | htm2txt -o - -' should work as expected, sending the text output to stdout. [comment]


Does anybody know of a shipping company that doesn't fuck you over every chance it gets? GOD DAMN! UPS, USPS, and FedEx. Still a bunch more to go I guess.

I tried to use the UPS website to send a package last year. Turns out to use the online method I had to print the label myself. I don't have a printer, so I shipped it from the Office Depot instead (it's a UPS affiliate). But I later found out UPS had charged me for the incomplete online transaction! And after several back-and-forth emails with their customer support droids, they completely refused to issue a credit. They said I had to deal with MasterCard to get the charges reversed.

So, I went to USPS. On the 5th I sent a gold coin to my eBay buyer, and he still hasn't received it. But I thought he had, and threw away my insurance receipt. Even though I paid by credit card and they can tie my transaction ID to my insurance number (which I know, by the way, I always email it to the buyer), they refuse to do so and so I'm out $420.

So yesterday, I opened an online account with FedEx. They charged my credit card 3 times for $10.00 each. After speaking to some bozo who didn't know what I was talking about, I called back and got someone named Hazel who glibly explained that each time I access my account online, it will automatically submit a charge to my credit card for $10.00. "It's the bank doing that, it's not us". Once my account is verified, that will stop, and in any case the charges won't be completed, they'll just time out and after 11 days my money will be there. Wonderful. Well, why don't they warn anybody about that? She ignored the question.

Going to the Publix right now to take the rest of my money out of the PayPal account. See ya later. [comment]


So my last gold coin didn't last 3 weeks, only 2 and a half. Still an improvement. But the one I sold on the 5th never made it to the buyer, and I already threw away the insurance receipt from the P.O. Even though I paid with my PayPal card, and they can get the insurance number from the transaction number, they won't, so I'm out 420-some-odd dollars.

Went to the Sports Rock Lounge near my house for the first time in a few years. Now they've got Guinness on tap, a juke box, karaoke on Wednesday nights, and when the kitchen closes you can get pistachios or mixed nuts from the vending machine. Now, that's my kind of bar. No more Chauncy's for me. Well, at least not as often.

Went fishing this evening, a few hits on my shrimp but no catches. It was probably just puffers. I was trying in the Intracoastal just south of the bridge over Hollywood Boulevard. At least there are still coconuts in easy reach on the palms there, so I filled up on coconut milk. And after losing 3 shrimp I walked to the park just north of Angelo's pizza and cooked the rest in my little frypan over my Esbit portable stove. Now I'm on the bus back home.

I've been thinking more about the underground economy. Everybody should be able to get away with running businesses like stores, restaurants, and bars from their homes, without licenses or any other official harassment. At least with restaurants and bars, you could say it's a party. A 24-hour, 7-days a week party that everyone in the neighborhood is invited to, year- round! (I wouldn't try this up north, but in a tropical climate it might work.) Put a donation jar on top of the bar, and let people pay what they want, but keep an eye on it, and have some way of giving freeloaders the boot. Maybe I'll come up with some way to advertise these on unternet.net so that only like-minded people can see the pages. If you've got any ideas along these lines please email me. [comment]


Didn't go near the internet yet all day (writing this offline). That's the only way I get any work done lately. Sitting in the Starbucks on Pines and Douglas, and finally got a minimum.pe file to undump to a valid win32 executable. This is part of the postforth v.1 project, and more info will be forthcoming as I make progress. Basically the idea was to find out how little data can be in a Win32 'PE' executable (search for PE.pdf on the internet, you'll probably find the document; it's full of errors though) and still have it work. Next step is to write a python script to generate such a file. [comment]


Besides the prickly pear (nopal, en español), I was able to get a coconut by standing on the combination of my laptop case on top of my trumpet, which I carry around with me on one of those small collapsible hand-trucks which one can buy at Target or Wal-mart. In effect, I was standing on my laptop. Don't try this at home kids. I opened the coconut to get the liquid in my usual penknife manner; first slice a thin part of the hull off to a diameter of 2 inches or more, to have a clean place to place your lips (car exhaust and other pollutants would tend to deposit on the outer hull). This process also cleans your knife, if you have been using it on animals or other less-than-clean things. Then, holding the freshly-exposed inner hull upwards, cut a hole about 1/2 inch diameter in the center of the exposed area. Juice will likely squirt out when you first insert the knife, so be warned. Anyway, once the hole is done, just lift to your lips and drink. This is only for unripe, green or yellow coconuts (the coloration is, I think, a genetic thing, as for Mendel's peas).

By the way, did you know that both the fruit and lobes of the prickly pear are edible? To me, the lobes are better eating than the fruit, though that may vary from variety to variety. On both, make sure to cut off not only the big thorns, but also the little fuzzy ones that make you itch. It's bad enough on your hands, you don't want those nasty things in your throat.



Now that I've passed the prickly pear again, let me tell you where it is before I forget again. There's a big stand of it at the corner of Jackson street and the broadwalk, in an empty lot. There's more of it in the lot of the apartment building next door to it, heading north to Virginia street. [comment]


Just woke up from an afternoon nap on Hollywood Beach. This has gotta be the healthiest way to live, breathing fresh air and relaxing to the sound of the ocean waves. We weren't meant to be boxed up in houses.

Anyway, the idea popped into my mind of a bot that listens for questions in its own efnet (or whatever) channel and answers them for me. I would name mine #jcomeau.com for example. And I would program it to answer questions from my perspective, and keep it active forever. I will be able to ask it questions myself, which will be a big help when writing programs, because I can't remember one month after a php job what most of the functions are. But it will be of use to others too; my buddies taz and tones, for example, could make their own bots and our bots could ask each other questions. Maybe they would become self-aware and live, and continue to learn, long after we've passed away! And other people could access our copious wisdom for eternity.

I'm still amazed that nobody seems to be offering eternal domain name registration, hosting, dedicated servers, etc. Maintenance costs on these things are so minimal, due among other factors to Moore's Law, that if a company can bootstrap itself into existence by getting lots of money up front, by investing the money wisely they could easily make good on the eternal service while having plenty of cash to make payroll. Well, maybe it wouldn't be easy. But it would be doable. [comment]


Found a pair of khaki Crocs in my size today, now I'm various shades of beige from head to toe. What vanity! But I have been really conscious of those solid-white Crocs I bought at Outdoor World a couple of weeks ago.

Trying to decide if I should go to the karaoke contest tonight, or practice Coldplay's Clocks for another week first. Hell, I'll probably go and make a total ass of myself again.

Haven't been programming much in the past few days, but have been practicing singing and playing cornet. And might even have a consulting job coming up, we'll see. And except for craziness like those shoes today, I have been keeping my expenses down pretty well lately; that last gold coin will have lasted 3 weeks before I have to sell another one. Maybe even a month if that consulting job comes through. [comment]


I decided against building a dome. For the simple reason that I don't need one. There's nothing I need other than what I can quite easily carry with me, and my Hennessy ultralight hammock is sufficient for shelter almost all of the time. So I don't need a permanent building either for storage or for a place to sleep.

Yesterday I got a couple of brilliant ideas, let me share them with you. Take a 1-oz gold coin, melt it down, and pour the liquid gold into a small-diameter (say 1/4 inch?) steel or aluminum tube to solidify. Then force it out of the tube somehow and cut it into pieces of various thicknesses. Weigh each piece on a scale like the ones used for gunpowder. Stamp each of the small coins with the weight in grains and fraction of an ounce. You'd never need to have "small change" because the coins aren't identical weight. Want to buy something worth $1.50? Give the vendor a coin worth $6.00 and he gives you back one worth $4.50. If everybody who wants to participate in a gold-based economy carries even a tenth of an ounce worth of these coins around, it should be very easy (if a little tedious) to come up with exact change for anything. I was thinking 100 pieces of 1/100 ounce each but maybe they would be too thin. It will take some experimenting I guess.

The other idea is for a very simple humanoid robot. All these complex, expensive designs require gyromotors to keep the damned things upright. How about a very lightweight design, inflated with helium, with very small servomotors and aluminum tubing allowing it to walk around. Sure, it won't be able to do much useful work. But it could walk and potentially talk, and it would be more humanlike than any of these designs I've seen on Slashdot lately. Realistic? Sure! People have sex with inflatable dolls don't they? [comment]


You just gotta read Daniel Quinn's The Story of B. It gives a much more valuable view of the world than the typical East/West or Conservative/Liberal dichotomies.

I've been working on a lot of stuff lately; bought a USB scanner and am starting to scan in all documents that might be valuable before I move to New Mexico. For example, see my awards page.

Also, I'm downloading MIDI sequences and buying the tracks on Wal-Mart's site, so I can practice singing. I hope to be able to make a little cash singing for tourists. Also practicing my trumpet. Have you seen my MIDI software lately? In the lilypond.



To catch up: turned out she had caught an earlier flight. So she was arriving at Terminal 1 while I was at Terminal 3 reading my email. I finally got her email telling me that when I got to the Offerdahl's the afternoon of the 2nd. So when I finally saw her a couple of hours later, she was busy with other stuff and she didn't seem particularly happy to see me. I was kind of depressed; went out to program some more but couldn't really get into it. Then went to Chauncy's but didn't feel like singing karaoke either. Terry, one of my karaoke compadres, bought me a drink, which I took as a shot of Jack Daniels, and that helped a bit. On arriving home after midnight, she was still very standoffish. Finally after questioning for a while, I find out it's my B.O. After a shower, life is happy again.

Now the night of the 4th, I'm finding out she isn't too happy about the beard either. Not sure what, if anything, I'm going to do about that. [comment]


What a day. Spent last night since about 7PM EST at the Ft. Lauderdale International Airport, drinking coffee, attempting some programming but mostly reading email and Howard Rheingold's Brainstorms forum. The flight came in on schedule just after 7 AM but she apparently wasn't on it. I waited about 10 minutes after the last stragglers cleared the gate, then left the airport. No buses till 9 something, so decided to walk in the general direction of Hollywood Beach.

When I came out to Federal Highway (U.S. 1), I noticed two things: it was getting ready to rain, and there was a nice stand of coconut pines I could set up my Hennessy Hammock in. So I did, and though I was wired up a little too tight to go to sleep, I lay there and listened to the drizzle against the tarp. Not too long later, though, along came two BSO deputies who, after filling out a sheet with all my particulars, told me I had to move along. They were friendly enough about it, even a little apologetic. They explained that someone had complained, and there was nothing else they could do. If I had been out of sight, I would have been OK.

So, eventually I got the bus to the beach, where I spent the rest of the day until now, and where I will probably spend the night as I have since, I guess, Friday or Saturday. My current strategy has been to stay up all night when I can, and sleep during the day; cops so far haven't bothered me when sleeping on the beach during the day, either in the hammock or just lying on the tarp. However, when in the hammock I do try to keep it invisible from the broadwalk... no sense in pushing my luck.

Woke up for the second time an hour or so ago, after downing a couple pints of Bass at BU's and crashing in the twilight behind the hummock facing the huge pink monstrosity of a hotel/condo complex at the end of Hollywood Boulevard. Walking here to the Haagen-Dazs where I am now enjoying a coffee after a single scoop of Belgian Chocolate Chocolate, a few guys passed me on bicycles, and some malcontent who insisted on walking in the bicycle lane started giving them a hard time about riding bicycles after 7PM. He even went so far as to chase after them, screaming that they had to get off and walk. I kept walking, while they argued. I hope they beat the living shit out of him. It's clowns like him who called the cops on me earlier today. Why can't people keep their goddamn noses out of other people's business when it isn't hurting them? Or is it perhaps that their pain threshold is set so low that anything they don't like, such as people sleeping in the trees along the road, causes them physical suffering?


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-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 2003-12

Valid HTML 4.01 Transitional

Valid CSS!