Monday, November 10, 2008

A new level of spam insanity....

I had 29,159 messages in a mailbox today. That's e-mail that all got received within a single 24-hour period. Wait, no. Strike that. It was an 8 1/2 hour period. That's 214 megabytes of spam. Almost a quarter gig. That's insanity.

Of these twenty nine thousand messages, fully 28,401 of them were filtered away by my spam filters as "this is definitely spam". Plus 4 more that it marked that way, but with a glitch that caused them not to actually get auto-deleted. Another 528 had a 0.999 or higher rating on the 0-is-non-spam, 1-is-spam scale, which isn't actually "auto-deleted", because I feed those back to my spam filter so they'll be more likely to get a full-on 1 the next time. Thus, I have 226 messages left that I might want to actually at least glance at. That's too much spam to look at, though, so I send straight to the filters another 84 messages that are scored at 0.99-and-up.

Another 94 are marked as "Spam", but with a lower score than that. Taking a quick glance at these (mostly looking at the recipient address, as that's often a good indicator for me, since I have a wildcard recipient setup), I confirm they're all spam and feed them to my filters.

That leaves 48 left marked as "Unsure" (specific scores of these messages ranged from 0.415 (two of these) to 0.849234 -- it's rare that any of my not-actually-spam messages get scored above about 0.53 (and only 9 of the spam messages were below that range), and the highest I've ever gotten was 0.829141).

Frankly, I was able to dispense of the 48 "Unsure" messages with about the same amount of care as the "Spam but below 0.99" ones... not much. Still, it takes me a minute or two to go through that, and that's not even counting the several (15?) minutes it took for my filtering software to score those 29K messages, and my auto-deleter to auto-delete most of them.

Spam needs to stop. I suspect the only way to stop it is with international laws against it. Who do I write to? My congressional representatives? This is insane.

Monday, July 21, 2008

My photos at One Sky this weekend

I'll be having a show of my photographs at an event called "One Sky" this weekend, out on the Pacific coast of Washington.

Details are on the website, and tickets are available through brownpapertickets.

Basically, though, my impression is that it will be vaguely burning-man-ish, only smaller, and probably more eco-oriented. (It specifically talks about trying to increase social consciousness of being environmentally friendly.)

It's a camping event, on private property near the beach (or several beaches)... Should be fun. I expect to head up on Friday, and return on Sunday. It'd be great to see some friends there. :-)

And hopefully I'll make some sales. ;-)

Thursday, March 13, 2008

[unix-geeky] : My UNIX shell prompt $;

It occurs to me that this blog could be, among other things, a place to share random unix tips and tricks that I've picked up over the years. Non-geek types are encouraged to go find a photography-related post or something. ;-) For the geek types still reading, here's a little something:

When choosing your prompt for any Bourne Shell derivative (sh, ksh, bash, zsh, and probably others I don't know about -- zsh is my current shell of choice, by the way), I find it handy to have my prompt follow this simple set of rules:
  1. the first character is a colon
  2. the second character is a space
  3. The last non-space character is a semicolon
  4. No other semicolons in the line (unless they're immediately followed by another colon and space)

Using the traditional "$" as a starting point, I might then put something like the following in my .profile (or .bash_profile or .zshrc or what have you -- .profile is the traditional Bourne shell location, so that's what I list):

PS1=": $; "

And thus a bit of my shell session might look like:

: $; 
: $;
: $; date
Thu Mar 13 19:01:28 PDT 2008
: $; pwd
: $; ls -CAF
: $; cat .profile
# this is a fake .profile file
# it would normally have a lot of content. For now, just this:
PS1=": $; "
export PS1 # possibly redundant
: $;
: $;
: $; : $; date
Thu Mar 13 19:04:13 PDT 2008
: $;

Now, why is this useful? And why does my prompt show up twice before that second call to the date command?

Well, as seasoned readers may already have guessed, there's some magic in this prompt. In Bourne-derived shells (as listed above), ':' is a shell-builtin command which does nothing more than have zero* as its exit status. Same deal as /bin/true, but in a single character command. And guess what? It takes arguments, and happily ignores them all. And as hopefully most of you (if you've bothered to read this far) already know, a semicolon separates commands. So that second time I ran date above, I did not get a double prompt from my shell, and I did not type my prompt in. No, instead what I did was a copy and pasted that command-line from earlier, by copying the whole line -- including the prompt. And it still worked, and didn't give me anything extraneous.

How cool is that?

Normally, I couldn't copy the whole line and still get desired behavior:
: $; PS1='$ '
$ date
Thu Mar 13 19:16:17 PDT 2008
$ $ date
zsh: command not found: $

(And it could be much worse than that, depending on what else is in your prompt.)

Starting with a colon and a space, and ending with a semicolon (and, for clarity only, another space), I can copy and paste the whole line.

My normal prompt is a lot longer than just : $; , and includes a bunch of different information that I find useful. Perhaps someday I'll write a blog entry about that. For now, just know that it always starts with a colon and a space, and ends with a semicolon (and a space). And whenever I write documentation which needs to include a shell prompt, the prompt shown will probably always be : $; (or maybe : #; , though that actually has problems of its own. Extra special feel-good (that's all you get) bonus points for those who can say why.)

Happy geeking!


*: Check it out:
: $; grep '\<0\>' /usr/include/sysexits.h
#define EX_OK 0 /* successful termination */

Thus, zero means successful exit.

Sunday, February 17, 2008

No more Flexcars, and no Zipcars either

Wow. Uhh. It seems I'm out of luck for the plan I'd had to reserve a Flexcar for today. Well, yeah, sure, they're converting to Zipcar cars. OK, that's fine, I'll reserve it as a Zipcar. And if the car nearest me is unavailable, that's fine, I'll just reserve a different one. But no. No zipcars available either. I called customer support, figuring there was some sort of error, only to be told that no, no Zipcars would be available until the 21st.

What? No cars available until the 21st?

I'd distinctly had the impression that the impact of this transition was supposed to be minimal. I had speculated (OK, I know, it's then "my" error) that they'd do a rolling transition. But I hadn't really cared how they did it, exactly, so long as I'd be able to at least get some sort of car at some point.

I should have known better, when I noticed on the reservation site two days ago that all cars were becoming unavailable at 7pm yesterday.

It seems I'm not alone. Others are out there with the same problem.

No manager was available when I talked with Zipcar's customer service, so I left my name and number and was told one would call me back. Formally, I'll give them the benefit of the doubt that they may in fact make good on this SNAFU. I hope they do. Reading between the lines, you can probably guess how high my expectations are set at the moment.

More to come, one way or the other.


If you have had a similar experience, please post a comment on this blog post with any other information you have (even if it's just a link to another blog post about this). I want to get a sense of how wide of a problem this is, and group together with others who are experiencing it. Thanks!

Saturday, February 9, 2008

Caucus, Obama, etc.

Wow. I highly recommend y'all go watch this video about Obama versus Clinton. I was a bit unsure who I wanted on the Dem's side before that video, and I'm much less unsure (more sure I want Obama) afterwards.

Seriously, go watch it. 20 minutes well spent. (Even if the style is a little... different; that's ok, though... change is something we want, right?)

Meanwhile, I went to the Washington state Democratic Party's Caucus today for my voting precinct, and boy am I glad I did. A room full of people (all neighbors, no less -- though I only saw one person who I particularly knew in my precinct, though one of the workers was a familiar face from somewhere or other) actually talking about things with each other. Neighbors. Talking. We need more of that, in all sorts of ways, and for all sorts of reasons. Very cool. I'll definitely be going back again.

And alas that I was not elected as a delegate. My uncertainty at the time on how I would vote surely cost me the ability to get that roll (or at least an alternate position). Fortunately, Laura will be going, and my across-the-hall neighbor (the one person I actually knew there) is an alternate. So, my hope is that I can tag along with Laura when she goes.

And if any of you are in states where there's still an option to go to a Caucus, or just wanting to know if you should go next year: I highly encourage you to attend. No matter who you're supporting.

Don't forget: watch the video.

Thursday, February 7, 2008

More Spam than Ever

on the 5th of February, I got over 10,000 messages which my spam filtering classified as spam. The good news is that they were classified as such. The bad news is that resources had to be spent on doing that classification, including (alas) a not-entirely-insignificant amount of my time.

I'm currently evaluating a possible alternative mail solution. We'll see if it works. I may have to seriously re-work the way I do e-mail, which would be a downer, because there's a lot of existing stuff out there that I'd have to change or get changed. Or try to -- not all of it is even changeable, really.

This sucks.

OK, venting over... back to my evaluation.

Thursday, January 10, 2008

geek entry: One reason ZSH can have problems.

[Warning: non-geeks or geeks in areas other than unix can stop reading now. This isn't going to be relevant to you.]

OK, so, after doing a google search, I failed to find help for the following error message from zsh:

_main_complete: function definition file not found

(it's actually something like "_main_complete:12: _main_complete: function definition file not found", but the 12 can vary, so the main thing is the rest of the error message.)

Anyway, it seems to me that the problem, in at least my case, is this:

As a former ksh user, I have dot-files that set FPATH, and that seems to break this. Or at least it does with my current value.

Commenting out the line from .profile or wherever you have that sets FPATH seems to fix the problem (though you also loose that functionality). Alternately, just making sure the previous value of $FPATH (i.e. the one the shell had before getting to your dot-files) is in your new value also seems to work.

edit: so, instead of FPATH=/what/ever, try FPATH=$FPATH:/what/ever

Hopefully this'll help someone... the only hits I found weren't helpful in my case.

Wednesday, January 2, 2008

Happy New Year!

I think I forgot to mention on here:

Happy New Year!


Cheers, all!