FRESNO, Calif. - A jury awarded $500,000 Friday to a woman who was spanked in front of her colleagues in what her employer called a camaraderie-building exercise.
The jury of six men and six women found that Janet Orlando was subjected to sexual harassment and sexual battery when she was paddled two years ago at Alarm One Inc., a home security company in Fresno.
The jury, however, said that Orlando did not suffer from sexual assault as she had alleged.
Orlando, 53, had asked for at least $1.2 million in lost wages, medical costs and damages.
Orlando quit in 2004, less than a year after she was hired, saying she was humiliated during the company's camaraderie-building exercises.
Sales teams were encouraged to compete, and the losers were made fun of, forced to eat baby food, required to wear diapers and spanked with a rival alarm company's yard signs, according to court documents.
Lawyers for the company said Orlando and others took part in the exercises willingly. The company has since abandoned the practice.
---
C'mon - this isn't about sexual harrassment. This is only about public humiliation. You lost. Neener, neener... And after this jury award, she can look right back at 'em - "No, you lost."
"Neener, neener..."
So would anybody be interested in obtaining a mySQL import file containing the complete contents of fortune-mod? If you have need of such a thing, you'll know what to do with it. I whipped this up after finding that the latest fortune-mod package now takes about 7 seconds on a fast machine to produce a cookie. This is totally unacceptable. The reason for this is that some recently added command line switches let you specify the probability that any particular category will be chosen. In order to calculate this number, the program by default loads in all the fortunes from all the category files so it can count them all.
This collection belongs in a database. Randomly selecting one element from within a collection of elements and then from within a collection of flat files (after counting each entry and then assigning probability weighting to each file) is ludicrous.
So I looked all over the web for a mySQL table containing the fortune database but couldn't find a single one. Weird. In my travels I found a tool to add fortunes to mySQL but it was pretty badly written. So I started over and did all the dirty work for you. Use these tables as you wish.
First file is fortune-mod.1.99 in a table named 'fortune' with two elements, 'id' and 'fortune'. 'id' auto-increments.
Second file is the 'offensive' tree in a table named 'fortune2' which is otherwise identical to the first. You can keep them separate, merge them, whatever.
You can pull out a fortune cookie with the following SQL - just point $table at either fortune or fortune2.
SELECT `fortune` FROM `$table`ORDER BY RAND() LIMIT 1
To display on the web, you'll need to escape the HTML entities and translate linefeeds (or it will look like mush). I use something like this... where $cookie is the raw fortune from the SQL query:
str_replace(array("&","<",">",'"',"\n"),
array("&","<",">",""","<br />"),
$cookie);The third file (fortune-mod.sql.gz) is the complete fortune-mod.1.99 in a single table. This table contains a couple of extra fields. The 'category' field contains the original fortune-mod category name, such as 'quotations' or 'zippy'. There is also an 'offensive' field which is an integer 0 for normal fortunes, 1 for offensive fortunes. Making use of these extra fields is left as an exercise for the reader. One more thing... the third file also has been stripped of all the fortunes containing backspace characters. These might be OK for a text terminal, but they look pretty ugly on the web.
Enjoy.
Bush was at Stanford yesterday. Or perhaps I should be more accurate. He was supposed to drop by the Hoover Institute, except there were just too darn many bloody protesters. So at the last minute they changed plans and went over to George Shultz's house instead. George lives up in the hills behind Stanford.
He (Bush) promised der GropenFuhrer some federal aid to rebuild the delta levees - but with a "don't hold your breath" clause attached. Unlike New Orleans, our delta levees protect Republican voters. So you would think we'd have priority with a somewhat Republican governator and a Republican administration. The only problem is there are only 12 voters at risk if Frank's Tract springs another leak, even though 10 of them are Republicans. And it will cost a few billion to patch it up. 10 voters. A few billion. You do the math.
The newspaper photos were all less than flattering. (This is actually one of the better ones.) That's a very important indicator of somebody's overall popularity. When the press likes somebody they always show a very flattering photo. When they don't, they go out of their way to find a bad hair day to plaster across the front page.
Tickets for the upcoming Madonna tour are running about $250. That's before parking, refreshments, t-shirts, etc. A discussion on slashdot blames the high ticket prices on file-sharing networks. With less income from music sales, artists are forced to raise concert prices to maintain their decadent lifestyles.
But what are you buying for $250? A chance to see a middle-aged rockstar pretend she's young and sexy again. An hour or maybe two at best of choreographed dance music dripping with sexual references. Why would anybody spend this amount for such a cheap marketing gimmick?
In most cities you can actually get laid for $250.
Les Paul indeed...
By the way, that gal holding the white SG Custom isn't really Mary Ford either. Her name is Iris Colleen Summers, aka Iris Hatfield (or Colleen Summers). They divorced in the early 60's. No doubt she got tired of living a lie. Les Paul and Mary Ford never really existed. It was all a fantasy life created by Lester Polsfuss and Iris Summers.
Currently reading "Guitar - An American Life" by Tim Brookes. Believe I mentioned this book several months or a year ago. It was on my must read list, so when I spotted it at Borders it was an easy sale - despite the torn cover.
I was expecting a historical treatise of the guitar and its construction. I'm pretty big on technical books. What year was the X-brace invented? Instead what I found was a historical treatise of music in America. What happened in American music in the last four centuries which led to the guitar becoming the most widely played musical instrument ever? It was an odd mish-mash of the importation of Hawaiian culture combined with the rise of radio combined with recordings of local blues music providing unexpected income during the great depression. Who invented 'country music' and why? And how did fretted instruments completely change the composition of American music? The answers are quite interesting.
Very highly recommended.
I've spent a good deal of time studying online social networking. Most every social website has a thing called 'groups' to organize folks into rooms based on a common interest. The vast majority of them are based on lists of members and they are mostly all seriously flawed. Don't get me wrong. The logic works. It is the social aspect that is flawed. The groups tend to decay over time.
The reason has to do with the dynamics of group membership. It takes a bit of effort to belong to a group. Once you're in it, there is no certainty that you will continue having common interests with the group members. Successful groups with lots of members are doomed to failure as the noise level increases. In other words the more people in a common group - the less likelihood of interacting with folks you share commonality with. This is a known paradox of group theory. For example - where are you more likely to find a sexual partner? A dinner party or a rock concert? You'll encounter more people at the rock concert. But the noise level is (literally) too high to discuss commonality with potential sex partners. The dinner party in fact offers you more opportunities, despite the smaller number of members.
Likewise, the smaller or more limited a group, the higher the probability that it will stagnate, or fail to generate new social opportunities. Private groups usually stagnate for precisely the reason that they are private. There are significant barriers to creating new social opportunities. It involves a political process to invite new members so as not to jeapordize the privacy of the existing members.
As I've pondered these failures I think I've come up with an alternative architecture with a bit more promise (perhaps...). Let's say you join a website like this one. On the personal profile page you list some interests. In my case I'd start with guitar, music, software. Now here's the magic part... These interests automatically become groups with a unique forum page. If there are other folks on the site with the same interests, they all show the same forum pages. I'm automatically linked up with them.
So once I join the site, I'm shown the guitar, music, and software forums. These were created automatically. It takes no effort to join except to list my interests somewhere. It takes no effort to belong, as I can engage or ignore the group as desired. It's just another forum. If it turns out there are too many people talking about guitar and it's too noisy, I can always fine tune my interests. 'electric-guitar', 'shred-guitar'. Given enough users, they will tend to gravitate toward forums containing just the right number of folks with whom they share interests. That's what social networking is all about. Instead of trying to prevent a group from decaying, we embrace it. Communities/friendships will decay. New ones will form. It is the cycle of life. The goal is to automate the process to whatever extent possible.
Maintaining lists of members is the wrong way to go about this. Instead let's look at what makes membership desirable in the first place. It is to enable relationships of people and information based on personal interests. So that's where the focus should be. Everything revolves around personal interests. Forget about lists of people. They are irrelevant.
The hard part is never the concept - it's making it all work. Now to see if I can make it work.
Received a lovely (homemade) card from my daughter this morning...
"Easter is finally hear!
I can't beleive it's finally hear
The birds are cherping
The bunnys are hoping
The flowers or blooming
Easter is finally hear!"
Looks like we need a bit more work on her speling...
25 years ago (1981). Maiden voyage of the space shuttle Columbia.
(Columbia disintegrated on February 1, 2003).
Every few months I have a look at my site with Internet Explorer. I don't care if it doesn't work great, but occasionally I find that it works absolutely awful. I'm always amazed at how badly it can screw up the simplest things. Syntax Error in line 2. Great. Except this is in the Javascript editor. Line 2 of what file? There are a few hundred... And what kind of syntax error? What syntax threw the error? It would be nice to be able to grep for something so I could fix it.
Reminds me of AIX. Error 46392. You have to call your IBM sales rep because mortals weren't allowed to know what error number 46392 means. The sales droid makes the problem clear as mud. "It's a DXJ fault in the I/O:grip:204 system. You'll need to fix your code". Right. After a few weeks and a few hundred phone calls an IBM internal engineer finally sheepishly admits - "It's a known bug. We're working on it. You can apply patch #24573294.3 but that breaks the event scheduler. You're better off waiting for the next release.".
Anyway, back to MSIE. I then try to view an RSS feed as text/plain. Hmmm. IE doesn't like text files. OK, view it as application/rss+xml. Now it gives me 'unknown type'. OK, now I see. Even though I specify what type of file it is in the HTTP header, it can't handle it, because the file has no extension. It's just a data stream. Why does it have to be a file with an extension? I thought file extensions were dead.
Not at Microsoft...
I previously turned off drop shadows for IE because it doesn't support transparent PNG files and GIFs are just too ugly. Turns out it does support transparent PNG - by applying an HTML input filter as a CSS style declaration. Huh? Here's how...
<div id="something" style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path/to/file.png', sizingMethod='scale');"></div>
Didja' get that? You don't use an img tag at all to put an image into a web page. And you have to know in advance what kind of image it is. Parse the file to determine if it has transparency enabled. Last time I saw syntax that was this ugly was when I tried to make AIX (which incidentally is IBM's old Unix-like OS) dynamically load a shared library.
If it's any consolation, IBM isn't trying to push AIX anymore. Nobody wanted it because it was too difficult to work with.
IBM is a Linux shop now.
![[*TOP MEMBER*] Chris Young [*TOP MEMBER*] Chris Young](images/unknown-2.jpg)
This website is now coming to you from somewhere near Los Angeles. Nah, I'm still in Sunnyvale. Only the website has moved. It seems to be a miniscule bit slower to me, but that's one of the drawbacks of being on a shared system versus running your own. It's still zippy enough that I'm not concerned. It should work even faster for you. When it was in my garage, it was limited to about 200kbits/second upload speed (thanks to the phone company), though I could see it on a fat pipe.
Everybody is on the fat pipe now.
Not too many glitches in the transfer. I had to tweak two code lines to work in the new environment. Could've been much harder.
Update:
Right. Could've been much harder. In fact it was. Reading the weblogs worked just fine. I was using a function to escape data for MySQL in an undocumented way and it didn't work. That was to be expected and easy to fix.
Posting to the weblogs is a different matter. Here's the nit...
Dreamhost uses php5 in CGI mode. It isn't built-in as an apache module. They run php4 as an Apache module. I can't use php4, because I depend on a lot of php5 functionality that just didn't exist in version 4. That's OK, I can use it in cgi mode just fine.
Well almost. I use some obscure syntax in .htaccess to force files without an extension to be executed as php code. That allows me to have clean URL's without .php showing up everywhere. Now the issue is that these files were then being executed by the php4 interpreter and not the default php5 interpreter that I set up for my site environment.
OK, so how do I force these to be php5 files? Turns out I have to grab a copy of php5, and specify that these files are to be interpreted by this particular copy of php5. OK, did that. But to save building the entire php universe on somebody else's machine, I just grabbed a copy from their /usr/local directory. Hey it was already there.
Yay. The pages all come up. Now I go to post this entry, and it fails miserably. The copy of php5 that they had in the shared directory doesn't have magic_quotes turned on. The copy they use in CGI mode does, but it lives on a different machine somewhere and I can't find it. It took a half hour to figure that out. Now this is getting to be a mess. Anyway I fix my code so it will work without magic quotes, which I wouldn't have to do if I wasn't running a hacked php5 copy - which I wouldn't have to do if php5 was built-in. So it's a hack on top of a hack on top of ...
It doesn't matter today. I'll fix it the right way at some future time. For the moment, it all works. That's the only important thing.
Now that this software has started to stabilize, I've been shopping around for a good web hosting providor to run it on. After a lot of comparison shopping it looks like dreamhost.com is the place. ssh, imap, php5, phpmyadmin, unlimited domains. It's got everything I need. Nobody else did - all of them falling short in one aspect or another. If you find something not working over the next few weeks, it might be because the bits are all being packed in boxes and shipped elsewhere.
Of couse it might also be that it's just plain broken.
Wonder who has the hot pager tonight. I'm sure glad it isn't me. Not certain if it's an internet-wide attack, or just on my DNS service providor, but most of my internet domain names have been hijacked and redirected to an advertising link farm. My mail is being sent somewhere else also. I sure hope it's an isolated attack or better yet an isolated bug, because if somebody can intentionally mess up DNS this badly we're in big , big trouble.
Hmmm. Can it be done? In fact I suppose it can be. It's a distributed system with no central authority. Anybody can claim to have the definitive web address for 'macgirvin.com'. And some percentage of those asking for it are going to accept this new source as genuine. Replace 'macgirvin.com' with 'google.com' and you'll see why I'm concerned. A lot of effort has gone into protecting domain names from getting stolen, but I'll have to review my DNS fundamentals because I don't think there is anything preventing them from being redirected.
The title of this article was once the title of my weekly status reports at Stanford. At Netscape/iPlanet/AOL/Time-Warner/Whatever, it became 'What We've Done, Cont.', since I was also pushing status reports for all my direct reports up the food chain.
So here's what's new in the weblog recently (about the last three days). Forums landed a few days ago. It took a bit of tweaking to make them happily co-exist with everything else. Then I added the ability to send a private untraceable email to another member. Then I added forum categories. Then I implemented RSS feeds for forums. Then an indicator to flag forums that have been updated since your last visit. What else.... Oh yeah.... Then I ripped out the htdig search engine which can't really handle multiple domains with lots and lots of redundant links and wrote a native search instead (which can). Then I added some more voluntary member profile information. Moved the 'wizard' link off the front page to a place where it will only be seen by wizards. Generated a few more large avatars. Created a paginator (prev-page 1 2 3 4 5 ... next-page) for huge result sets.
Fixed the javascript image list which appears to have broken when I installed the session driver a few weeks ago. It also seems that the post 'ping' script was trouncing the article title if you performed a specific series of steps.
Added several new domain names to the community and configured settings and initial skins for several of them.
I think that's all the big stuff. Some code cleanup and optimization along the way.
I'm tired. Good night for now..
April 5th, 2006. The time is 1:02 and 3 seconds.
1:2:3 4/5/6
April 3, 1882. Jesse Woodson James, professional bank robber - dies at age 34 from a lethal injection of lead (he was shot in the head).
I brought back the Sonica website. Sonica Music Company doesn't exist as a retail store anymore, but there's no reason why it can't still exist as a website. It now points to this site - just like several other domain names I've collected over the last few years and couldn't see myself parting with. This is pretty cool. Every URL can have its own look, its own design - but use the same community.
Decided rather than let fornikator.com continue to rot as a single page about home-brewing which gets two visitors a month, I'll turn it into an adult dating site. I'll keep this entirely separate from the nerdcom community. Of course it isn't likely to get much repeat traffic since the logo isn't something you want showing up on your desktop at work.
But the server is completely multi-dimensional now. There's no reason why you couldn't join the fornikator community - yet access it from a sanitized web address. So do I have any sanitized web addresses to spare? As a matter of fact, I do. Think I'll provide macsmusic.com as an alternate doorway to the adult site.
So next time you notice one of your co-workers spending a lot of time on a used car website, you might want to look closer at the text. The site might not have anything at all to do with used cars.
I tried to save myself the normal hassle of creating a regular expression to convert any relative URL's that appear in my RSS feeds to absolute form. Writing regex's is often a painful and time-consuming process. Besides, this is a problem that must've been solved before. Right?
Turns out that it has, but not as often as I would have thought. Buried on page 29 of the search results I finally found a cute little regex that did what I wanted.
Well, not quite. A beautiful function, but hopelessly broken. You see the author (I won't embarrass him by naming him in public) wrote something like '[^http|ftp|https]' to dig out an existing protocol string. Brackets in perl regex's (just like eregs) denote a character range. So this function didn't work if the relative URL began with any of the characters 'h,t,p,f,s, or |'.
So much for trying to save effort. Whenever I do this I end up with a function that is just plain broken. Sigh... You get what you pay for. Anyway, I fixed the function. If this applies to what you're doing, at least it works better than the one I originally found.
<?php
function reltoabs($text, $base)
{
if (empty($base))
return $text;
// base url needs trailing /
if (substr($base, -1, 1) != "/")
$base .= "/";
// Replace links
$pattern = "/<a([^>]*) href=\"(?!http|ftp|https)([^\"]*)\"/";
$replace = "<a\${1} href=\"" . $base . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
// Replace images
$pattern = "/<img([^>]*) src=\"(?!http|ftp|https)([^\"]*)\"/";
$replace = "<img\${1} src=\"" . $base . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
// Done
return $text;
}
?>
![[*TOP MEMBER*] vision [*TOP MEMBER*] vision](images/unknown-1.jpg)
Hi here is the modified one to access <link attribute:
function reltoabs($text, $base) { if (empty($base)) return $text; //base url needs trailing / if (substr($base, -1, 1) != "/") $base = $base."/"; //echo $base; // Replace links $pattern = "/<a([^>]*) href=\"(?!http|ftp|https)([^\"]*)\"/"; $replace = "<a\${1} href=\"" . $base . "\${2}\""; $text = preg_replace($pattern, $replace, $text); // Replace images $pattern = "/<img([^>]*) src=\"(?!http|ftp|https)([^\"]*)\"/"; $replace = "<img\${1} src=\"" . $base . "\${2}\""; $text = preg_replace($pattern, $replace, $text);
// Replace link tags $pattern = "/<link([^>]*) href=\"(?!http|ftp|https)([^\"]*)\"/"; $replace = "<link\${1} href=\"" . $base . "\${2}\""; $text = preg_replace($pattern, $replace, $text); $text = str_replace("../", "", $text);
// Done return $text; } it can be xpanded to accept even JS ... :-)
![[*TOP MEMBER*] sup [*TOP MEMBER*] sup](images/unknown-1.jpg)
preg_replace("/(href|src)=\"(?!http|ftp|https)([^\"]*)\"/", "$1=\"$base\$2\"", $text);
Sup -
I thought about doing that but only wanted to apply the absolute reference to named anchors and images. The attributes 'href' and 'src' are used in other tags (href is used in link tags and src in script tags for example). But now that you've brought it up, a relative URL is a relative URL. It's probably a good thing to convert all of them, no matter what kind of element they might be attached to.

Digg
Delicious
Netscape
Technorati
fortune.sql.gz
reltoabs.php.txt