The Boston Diaries

The ongoing saga of a programmer who doesn't live in Boston, nor does he even like Boston, but yet named his weblog/journal “The Boston Diaries.”

Go figure.

Wednesday, March 01, 2006

More tunneling issues

At the end of January, I called out to the Lazy Web for advice on how to get a Cisco 2611 to authenticate a PPPoE connection and well, it's finally working (with no input from said Lazy Web):

interface ATM0/0
 description XXXXXXXXXX Secondary Internet Connection
 no ip address
 no atm ilmi-keepalive
 pvc 6/42
  encapsulation aal5snap
  protocol ppp dialer
  dialer pool-member 1
 !
 dsl operating-mode auto
!
interface Dialer0
 description Authentication Happens Here
 ip address XXX.XXX.XXX.XXX 255.255.255.0
 encapsulation ppp
 dialer pool 1
 dialer-group 1
 ppp chap hostname XXXXXXXXXXXXXXXXX
 ppp chap password 7 XXXXXXXXXXXXXXXXXX
!
dialer-list 1 protocol ip permit

But I do have to admit some confusion over why it suddenly started working. I had this configuration pretty much in place by the end of January but I just couldn't even see the customer's router by DSL (which, as you can see there, is a backup connection in case their router's primary connection goes down). It's hard to debug this since you don't even see the traffic unless you pass an authencation request through the physical lines owned by The Monopolistic Phone Company, and because the radius authentication server wasn't getting any requests, that meant that our Cisco router wasn't seeing any DSL traffic from the customer.

Very annoying.

Then earlier this week BAM traffic suddenly was getting through. It's almost as if The Monopolistic Phone Company took their own sweet time in actually enabling the DSL circuit on our customer's phone line.

Good thing too, since their current provider is having issues with connectivity (and twice this week I've had to reprogram their router's primary IP address). Now the issue is why the router is prefering the DSL connection over their primary connection (which is the exact opposite of what is supposed to happen).

Update on March 2nd, 2006

I found out why why the DSL was being prefered over the Ethernet connection.


Stupid student tricks, now that the statutes of limitations has expired

When I saw the video of Atlanta students driving the speed limit (link via Instapundit) I was reminded of the time I participated in such a stunt about a decade ago.

It wasn't consciencely planned; it just more or less happened, and it wasn't on an interstate highway (or any type of highway) but on a road (major road, but road nonetheless). There were three of us, each in our cars, spanning the road all driving the speed limit and watching (much like in the video) the traffic piling up behind us. Periodically, one of us would slowly creep ahead (which is something the students above didn't do), but not so much as to let anyone pass us, and watch as all the cars behind us would start shuffling, attempting to get behind the slightly faster car. The one driving just slightly faster would then slow down to match speed again, and someone else would start to pull ahead, and the car shuffle would start yet again.

We found it very amusing, and I'm surprised, it being Lower Sheol and all, that we weren't forcibly shoved off the road and shot.

Thursday, March 02, 2006

Watching the searches go by

A lot of visitors walk into the Googleplex lobby and stand mesmerized by the scrolling display of search queries crawling across the large monitor suspended over the receptionist's desk. It inspires journalists to wax poetic and dig deep for metaphors about the international impact of Google and the deepening role search plays in all our lives. They're so in awe of this peek into the global gestalt that they don't even read the NDA they automatically agree to by signing in for a visitor's badge.

The query scroll is fascinating, though it's carefully screened for offensive terms that might clash with the wholesome decor. Screened for offensive terms written in English, anyway. I seem to recall a group of Japanese visitors pointing and smirking at some of the katakana queries floating across the page.

Hey! I just saw my search go by!

Back when I wrote GeoFind (originally “Brainstorm” although I think the term “Brainstem” may have been bandied about) one of the features I added was a live feed of all the search terms being submitted (as a network service, no less)—I think at the time there were a few search engines that allowed one to check the queries being submitted (although I suspect all of this was before Google's time). It wasn't difficult to add the functionality, and it was fun interesting to watch the queries being made (except for the disturbing ones).

But one time I'm sitting in my office, watching the live search requests when I see “Hi Sean” flow past. It was one of my fellow cow-orkers having a bit of fun.


“Why yes, I'd prefer my packets to take the slow connection”

Yesterday, the Cisco router preferred the secondary circuit (a DSL line) over the primary circuit (an Ethernet port) and I couldn't figure why. I had programmed in weighted routes but the Cisco seemed to read “take the Ethernet port over the DSL port” as “take not the Ethernet port over the DSL port.”

First attempt at a fix: weight the routes heavily (as in fifteen times) in favor of the Ethernet port. Still the Cisco took it as “take not at all the Ethernet port over the DSL port.”

Second attempt at a fix: who knows? Maybe I have the weights backwards? So, reverse the weight values. It was then I realized that the Cisco was in fact hearing “do not even think of the Ethernet port unless the DSL port is down.” Didn't matter how I weighed the routes, the Cisco would refuse to route over the Ethernet unless the DSL was down.

Which is the exact opposite of what we want.

So G, our Cisco consultant took a look into the problem and came up with the answer—that's the way Cisco's work.

Basically, the Cisco router will select a route according to the following:

  1. All connected interfaces go first.
  2. Route to the most specific subnet second.
  3. Only now are weighted routes considered.

The DSL connection was being routed on a connected interface, so we could have weighted the DSL connection with 17 tons and made the Ethernet interface weightless, but because the DSL route is directly connected, it would be preferred.

The problem was fixed by changing the DSL routing destination, so it was neither directly connected, nor a specific subnet.

Sigh.

Friday, March 03, 2006

Like quicksand through the hourglass, these are the time wasters of our lives

Yet another timesink (this time, thanks to flutterby).

Saturday, March 04, 2006

Spore

There's this facinating video (about an hour long—there's also a 30 minute highlight) about Will Wright's new simulation/game called “Spore.”

What is “Spore?” Well, watch the video(s), but short of that, imagine a simulation where you start out as a single cell organism, evolve into multicellular life, then intelligent life, go tribal, then get civilization, go exploring locally, then globally, then into space and eventually go on to create life on other planets, only there are other people doing the same thing as you are, either on the same planet as your, or in a different star system or even galaxy.

That's “Spore.”

It's a meta-simulation, if you will.

But I'm not doing it justice—watch the video(s)!

Sunday, March 05, 2006

“… and some call me … Bubba!”

Running a weekly D&D game isn't all that easy, and for the past two Sundays, I've cancelled the session namely because I was burned out (that, and the last game we did play three weeks ago blew up).

I'm having to balance the game for both The Kids and the adults that are playing, while making sure I have fun doing it all, and I ran out of ideas.

Sure, I can use pre-written scenarios, but the few times I've done that, it felt a bit forced (and I'm saying this as the DM!) and constrained (“um … ” reading the module, then in a monotone voice, “you feel the heavy dampness of the dungeons close in on you as you descend into the inky blackness of Mygwrn Castle”) and as it is, I'm constantly flipping through the various rule books—who needs that and constant flipping through a pre-canned module?

I almost called it off this week, but one of the adult players, Rob (not my ex-roomate the Jolly Goth Rob, but a friend of Wlofie's) was so looking forward to the game (this is his first time playing D&D and he absolutely loves playing as the Wizard Bubba that I just couldn't not do the game. How could you not play a D&D game with Bubba the Wizard?

Monday, March 06, 2006

I don't know the password to any of my accounts.

Really.

Wlofie and I were at Costco, doing the weekly shopping when Smirk called on my cell phone. There may be an issue with the DSL connection and could I check it out. I told Smirk that I would when I get home and hung up, by which time Wlofie had his cell phone out, flipped open the keyboard.

“We can diagnose it from here,” he said, holding out his cell phone.

“You got traceroute?”

“No, but we can ssh into a system and traceroute from there.”

So we attempted to log into my workstation (the one at The Company) but when it came time to type in my password—I couldn't.

I didn't know it.

I don't know it.

My fingers, however, know the password.

It's a very wierd thing too.

If I think too much about typing in the password I can't do it. If I consciencely try to type my password, I inevitably screw it up. And it didn't help that the layout of Wlofie's cellphone keyboard was non-standard enough to really throw me off.

We were about to give up when I realized where we were—Costco. They sell everthing here, so there must be a “real” keyboard I could type my password on—even if it was Notepad so I could see what the password was. And there were—Costo had a bunch of laptops set up for demonstration purposes.

That's when I realized something else—not only do I not know my password, but unless it's an IBM PS/2 keyboard, my fingers can't type the password. It just doesn't feel right otherwise.

We never were able to check the problem out from Wlofie's cell phone (but it turned out not to be a DSL issue at all, but a problem with a customer's computer).

Tuesday, March 07, 2006

Ever since my little kitty died / I have been locked in the chamber / of sadness and melancholy

I was reading some pages of Engrish (and being highly amused—the title up there comes from a billboard for the Backstree Boys) when I had an odd thought: are there webpages in Taiwan or China or Japan mocking our use of their language? I'm just curious.


Fox goes to South Park

For Mark, who is a big South Park fan—how the Fox Network handles South Park (which, in a way, I find just as amusing as the original episodes).


This never happened.

On an unspecified day last week an employee of a federal agency that cannot be revealed delivered a document that cannot be identified to a company that cannot be named seeking information that cannot be discussed.

The aforementioned federal agent left the unidentified document with an employee of the unnamed company. That employee then called the owner, who must remain anonymous, to inform him that the document that could not be identified sought information that could not be discussed. The owner who must remain anonymous instructed the employee to deliver the unidentified document to a lawyer whose name is protected by attorney-client privilege.

The lawyer whose name is protected by attorney-client privilege examined the unidentified document and then reviewed the information that could not be discussed with the owner who must remain anonymous.

With the approval of the owner who must remain anonymous, the lawyer whose name is protected by attorney-client privilege contacted a U.S. attorney who demanded that his identity be concealed.

The U.S. attorney who demanded that his identity be concealed then claimed the owner who must remain anonymous violated a law that could not be disclosed and faced arrest for charges that could not be specified because he had referred to the document that cannot be identified in an article for a certain, but unnamed, web site.

The lawyer whose name is protected by attorney-client privilege argued that his client could not be charged under the undisclosed law because he had been acting as a journalist at the time of the alleged publication and not as the owner of the company that cannot be named. He had, in fact, learned of the existence of the document that cannot be identified from a third-party, who was not named, and was not aware of its exact contents because he had not seen or read the document and, therefore, was not aware of the exact contents that cannot be discussed.

The U.S. attorney who demanded his identity be concealed consulted with others who names are classified and concluded that the owner who must remain anonymous walked a fine line between legal and illegal and would not face arrest for violating a law that could not be disclosed on charges that could not be specified.

So walking this fine line of justice allowed the owner who must remain anonymous to avoid confinement at an institution at an unknown location for an unspecified length of time.

In exchange for his freedom, the owner who must remain anonymous agreed to write a “clarification” of what happened, following the guidelines for publication laid down by the Bush administration.

Which is what you just read.

Telling the ‘approved” story

Nothing to see here. Move along. Nothing to see.

Now that's a problem. I own the company that hosts Capitol Hill Blue. So, in effect, the feds want me to turn over information on myself and not tell myself that I'm doing it. You'd think they'd know better.

Bush declares war on freedom of the press

Of course, this never happened. But if it did happen, then President Bush is in good company.

Wednesday, March 08, 2006

Basket weaving for the math teachers

Carson said long division “was completely excised from the programs for quite a while until the backlash got so large that they at least had to make nods toward teaching it.

“In 5th grade they're still drawing pictures to solve problems in multiplication and division.”

Her son, who attends the public schools in New York City, was drawing clumps of sticks to solve multiplication problems in the 6th grade, she said.

In the 7th grade, he and his classmates were asked to find the area of a circle. Four weeks were devoted to the task. Traditionally, children were given the formula, but apparently these junior Archimedes were supposed to rediscover the uses of pi.

Via Gene Expression, View: The ideology of math education

This article was linked to by Gene Expression in a long follow-up about anti-racist math (I kid you not), who also posted an entry with the syllabus from a gradulate level multi-cultural math class, involving … well …

The julekurv is a Norwegian Christmas basket. The Norwegians fill these baskets with treats and put the filled baskets on their Christmas trees for family and friends. You may want to make a basket for any holiday, such Valentine's Day, or for no special day at all. In any case, you will beautiful, hand-made object.

Multi-Cultural Math—Teaching the Teachers

Basket weaving.

In a gradulate level course!

As I stated last month, can't we just torch the educational system now?

Please?

Thursday, March 09, 2006

RACTER, generative text and Lisp. Oh my!

It figures.

I make disparaging remarks about Lisp, and it turns out to possibly be the best language to use for a project I'm working on.

Sigh.

The project (or projects—there are a few things I want to work on that can use this) deals with computer generated text (or “generative text” as it's called). Textual mashups if you will, like Crow Haiku Generator or my own Quick and Dirty B-Movie Plot Generator. There are plenty more out there if you look.

A lot of these are nothing more than arrays of strings and a slew of code to sling the pieces together. Something like:

temp = Newsflash[rand(Newsflash.length)] + "\n"
       + Location[rand(Location.length)] + " was attacked at dawn by "
       + Monsters[rand(Monsters.length)] + " "
       + From[rand(From.length)] + " "
       + Lowersheol[rand(Lowersheol.length)] + ".  Our hero "
       + Hero[rand(Hero.length)] + " " 
       + Fought[rand(Fought.length)] + ".";

Which would generate output like:

******* FLASH! FLASH! FLASH! *******

Disneyland was attacked at dawn by giant green worms from the lowest levels of The IRS. Our hero Tim Conway told their mothers they were naughty.

This is probably one reason why so many generative text programs don't generate all that much different text—they're too tedious to program.

I wanted an easier way to create the data and sling the words around—I wanted a “program” I could write that could then be processed, much like INRAC, the compiler used to create RACTER (which supposedly wrote The Policeman's Beard is Half Constructed), but using INRAC, to generate something like this:

Bill Gates bit Winston Churchill, but Winston Churchill just smiled. Bill Gates snarled, “Saint Winston Churchill, I presume”. “That's a Bill Gatesesque remark” replied Winston Churchill.

You write this:

*story code section
a %PEOPLE #
b >HERO*person[&P] >VILLAIN*person[&N] #
c $VILLAIN #RND3 bit robbed hit $HERO , #
d but $HERO just #RND3 smiled laughed shrugged . #
' new:
e $VILLAIN snarled >X=Saint,HERO "> $X , I presume <*. #
f "That's a !Y=VILLAIN;esque remark" replied $HERO .

Um … yeah.

Thanks, but no thanks.

Building upon my own Quick-n-Dirty B-Movie Plot Generator, I wrote two further prototypes, one in Perl and one in C; both can use the same input files (and are not restricted to just generating B-movie plots). Why a version in C? Because the one in Perl consumes an insane amount of memory and takes almost 600 times longer to generate the output (since the C version can process the input files once into an intermediate format that is quicker to use whereas the Perl version has to re-read the input files for each invocation; but even when I include the preprocessing time in the C version it's still four times faster than Perl). The format I came up with is much easier to deal with:

# declare an array of text, which, when
# referenced, will return one of the lines
# at random.  It ends with a semicolon alone
# on a line.

:MayYou
	I pray thou shalt
	I hope you will
	;

:HaveBadThingsHappen
	be plagued with gnats, flies and locusts
        be taunted by the king's concubines
	;

:OhYou
	thou
	O thou
	O ye
	;

:OfLittleFaith
	incompetent tax-collector
	lazy Babylonian
	;

:HearThis
	Listen
	Hear this
	Take heed
	;

# to reference an array, use %a-arrayname% #
# one of the following lines will be used

%a-MayYou% %a-HaveBadThingsHappen%, %a-OhYou% %a-OfLittleFaith%!
%a-HearThis% %a-OhYou% %a-OfLittleFaith%, for you will %a-HaveBadThingsHappen%!

(I pulled these from a webpage that generated Biblical taunts, but I've since lost the link).

So that's the point I am now—I can replicate most of the generative text programs I've seen on webpages pretty quickly (about as quick as I can copy the text out and into this format). Star Trek technobabble, fake Nostradamus quatrains, crow haikus, all easy now.

Except I'm still not at the level of INRAC. I have no way of generating variables and article generation (“a” or “an”) is still a bit problematic. The syntax I'm currently using, while better than anything else I've seen, is still clumsy (it's a holdover from the initial Perl version. So I've been playing around with syntax a bit, making it easier, and adding variables and functions (say, to generate the appropriate article for a word, or a random number). So far, I like what I have for the new syntax:

# assume we're using the Bible Taunts

# declare a variable TheProphet, which
# is a randomly choosen Bible name

{TheProphet=[biblenames]}

[MayYou] [HaveBadThingsHappen] [OhYou] [OfLittleFaith]!
[HearThis] [OhYou] [OfLittleFaith], for you will [HaveBadThingsHappen]!
{TheProphet} had a dream-you will [HaveBadThingsHappen].  So says {TheProphet}.

But things are progressing to where I'm reaching for lex and yacc to handle the parsing and processing of the input files.

I am, in effect, writing a programming language.

Want to know something?

Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp.

Greenspun's Tenth Rule of Programming

For all my misgivings about Lisp, I'm finding myself starting to write an ad-hoc, informally-specified bug-ridden slow implementation of Lisp.

Heh.

Friday, March 10, 2006

“Do not ask for whom the bell tolls—it tolls for thee”

Ring.

I looked at the clock. It said 5:53 pm. I leave the office (on Friday's) at 6:00 pm. I seriously debated whether I should answer the phone or not.

Ring.

I checked caller-id. One of our larger customers—servers, DSL connection, managed routers.

Ring.

Maybe it'll be a quick question, I thought, picking up the phone. “Hello, technical support,” I said.

“Yes, this is C from XXXXXXXX” said the voice at the other end of the phone line. “We need to change our IP address again. Like right now.”

My head hit the desk with an audible thump. I've got plans for tonight. I was planning on going out the door in another seven minutes. “Now?”

“Now. We need to cut over tonight.”

“You know,” I said, “it would be nice if we got a bit more lead time on these type of issues. I've got plans tonight, I was planning on leaving in another … six minutes.”

“I'm sorry, but this shouldn't take long, right?”

“You've got six minutes. Do you have the new IP address, netmask and gateway?”

“Yes,” said C. He gave them to me. Thankfully, the backup DSL connection was working so we wouldn't loose the connection. I reprogram the router and verify that the changes took. “Did we finish in time?” asked C.

I looked at the clock. “30 seconds over,” I said. “And next time?”

“Yes?”

“Don't ever do this on a Friday.”

Saturday, March 11, 2006

I'm amazed at how quickly I was able to cobble up a generative text program in Lisp. Well, Scheme. Technically guile, the GNU version of Scheme. I didn't bother with parsing the existing datafiles—instead I did the “arrays of strings and a slew of code (actually, very little) to sling the pieces together, but it was darned near trivial. The entire program, sans array declarations, comes down to:

(define rndstate 0)
(define refn     array-ref) ;; return an element from an array

(define (main args)
        (set! rndstate (seed->random-state (current-time)))
        (display (racter))
        (display "\n\n")
        (exit 0)
)


;; return the size of an array
(define (nref a) (car (array-dimensions a)))

;; return a random element from an array
(define (ref a)  (array-ref a (random (nref a) rndstate)))

;; sling those strings
(define (racter)
  (eval (cons 'string-append (array->list (ref default-template)))
        (interaction-environment)
  )
)

The code itself is mostly array declarations (and this particular bit of code is a translation from Games Ataris Play—hey, it was a couple of bucks from a used book store) with this bit of code at the bottom.

There are some features I want to add to this, but they shouldn't take all that much code. Once I get this working how I want it, it should be pretty straightforward to convert the existing datafiles I have into LispSchemeguile.

Sunday, March 12, 2006

Living underground

I just finished watching Dark Days, a facinating documentary on a very unique neighborhood—one that existed in the subway tunnels of New York City. Granted, these were formerlly homeless people, but can you really call them homeless when they made their own homes (okay, huts made out of found plywood) and had electricity (and at one point, running water)?

Equilly fascinating was the making of the documentary, where the film maker, Marc Singer, managed to rent camera equipment, bum B&W film, use the subjects of his film as film crew (and he himself had no experience in making films) and solely on the subject matter of his film, get it developed, edited and scored for an incredibly low amount of money, where it went on to win several awards at Sundance 2000.

Monday, March 13, 2006

RACTER, generative text and Lisp. Oh my! Part II

I found programming in LispSchemeguile to be quite frustrating—partly due to it being an unfamiliar environment to program in and partly due to not fully understanding the implications of my design decisions for the generative text platform I'm developing.

Ideally, I wanted something like:

(define firstname
  #(
  	"Alice"
  	"Bob"
  	"Carol"
  	"Dave"
  )
)

(define lastname
  #(
  	"Smith"
  	"Jones"
  	"Conner"
  )
)

(define heros	;; from scifi.scm from the other day
  #(
        "Tim Conway"
        "Big Bird"
        "The Fonz"
        "Wonder Woman"
        "Kareem Abdul Jabar"
        "Tom Selleck"
        "Lucille Ball"
	#((ref firstname) " " (ref lastname))
  )
)

Where heros will be one of “Tim Conway” or a generated named like “Carol Jones.” And it was handling this “second level” of references where I had difficulty (lots of unbound and/or undefined references—God I can't stand dynamic languages). I spend hours trying to figure out how to iterate through an array. I mean, in a C-like language it would be something like:

for (i = 0 ; i < array.length ; i++)
{
  if (typeof(array[i]) == string) 
    result.append(array[i]);
  else if (typeof(array[i]) == array)
    result.append(expand_array(array[i]));
}

But LispSchemeguile is rather lacking in the loop department; instead you're supposed to use tail recursion or one of the mapping functions and LispSchemeguile's support of arrays isn't quite as dynamic as say, Perl, and well …

I found the experience rather trying.

But in the end the code turned out to be rather simple. Well, once I “fixed” the data structures being used:

(define firstname
  #(
  	"Alice"
  	"Bob"
  	"Carol"
  	"Dave"
  )
)

(define lastname
  #(
  	"Smith"
  	"Jones"
  	"Conner"
  )
)

(define heros	;; from scifi.scm from the other day
  #(
        "Tim Conway"
        "Big Bird"
        "The Fonz"
        "Wonder Woman"
        "Kareem Abdul Jabar"
        "Tom Selleck"
        "Lucille Ball"
	((ref firstname) " " (ref lastname)) ;; look! a list!  Not an array!
  )
)

(define rndstate 0)
(define refn     array-ref) ;; return an element from an array

;; need this to get random numbers out of (random)
(set! rndstate (seed->random-state (current-time)))

(define (nref a) (car (array-dimensions a)))
(define (ref a)
  (let
    ((result (refn a (random (nref a) rndstate))))
    (cond
      ((string? result) result)
      ((list?   result) (eval
                                (cons 'string-append result)
                                (interaction-environment)
                        ))
    )
  )
)

Now that this is working, adding additional functions and variables should be straightforward. And today's example is a guile version of my Quick-n-Dirty B-Movie Plot Generator.

Tuesday, March 14, 2006

Evil thoughts

I thought briefly of moving to Boston, way back in 1998 or thereabouts, for a possible short term contracting job. I didn't get the job (but I did get the title to this journal from it), thankfully, because I came to realize that I hated didn't like Boston. It was old, cold and a twisty maze of one-way streets all alike (it wouldn't surprise me of the maze of ADVENT was based upon Bostonian streets).

And today, I'm especially glad I didn't move there, as the political atmosphere there would have driven me insane. Okay, perhaps mAss Backwards is a one-sided view of all things Massachusetts, but still (all examples taken from mAss Backwards) …

The Massachusetts House voted yesterday to legalize over-the-counter sale of hypodermic needles to curb the spread of HIV and other blood-borne infections, potentially setting up a political showdown with Governor Mitt Romney over whether the bill will save lives or promote drug use.

House votes to allow sale of syringes (November 15th, 2005)

Well, there is the potential of promoting drug use, but …

Yes, the same legislative body that would have you believe there's no legitimate use for a handgun, even in the hands of the most law-abiding citizens, just voted to legalize the sale of hypodermic needles to known lawbreakers—in an effort to “save lives”.

Now, we could debate the legalization of drugs until the proverbial cows come home, but off the top of my head, I can only think of two groups of people that will benefit by passage of this bill: people who use heroin and other illegal intravenous drugs, and people who would be inclined to use a hypodermic needle as a weapon in the commission of a crime.

mAss Backwards (November 16th, 2005)

And now?

SALEM, Mass.—Police in Salem are on the hunt for a convenience store robber who used a syringe as his weapon. The robbery has gone down as a first, they said.

In fact, police warn that syringes are fast becoming a weapon of choice for criminals.

Via mAss Backwards, Police Hunting For Syringe Robber

But it's comforting to know that guns are still illegal in Massachusetts. But least you think it's just syringes being used in the commission of crimes:

Cheap and easily bought, machetes in America have commonly been reserved for underbrush and sugar-cane cutting. But now, in a spreading trend that so far has drawn little national attention, criminals are using machetes as weapons, striking fear in cities and towns across the country. …

That was the case as well in the Boston area, where a rise in gang violence involving machetes occurred in the past several years. The surrounding towns of Revere, Everett, Lynn and Chelsea have banned machetes, and there is now a bill before the Massachusetts Senate that would prohibit the carrying, sale and manufacture of the tool-turned-weapon.

Via mAss Backwards, Machetes cutting a wider swath of fear in U.S. communities

Although some sanity crept into the Massachusetts Senate so now you may have to get a permit from the police to carry a machete.

Yeah, that'll show them machete wielding criminals.

Granted, there may be silly things like that happening down here in Lower Sheol (and there are plenty of people who live on our street that carry machetes, but then again, we are surrounded on three sides by plant nurseries) but Florida allows concealed guns, and allows their use! Perhaps Massachusetts should consider relaxing some of their gun control laws …

Oh wait, who am I kidding? This is Taxachusetts we're talking about—a state filled with well meaning Government workers who are here to help. No, really! Heaven forbid ordinary citizens take care of themselves.

Oh, sorry about those evil thoughts there. The Nanny State is only looking out for our interests and security.


More evil thoughts

After years of idealism, I have finally decided that I am sick and fucking tired of helping the disenfranchised and oppressed. I have a master's degree in social work, and I've worked in a number of different settings. I've been a social worker for Children's Protective Services, a therapist on a psych ward, and I've worked as a case manager for a non-profit that shall remain nameless. I've had a number of clients over the years that I would now like to thank for helping me come to the realization that certain people are beyond help. …

4) The crackhead mother with 27 cats: I called you in advance to set up our appoinmet. You KNEW I was going to be at your house that day and that I would be evaluating your progress in making your home habitable so that your kids could be returned to you. So why, oh why did you answer the door with a CRACK PIPE IN YOUR HAND???? Oh, it's not yours? You were just holding onto it for your neighbor? Sure, I'll buy that. Let me ask you something though. Are those your neighbor's cat turds overflowing in the kirchen sink? No, you're right, those litter boxes ARE expensive. Perhaps you shoud consider getting rid of a few of the cats so there will be room for your children. Just a thought. By the way, is that your neighbor's blood coagulating over there on the couch?

Via Mostly Cajun, A social worker finally snaps

The evil thought that this brings to mind?

Lots really. And none kinds towards welfare or it's recipients (but I realize that the six cases mentioned in the rant above are perhaps the extreme cases and don't represent the norm—at least I hope they don't represent the norm).

But the main thought is that the people mentioned above need a swift really XXXXXXX hard kick to the ass head ass all over and reality shoved in their face.

Or perhaps we could ship these people to the Massachusetts Senate—they can help! They're from the Government!

(Oh my—am I turning … conservative?)

Wednesday, March 15, 2006

“Don't Be Evil”

… there are many reasons one might want to buy a share of a company. The company might pay dividends, or it might offer the potential of paying dividends in the future. If you buy a big enough share you can have a real say in how the company is run. Even if you don't have the wherewithall to buy a big enough share to let you run the company, your small share might be sought out by someone who does have the means to buy a controlling interest. Or being a shareholder might entitle you to certain special privileges. (We own some stock in a winery that gives a 30% discount to its shareholders. We've made back our original investments many times over on wine discounts alone. The stock also pays dividends.)

But with Google, none of those reasons apply. Google has explicitly stated that it will never pay dividends. They have explicitly said that they will offer no guidance to investors. Their stock structure is such that even if you bought every single publicly traded share of Google stock, Larry and Sergey would still control the company because their privately held stock has ten times as many votes as your publicly traded shares. So there is no hope that your shares will ever be of value to someone attempting a hostile takeover of Google. Such a thing is simply not possible, so no one will ever try.

Xooglers: Speaking of trouble …

I had given pass to Google over the whole China censorship thing primarily because they're a public company and as such, they are practically required by law to increase shareholder value, and by passing up China, they would be negligent in not entering one of the largest and fastest growing economies in the world (if not the largest and fastest).

But I have to question Google's status as a public company. If buying stock yields no dividends (not unusual for growing companies) nor gives influence or voting rights (and I can't think of any other stock like that), can the company be considered “public?” And if Google isn't “public” then why even enter the China market as it goes against their “Don't Be Evil” ethic? (as far as the stock market goes, I'm guessing this is Larry Page and Sergey Brin giving the finger to Wall Street, which I don't think is a bad thing in and of itself, but China? What are they thinking?)

Thursday, March 16, 2006

Mad libs in novel format

You know that's how these were actually written, right? Edward Stratemeyer and his factory/warehouses full of typists following the exact same outline, substituting details and names. It worked for his other creations, like Hardy Boys and Bobbsey Twins. There's been some books written about him and his process. He created hundreds of series, and within each series was its own pattern.

(Of course, the rumor is that Harlequin used to work this way too, sending out Mad-Lib like “outlines” that required the “writer” to just insert new names and synonyms to create each book with the same sensibility!)

Via theferrett, a comment about The lost outlines of “Carolyn” “Keene”

It's not like the thought of doing something like this hadn't crossed my mind.

Friday, March 17, 2006

Yeah, and a cigar is just a cigar

There are times when I wish I was still running my sites on tower, a 486 based system running at 33MHz with 32M of RAM and a 17G harddrive. That way, when somebody complains that their server isn't a quad-4GHz CPU monster with 3G of RAM and a few terabytes of diskspace, I can shove tower where the sun don't shine and mock their inadequacies, unless, of course, they're running a site like Slashdot (which of course, they're not).


“You mean they sell more than just this type?”

Of course, not all is bad:

I wrote about the state of the Thin Mint two years ago. I promised an all-natural Thin Mint recipe for you. It took me two years, but as promised, here it is … No shortening, no trans-fats from partially hydrogenated vegetable oils, no weird, processed cake mix cookies—just good old-fashioned butter, cocoa, vanilla, sugar, chocolate, whole grain flour! and peppermint turned into delicious, thin minty goodness.

Via flutterby, Thin Mint Recipe—homemade and all-natural

These are one of my favorite cookies (and for the last few years we've bought an entire case of 'em and stored 'em in the freezer so we could have delicious Thin Mint Goodness all-year round) but an actual recipie?

Oh my!

There's only one down side …

Saturday, March 18, 2006

A comedic series of setbacks

[The events described herein actually happened yesterday, but technically spilled over into today, so there you go. —Ed]

Well, that was certainly pleasant.

What was supposed to be a simple upgrade dominoed into a full scale fiasco.

But first, a bit of setup.

At The Company, we have seven name servers. Two are used by all the computers here to resolve DNS queries only; no configuration changes are required on these two machines and therefore are not part of this story.

Four of the name servers are authoritative name servers for our domains. These machines will only respond to queries on the domains we host; all other queries (like recursive DNS queries) are ignored.

To make things easier on us, the remaining name server actually hosts all the zone files and pushes them out to the four authoritative name servers (in effect, the four authoritative name servers are slaves of this one server, but the outside world will never see this server). Therefore, we can make changes to the zone files on one server and have the changes automatically pushed out.

That still leaves the problem of new zones being added (which is a sore point with me with reguard to bind). Any new zone that's added, the configuration of not only the one master server needs changing, but the configuration file of the four authoritative (aka “slave” servers) also require changing. While I have a script that will generate all five configuration files, we still need to copy four of the configuration files to each of the servers.

So I wanted to automate the copying of the new configuration files and restarting the name servers on all the authoritative name servers when the configuration files are created. And to do that, I needed to set up a trust mechanism so that the server that has all the zones can copy a configuration file and restart the nameservers without intervention. Easy enough to do with ssh.

But there were some … interoperability issues between the various machines with respect to their various instances of ssh (bascially, scp (secure copy) didn't work due to protocol differences). Easily solved by installing the latest version of OpenSSH on each machine. Well, actually, installing the latest version of zlib, then OpenSSL and then OpenSSH.

This master server, the one with all the zones, didn't need this upgrade, so I didn't bother with that. The four authoritative name servers, however, needed the upgrades. Now, I should mention at this point that the four authoritative name servers are all Cobalt RaQs—sure they're pretty old, but at 1U high and a low power consumption, they're fine for doing the dedicated task of resolving DNS queries.

The upgrade went smoothly on three of the machines—pretty much:

# cd zlib-1.2.3
# ./configure
# make
# make install
# cd ../openssl-0.9.8a
# ./configure
# make
# make install
# cd ../openssh-4.3p1
# ./configure
# make
# make install
# /etc/rc.d/init.d/sshd stop
# /etc/rc.d/init.d/sshd start
#

On the fourth machine (which happened to be the primary of our authoritative name servers) the make install of OpenSSH failed. Of which I didn't notice.

Oops.

The result of which was a borked program that refused to run, and no backup of the working version.

Oops.

Somehow, I ended up being logged out of the machine. And without a working sshd there was no way I could log back into the machine.

Well, not easily.

You see, the Cobalt RaQs don't have video or keyboard ports. They're designed as servers—they don't really need such devices. They do, however, have a serial port you can log in through.

So I hook up a serial cable from a nearby server to the RaQ in question and that's when I got hit with Murphy's Law yet again—the serial login was disabled.

Hrm.

Okay. Take the machine out of the rack, take the drive out of the machine, hook it up to my workstation, change it so one can log in through the serial port, put the drive back in, power up the machine and log in through the serial port.

So I start to take the machine out of the rack when I get hit with Murphy's Law for a third time—one of the screws is stripped, so therefore I can't get it out of the rack.

Okay, now what?

I know that Linux (which is what runs on this Cobalt RaQ) can support a serial console. Maybe I can boot into single user mode and go from there.

Nice idea, but apparently the Linux kernel for these boxes don't support the serial console (as incredible as that may seem). Yes, I can see the shell prompt in single user mode, but everything I type just goes into the bit bucket (and this I try several times, with different arguments to the Linux kernel to try to get it to use a serial console). And each time I do this, I end up having to shut the machine down, which leaves the file system in an inconsistant state, requiring the use of fsck to fix.

Okay, so I really need to get the machine out of the rack. But how to do that? I'm looking at the situation when I get an idea: I'll attack the problem from a different angle. Literally! The Cobalt RaQ has two “wings” (one on either side) which are attached by screws, and it's these “wings” which are then screwed into the rack. I can get access to the screws holding the wing in place. So, I effectively remove the wing from the RaQ and it slides right out.

Then it's to my workstation. Open up the Cobalt RaQ, remove the drive, attach said drive to the external USB drive case, turn it on, run fsck on the drive, edit the configuration to allow logins from the serial port, umount the drive, power it down, remove it from the USB drive, put it back into the RaQ, power it on and—

—have it fail to boot.

You see, when I “fixed” the drive using fsck on my workstation, it marked the drive as being a newer version of the filesystem. Which the fsck on the Cobalt RaQ doesn't support (as part of the boot up sequence, it automatically checks the drives using fsck).

Murphy strikes again.

Okay, attach the drive to my workstation, copy over a newer version of fsci, move the drive back to the RaQ and power up—

—only to have it fail yet again. Apparently, the old version of fsck used options that the new version of fsck doesn't like. So back to the workstation, modify the startup scripts to remove the options fsck is bitching about, try again, move the drive back to the workstation because I apparently edited the wrong startup scripts and try again only to find out I mucked it up again, so back to the workstation …

It was about half an hour of moving the drive back and forth before I got the RaQ to finally finished booting and to the point where I can log in sucessfully through the serial port.

Start the OpenSSH install from scratch.

# tar xzvf ../archive/openssh-4.3p1.tar.gz
# cd openssh-4.3p1
# ./configure

Only now configure failed!

Huh?

I check, and gcc failed with an internal error!

I try a quick C program and yup, gcc is totally borked now.

At this point, the only thing left is to reinstall the operating system.

Now, the installation procedure for the Cobalt RaQ 3 and 4s requires another PC, which you boot using a special CD. The PC in question must have a single network port and one (1) CD drive. Anything else will confuse the installation CD. Once this CD is booted, you then force the Cobalt RaQ to do a netboot. Ths PC will see the netboot request, and feed it an installtion program which will install Linux on the Cobalt RaQ.

Because of the requirements of the installation CD, I have to use P's computer as it fits the requirements of the installation CD. But P's computer is on its last legs, sounding much like a dying diesel engine. But it's not dead yet.

Only it hung during the installation, having difficulty reading the CD.

I try it again. Same thing.

I turn off P's computer for half an hour. You know, let it cool down. Try it again. Same thing.

Smirk then suggested another computer in the office.

Same thing—it hangs.

It was then I remembered something from my past experiences with installing Cobalt RaQs: don't use the Cobalt RaQ 3 installation disks! They don't work. Use the Cobalt RaQ 4 installation disks instead (even if you are installing on a Cobalt RaQ 3, which I was).

That worked.

So now I had a fresh install of the operating system.

But no ssh.

Now, how to get files to the box … okay, the Cobalt RaQ has ftp. Okay, compile an FTP server on my workstation. Then use ftp to transfer zlib, openssl, openssh and bind to the Cobalt RaQ. Spend the next couple of hours compiling.

Finally had it back up and running and could finish the job I started some eight hours previously.

Blarg.


Sucess

Yes!

Every few months for the past year or two, I've been trying to make cornbread.

My Great Aunt (my Mom's Aunt) Freddie (yup, that is her real name) would made this wonderful cornbread and the thing was—I knew how she made it too. Using two packages of Martha White's Cotton Pickin' Cornbread™ Mix (just add water) baked in a hot skillet in the oven (you pre-heat the skillet).

Only that has never worked for me. Either they came out too flat (used too big of a skillet) or stuck like crazy to the skillet and the results where okay at best.

Tonight, I went ahead and made cornbread from scratch (flour, corn meal, baking power, baking soda, salt, egg, butter milk, shortening) and made sure the skillet (the 8″ one) was well greased.

It popped right out of the skillet and was the right thickness.

Woot!

And boy, did it go fast!

Sunday, March 19, 2006

Living la vida future

[Panoramic of my desk]

Woot!

Earlier last week Spring mentioned something about our cell phone plan allowing us to get new phones for free. I wasn't interested unless one of the new free phones came with a camera.

There was—the Sony Ericsson Z520a.

One of the features is the “panoramic picture” (as you can see above), which is something that my current camera can't do.

But like all digital cameras, it tends to suck in low light conditions, as you can see from my first photo I took:

[First Post!]

And with no camera mount, it'll be difficult to take low-light shots with this thing. But hey, it's a camera, in a phone. It's the future, now.

Now all I want is my flying car.

Update on Thursday, May 11th, 2006

Don't bother getting one of these phones. While the features are nice, they're quite fragile and the display is prone to wig out if dropped.

Monday, March 20, 2006

Not that it might help all that much

I suddenly realized something. About two and a half years ago I made a change to the way robots can index my site and as a result, the main page (the one you get to when you go to http://boston.conman.org/) should not be indexed at all (but links followed).

This probably had an effect on the ads Google AdSense served up for that page (or any other page that had more than one entry on it).

Hmm.

It's a quick change so that the main page is indexed, but I wonder if this will have any effect to the effectiveness of Google AdSense.

I'm guessing … no.

But I might as well try it anyway.

Tuesday, March 21, 2006

Unintended consequences

While in the process of solving a secure certificate issue with one of our customers I ended up having to debug an email issue for the same customer before continuing with the resolution of the primary issue (just have to love those “one-step forward, two-steps backwards and a sidestep” issues).

Anyway, the email issue involves SPF and it's a situation that frankly, never crossed my mind.

conman.org has an SPF record that basically states: “only hosts listed as MX hosts for conman.org and IP addresses XXX.XXX.XXX.XXX through XXX.XXX.XXX.XXX are allowed to send mail from conman.org and no others.” No problem there, until email is forwareded!

I sent a test message from sean@conman.org to root@XXXXXXXXXXXX, which is then forwarded to an account (that all root@<the various servers at The Company> get forwarded to) that ultimately ends up in my work mailbox. Now, all email for The Company goes through a spam firewall, which, among other things, checks for SPF. So, the mail message I sent went sean@conman.orgroot@[customer]rootmail@[The Company root catch-all account], but when it hit the spam firewall at rootmail@[The Company root catch-all account] the mail was still from sean@conman.org, but it was coming from the customer's server, which isn't listed in my SPF record (see above), so it was blocked from being delivered.

Lovely.

Draconian SPF records break in the face of email forwarding. Email forwarding is a standard feature of email. SPF is pretty pointless without draconian records (well, non-draconian records means one can mark an email as suspicious but without support for such tagging why even bother?).

So why bother using SPF then?

Sigh.


Two Pictures from The Corporate Offices of The Company

[The Walkway outside The Corporate Offices]

I'm still having fun with the camera phone and its ability to take panoramic pictures (wow! What a neat feature!). Anyway, the shot above is of the walkway just outside The Corporate Offices of The Company, where you can bask in the expanse that is … The Company.

[The Office I share—that's my computer on the right]

This shot is of The Office I share with P. That's P on the left (he's been feeling a bit pixelated all week) in front of his computer, and that's my computer on the right. The text you see is the screen saver, displaying some code I've written.


A long night in the office

For both my friends from college (especially those that were at the New Year's Eve 1992/New Year's Day 1993 party) and for the Sunday Gamers crashing Gregory's office every few months between 2000 and 2002 (or there abouts) is a long night in the office (via Amanda Robbins).

Wednesday, March 22, 2006

Once more into the tarpit

It's been a while since I last reported on the Labrea Tarpit we're running. In the almost two months since I've mentioned it, it's just been sitting on a shelf, tarpitting away. As I reported back then, it seems that it's more effective at telling us what's attacking us (IP address) and where (port number) than actually slowing down the attacks.

Yesterday, Dan the Network Engineer asked if he could get regular reports of what IP addresses are hitting us hard. So I modified ltpstat to generate the requested information (I'm not bothering to mask the offending IP addresses):

Attacking IP addresses
IP AddressNumber of “connections”
81.248.42.1337207
160.79.143.98846
59.21.72.1691
216.48.7.19552
82.76.161.38487
217.132.178.97484
193.15.92.167421
66.131.62.208370
64.182.81.74329
216.82.220.172323

I also had it generate a list of ports being attacked. Again, nothing surprising here:

Top 6 ports captured by Labrea since the last purge
Port #Port description# connections
Port #Port description# connections
4899Remote Administration8,892
139NetBIOS Session Service5,081
1433Microsoft SQL Server1,644
135Microsoft-RPC service1,071
445Microsoft-DS Service914
80Hypertext Transfer Protocol850

(Just a note—I was able to generate this data from the existing reports that ltpstat generated, but pulling just this information out of said reports required at least three processes per report. It was just as easy to have just the information required for this to be generated by ltpstat itself)

Dan the Network Engineer is planning on taking these reports and automatically blocking the offending IP addresses from scanning our network. Should be a pretty sweet setup once it gets going.


Two Pictures from The Data Center at The Company

[Look!  Blinken lights!]

Two more photos, this time from the Data Center.

[Yeah, the color balance is off.  It's a camera phone!]

Can you tell I really like this panoramic feature of the phone camera?

I also decided to add this vertical panoramic shot I took to the sidebar there to the right. Just because.

Thursday, March 23, 2006

Internal Corporate Malfeasense

This is all types of messed up.

Negiyo had an internal trouble ticket system, called TTTS. Built in-house it wasn't a bad system and since it was developed within Negiyo, it was pretty well integrated workflow wise.

But a few years ago it seems it because too slow to be usable and so a search for a replacement commenced. And this is where things become unclear. A new system, Cowbell was found to replace TTTS. Hefty new hardware was bought. Hefty new software (Oracle for one) was bought. And Cowbell was bought (and whoever was responsible either received a hefty kick-back, received incredible sex or was totally blinded by the “Silver Bullet” bill-of-sales they were presented with).

Much wailing, knashing of teeth and late night hacking sessions and Cowbell was on the floor for all of Negiyo to use.

Now, when TTTS was in use, it was expected that Level 1 Technical Support Person (L1TSP) would be able to handle (either resolve or escalate) 60 cases in average per day (around 7.5 minutes per case). Unfortunately the expectations of Cowbell vastly exceeded what Cowbell could actually handle and the average number of cases a L1TSP was expected to handle dropped to about 20 (or one case every 22.5 minutes).

And even that is pushing things. A person new to the system might be lucky to get one case out per hour.

It's not that the technical issues the L1TSPs are expected to troubleshoot are harder. In fact, they haven't really changed since TTTS was in use, and in most cases, the technical issues only take about five minutes on average to troubleshoot. It's looking up customer information, gathering notes, collecting notes, writing the case history and wrapping things up that takes fifteen minutes or more under Cowbell. Cowbell requires IE (whereas TTTS could use any browser) and to get anything done (say, looking up related tickets) you have to have a separate instance of IE running (not window—an actual second copy of the program running) and often times, three or more instances of IE are required. As such, there is currently a three month backlog of cases due to the time required to handle such cases under Cowbell.

A few months ago some mid-level manager realized that if the hardware bought for Cowbell had been used for TTTS, then the whole issue of TTTS being too slow to use would never have been an issue. Too late to change back now.

Until Negiyo got a second bill from Cowbell for five figures.

It turns out that one just doesn't buy Cowbell, one leases Cowbell for five figures a year, every year, year in and year out.

Any savings for buying a pre-canned solution over maintaining an in-house built solution just went out the window (and the parties responsible for selecting Cowbell can no longer be found, presumedly they were either sucessful in spreading the blame around, or left the company two days after the purchase to rape and pillage other companies for greener pastures).

So beginning in April they're going back to TTTS.

But they're still abusing training new hires on using Cowbell. And out of about a dozen new people hired, I think there's only one that remained in training (yes, Cowbell is that bad).


Some more thoughts on Internal Corporate Malfeasense

The whole thing with Negiyo and Cowbell is just an example of a much wider phenomenon (do doo bee doo doo) whereby some high-up muckity muck (or even some mid-level muckity muck) makes a sweeping change that costs the company (or heck, government agency or even a non-profit organization) gobs of money, time and energy with no repercussions happening to the person making the change.

Now, I'm not saying a person should be fired for making a mistake, because Lord knows I've made plenty of mistakes, some of them real doozies that cost the company I was working for lots of money. We (hopefully) learn from our mistakes and for a while today I was real conflicted on this because I wanted to take the person reponsible for Cowbell out back and apply a hefty clue-by-four upside their head.

And it might have been a mistake on their part.

But I was able to identify the dichotomy I had—on the one hand, I felt that releasing the lawyers hounds lawyers on this person was fully justified for loosing thousands, if not millions, of dollars, yet on the other hand, it might have been an honest mistake on their part—TTTS was slowly dying and by going to an outside source for the trouble ticket system, the company might have lowered their operating costs and gotten better performance which turned out not to be the case (and like I said, I've made mistakes, like using Java for Project Brainstorm). The resolution I found is in living with the mistake!

Had the person (or people) responsible for choosing Cowbell (switching back to Negiyo here) had to use Cowbell on a daily basis and been forced to admit “Yup, this was a mistake. A million dollar mistake, but a mistake nonetheless,” I don't think I would have nearly the hatred for the person (or people) as I do, since (from what I hear) it's plainly clear that the person (or people) responsible for the decision aren't obligated to live with the results (and in my case, the Java version of Brainstorm didn't pan out, so I had to go on and implement it two more times).


An Open Letter to Marlene

From: Marlene Bender <scanforlife@webband.com>
To: sean@conman.org
Subject: Link exchange with your site http://boston.conman.org
Date: Thu, 23 Mar 2006 23:14:22 -0500

Dear Webmaster,

My name is Marlene Bender, and I run the web site Work at Home Ideas and Opportunities:

http://XXXXXXXXXXXXXXXXXX XXXXXXXXXX/

I recently found your site http://boston.conman.org and am very interested in exchanging links. I've gone ahead and posted a link to your site, on this page:

http://www.XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXX/resources_business_2.html[that's the wrong page, it's actually on http://XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX/resources_business_4.html but who cares?]

As you know, reciprocal linking benefits both of us by raising our search rankings and generating more traffic to both of our sites. Please post a link to my site as follows:

Title: Work at Home Ideas and Opportunities
URL: http://www.XXXXXXXXXXXXXXXXX XXXXXXX/
Description: Work at home ideas and opportunities

Once you've posted the link, let me know the URL of the page that it's on, by entering it in this form:

http://www.XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX

You can also use that form to make changes to the text of the link to your site, if you'd like.

Thank you very much,

Marlene Bender

Dear Marlene,

I may call you Marlene, right? Okay.

Dear Marlene,

Thank you so much for your email. But i seriously have to wonder what you are thinking to include me on a site about at-home businesses when I don't have an at-home business. Nor do I have any real insight into making tons of money (much to the consternation of my Dad). I mean, I've only made $3.03 from Google AdSense; I'm not giving up my day job any time soon.

Besides, this is a blatent attempt to raise your own PageRank™ value (which is currently at zero I see) by getting me (who has a PageRank™ of five for The Boston Diaries) to link to you. Normally I'm not stingy with the links, but for this? Especially when you can't even send me the proper link?

Hah!

Oops. I meant—

Sorry, but I'll decline linking to you.

Friday, March 24, 2006

Kicking and screaming

Just heard from a friend that the Cowbell team lost a week's worth of work, which would push the deployment of the original TTTS back a week, maybe two.

Sounds like Cowbell isn't going quietly into the night, but kicking and screaming during the day.


It was never about education

In 1888, the [US] Senate Committee on Education was getting jittery about the localized, non-standardized, non-mandatory form of education that was actually teaching children to read at advanced levels, to comprehend history, and, egads, to think for themselves. The committee's report stated, “We believe that education is one of the principal causes of discontent of late years manifesting itself among the laboring classes.”

By the turn of the century, America's new educrats were pushing a new form of schooling with a new mission (and it wasn't to teach). The famous philosopher and educator John Dewey wrote in 1897:

Every teacher should realize he is a social servant set apart for the maintenance of the proper social order and the securing of the right social growth.

In his 1905 dissertation for Columbia Teachers College, Elwood Cubberlythe future Dean of Education at Stanfordwrote that schools should be factories “in which raw products, children, are to be shaped and formed into finished products … manufactured like nails, and the specifications for manufacturing will come from government and industry.”

The Educational System Was Designed to Keep Us Uneducated and Docile

If true, it would certainly explain the extreme dumbing down of US schools, especially since we no longer really have an industrial base anymore.

Reading the entire article is scary. Very scary, if true. So is the video I linked to above, if only the fact that the stuff that works is being actively ignored by those intrenched in the Educational System.

Saturday, March 25, 2006

Nothing to see. Move along.

I'm afraid there isn't much to write about today. Very quiet, got some good sleep, but other than that, there isn't anything else to say about today. But I felt that I needed to post something here.

Lame, I know.

Ah well.

Sunday, March 26, 2006

It's not everyday you see bikers hanging out with knights

Through a friend of a friend, we all attended a benefit BBQ for a woman in need of an organ transplant. It was a rather odd gathering, being a mixture of bikers and knights held at a local Moose Lodge.

[The BBQ Scene]

Several bands showed up during the BBQ but the first one was memorable if only because he was so white, trying to sing funky 70s tunes like “Play that funky music white boy” (and while he could play it, singing it was another matter entirely). The other bands weren't bad, but not nearly as memorable as Funky White Boy.

[The Char Hut] [A metric buttload of food]

The food itself was your standard BBQ fare, chicken, pork, baked beans, cole slaw, potato salad and pasta salad, all quite good, but way too much.

Spring's friends (who invited us) belong to SCA (the `knights” part of the mixture) and the three knights who did show up donned their armor and fought amongst themselves—I suspect the bikers in the crowd knew better than to tangle with these guys.

[Marching to the field of battle] [Clash of the Knights]

I actually didn't see many bikers, but they were in attendance.

[There were two more rows of bikes behind me]

I suspect all the bikers were inside the main pavillion where the beer and bands were located.


Zombies, mutants … is there really a difference?

After the benefit BBQ Spring and I dropped The Kids off at Casa New Jersey and met up with her friends to see The Hills Have Eyes, the remake of the 1977 “classic” The Hills Have Eyes (at the time, I thought the title sounded familiar, but I had never seen the original, nor knew what either film was about).

During the opening credits, what with all the nuclear Armageddon imagry being bandied about, I thought this was going to be your standard Zombie flick, but I was wrong—it turned out to be your standard mutant flick, about a family travelling through the desert getting waylaid by nuclear-devestated mutants from all the nuclear testing done by the US during the 50s and 60s.

Horror films are not my thing and I personally didn't care for the film all that much, but I was surprised at the number of survivors still standing at the end of the film, but like in most horror films, the “victims” all do very stupid stupid things, like not looking in the back seat, blowing up their only shelter, not telling the rest of the group about a dead pet—stuff that had they been just a tad smarter … well … okay, the movie would have been over in about 40 minutes.

Ah well.

Monday, March 27, 2006

Email tracking

Since Friday, I've been trying to track down an email problem, and I still haven't been able to solve it. Part of it was trying to figure out what the problem was from the initial reporting of it:

Happening again with XXXXXXXXXXX XXXX—this time the email was from EVE [I'll be referring to the individual email addresses by name—they have no relation to the actual email addresses involved, but will make it easier to follow along. Trust me on this, it gets confusing] and it did not come through. Any suggestion?

It took about four exchanges and checking the account information before I had a handle on what exactly was happening. The actual events were something like this: DAVE sends a message to CAROL. The address CAROL then automatically forwards the email to ALICE (a local mailbox on the server) and BOB (somewhere else on the Internet). DAVE's messages get through. EVE (from the same domain as DAVE incidently) sends a message to CAROL. The message is delivered to ALICE, but not to BOB.

I have to figure out why.

And that, my friends, is easier said than done.

We have mail logs going back about a month. Five log files (including the current one) in total, and each one averages about 800M in size (about 4,000,000 lines of logging information each). Log files. Which means a linear search through the file for any type of information needed. Yeah, it takes time, but I can do other things while I'm running a search. The major problem is that the information I need to check a single email through the system is spread out throughout the log. For instance, it took me about 10 minutes to fish the following information out of the log files for a single message (manual search, output formatted by hand):

message-id: 200603271643.k2RGhesn032068

	queue-id: k2RGheP6012025	
		from: DAVE
		to:   CAROL
		stat: queued
		at:   11:43:40

	queue-id: k2RGhesn032068	
		from: DAVE
		to:   CAROL
		stat: sent 
		at:   11:43:40

	queue-id: k2RGheP6012025
		to:   ALICE
		stat: sent 
		at:   11:43:42

	queue-id: k2RGhgR2032089
		from: DAVE
		to:   ALICE
		to:   BOB
		stat: sent
		at:   11:43:45

This single message took a total of five seconds to be processed. In that five seconds, the information was spread across eight lines of the log file, among 30 such records made in that five second period. It took me four searches to retrieve the eight lines from the log file. You see, each email message (and this is true globally) has a unique message-id, but sadly, only two of the log records had the message-id. The message ended up with four different queue-ids (and that's my term for it) within the system (which is why it took multiple searches to obtain all the information).

And since we don't have a program to analyse the mail logs, this has to be done manually right now.

It also turns out that the mail from EVE isn't logged as being from EVE, but from MALLET, due to the software EVE's using to send email. DAVE is also being logged as coming from MALLET (same software, or email server), which is further confusing the issue (and since the message 200603271643.k2RGhesn032068 was delivered sucessfully, I'm assuming it's from DAVE and not EVE).

Sigh.

Even the thought of writing a program to analyze the logs is giving me a headache.

Update on Tuesday, March 28th, 2006

Never did figure out where the supposed missing emails went.

Tuesday, March 28, 2006

Where have all the Salon articles gone?

I just had a weird thought—I haven't seen a link to a Salon article in a long time. They're still around (I just checked) but I have to wonder—why haven't I seen a link to a Salon article in a long time? Is it because the quality of the content has fallen? Or is it (what I suspect) that the content is hidden behind annoying ads and bloggers are relunctant to link to such an annoying site?

Wednesday, March 29, 2006

You see, it's with this attitude that I'll never make money with my journal/blog.

From: XXX XXX <XXXXXXXXXXXXXXXXXXXXXXXX>
To: "sean@conman.org" <sean@conman.org>
Subject: We want to buy links from your http://boston.conman.org/ website
Date: Wed, 29 Mar 2006 15:50:31 +0200

Dear Webmaster

My name is XXX XXX, I am the Business Development Manager for XXXXXXXXXXXX XXXX

XXXXXXXXXXXX is currently offering several business opportunities for your website. We will pay you $5–$25 per month to place one or more links on various pages of your website to our clients' sites.

I would like the link placed at the bottom of the page. But, if you are unable to place the link at this exact location, I am certainly willing to find other areas that are acceptable for you.

If you are interested in becoming a partner with us, I will send you a detailed list of the available link advertisements, along with a breakdown of the different amounts we will pay for the links.

Please feel free to contact me with any other questions or comments at my email address.

Best Regards,

XXX XXX

Business Development Manager

XXXXXXXXXXXXXXXXXXXXXXXX

The last time I received a solicitation, I only made $3.03 a year, but this one is willing to pay $5 per month (yeah, I really expect to get the full $25). Hmmm … bottom of the page, eh? I doubt anyone really reads that far down and the likelyhood of anyone seeing those ads are pretty slim so I'm guessing they're using me only for my PageRank™.

But I think I'll play along, and see just how far they're willing to go for a little PageRank™ juice. Who knows? I may even make enough to get two cups of coffee.


Good Lord, Douglas Adams may have been on to something!

This unexpected connection [that quantum physics and prime numbers are inextricably linked] has given us a glimpse of the mathematics that might, ultimately, reveal the secret of these enigmatic numbers. At first the link seemed rather tenuous. But the important role played by the number 42 has recently persuaded even the deepest skeptics that the subatomic world might hold the key to one of the greatest unsolved problems in mathematics.

Via YARGB, PRIME NUMBERS GET HITCHED (emphasis added)

I'm sure it was purely coincidental that Douglas Adams picked 42 as the Ultimate Answer to Everything, but still … it's … mind boggingly weird for this to happen.

Thursday, March 30, 2006

I wonder how the Sunday D&D players would react to mapping a 9-dimensional dungeon?

As a kid (we're talking middle school here) I was really interested in time travel and higher dimentions (but I never liked the theory that time was the fourth dimension since it's not orthoganal to the three spatial dimenions we live in—for one thing, time only goes in one direction). I read such books as Flatland, the Planiverse and Geometry, Relativity and the Fourth Dimension and I got to the point where I could fairly easily visualize the various geometries in my head (the fourth dimension is hard to verbalize and I don't have a full mental image of it, but I can grasp at it).

So it's understandable that I was up way too late last night (or way too early this morning—take your pick) pouring over the Starmaze, an incredible 9-dimentional maze and the efforts required to map such a construct. It's an incredible map—half the size it normally would be due to it being hightly symetrical, so it's folded in on itself and each “room” actually represents two distinct locations represented by the colors red and blue (if you enter a room through a red passage, you can only leave through a blue passage, and vice-versa).

Also interesting (at least to me—I'm under no delusion that this has any interest whatsoever to anyone but a very select few) was the description of walking through such a space (if it actually existed).

The description gets a bit too metaphysical at times, dipping into Astrology and the I-Ching, but that may have been a technique used by the author to help him map the space and provide a logical structure. Still, it comes across as being a bit too New-Agey for my liking.


Now this is funny

I'm sorry, but this has got to be the most incompetent spammer I've seen yet:

From: "Geoffrey" <nicholas@paramed.biz>
To: <sean@conman.org>
Subject: *****SPAM***** Full of health? Then don't click!
Date: Thu, 30 Mar 2006 06:58:30 +0100
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on mymail.superclick.com
X-Spam-Level: ********************
X-Spam-Status: Yes, score=20.7 required=5.0 tests=AWL,BAYES_80, DOMAIN_RATIO, HTML_90_100, HTML_IMAGE_ONLY_08, HTML_MESSAGE, MIME_HTML_MOSTLY, MIME_QP_LONG_LINE, MPART_ALT_DIFF, PLING_QUERY, URIBL_AB_SURBL, URIBL_JP_SURBL, URIBL_OB_SURBL, URIBL_SBL, URIBL_SC_SURBL, URIBL_WS_SURBL autolearn=no version=3.0.4

Spam detection software, running on the system “mymail.superclick.com”, has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details.

Content preview: […]

Content analysis details: (20.7 points, 5.0 required)

Spam Analysis
Points Rule Name Description
Points Rule Name Description
0.4 PLING_QUERY Subject has exclamation mark and question mark
3.2 DOMAIN_RATIO BODY: Message body mentions many internet domains
2.0 BAYES_80 BODY: Bayesian spam probability is 80 to 95% [score: 0.9223]
0.0 HTML_90_100 BODY: Message is 90% to 100% HTML
1.0 MIME_HTML_MOSTLY BODY: Multipart message mostly text/html MIME
0.0 HTML_MESSAGE BODY: HTML included in message
3.0 HTML_IMAGE_ONLY_08 BODY: HTML: images with 400-800 bytes of words
0.1 MPART_ALT_DIFF BODY: HTML and text parts are different
0.0 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars
1.0 URIBL_SBL Contains an URL listed in the SBL blocklist [URIs: famefed.net]
0.4 URIBL_AB_SURBL Contains an URL listed in the AB SURBL blocklist [URIs: famefed.net]
2.5 URIBL_JP_SURBL Contains an URL listed in the JP SURBL blocklist [URIs: famefed.net]
1.5 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist [URIs: famefed.net]
3.2 URIBL_OB_SURBL Contains an URL listed in the OB SURBL blocklist [URIs: famefed.net]
4.3 URIBL_SC_SURBL Contains an URL listed in the SC SURBL blocklist [URIs: famefed.net]
-1.8 AWL AWL: From: address is in the auto white-list

The original message was not completely plain text, and may be unsafe to open with some email clients; in particular, it may contain a virus, or confirm that your address can receive spam. If you wish to view it, it may be safer to save it to a file and open it with an editor.

Original message:

From: "Geoffrey" <nicholas@paramed.biz>
To: <sean@conman.org>
Subject: Full of health? Then don't click!
Date: Thu, 30 Mar 2006 06:58:30 +0100

I should note that I don't run any anti-spam software on my email server. Nothing. No filters. No scanning. No analyzing. It all arrives in my inbox.

And this is how this wonderful piece of spam came in, pre-spam marked and analyzed for my convenience.

Ah, if only all such spam came this way …


Charles Ponzi would be so proud

Google's stock has rebounded strongly since the S&P 500 inclusion announcement (going from about $340 to $395 in under a week). With already 8 BILLION dollars in the bank, Google just filed to sell 5.3 million more shares, which may add another 2.1 billion to the cash hoard. They also announced they completed the AOL deal.

Google Nears $400—Completes AOL Deal, Files to Sell More Stock!

The more I read about Google stock, the less I understand it. No dividends, no voting rights, yet a few billion dollars worth of stock is trading hands daily (and according to this calculation it adds up to about 15% of the GDP of the US (only it's not really counted).

OK look. What this means in real terms: 5 times more money is traded JUST IN STOCK BUYS/SELLS each day in GOOG than their entire yearly net profit. THAT is insane. If I were a GOOG employee who had my raises regulated to GOOG stock options (apparently they don't even own stocks they get a "goog coupon" to buy stocks over 4 years if their performance is good.), I'd be seriously stressing; and that would certainly hurt my job performance.

Stock Calculus (emphasis in original)

I know my Dad would say this is operating purely on the “Larger Sucker Theory” of stocks (which he also claims is a form of legalized gambling) whose only value is that which is perceived, but come on! At least other stocks give the some impression of being worth more than the iron oxide coating on some harddrives storing the ownership information (actual paper certificates? How 19th Century!). But GOOG? People actually buy it?

Then again, the explanation may lie in our crumbling educational system

Friday, March 31, 2006

It appears to be more common than I would have expected

A 20-month-old boy died after he swallowed magnets that twisted his small intestine and created a blockage, federal officials said. Three other children, between the ages of 3 and 8, suffered intestinal perforations that required surgery and hospitalization in intensive care. And a 5-year-old boy inhaled two magnets that had to be surgically removed from his lungs.

Nearly 4 million magnetic toy sets recalled (link via an email from Bunny)

Our own little magnetic episode wasn't caused by these toys (although we do have some of these toys) but by some actual refrigerator magnets, I'm surprised that this happens this often (and inhaling? As if swallowing wasn't bad enough?).

Obligatory Picture

[Don't hate me for my sock monkey headphones.]

Obligatory Links

Obligatory Miscellaneous

You have my permission to link freely to any entry here. Go ahead, I won't bite. I promise.

The dates are the permanent links to that day's entries (or entry, if there is only one entry). The titles are the permanent links to that entry only. The format for the links are simple: Start with the base link for this site: http://boston.conman.org/, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

http://boston.conman.org/2000/08/01

You can also specify the entire month by leaving off the day portion. You can even select an arbitrary portion of time.

You may also note subtle shading of the links and that's intentional: the “closer” the link is (relative to the page) the “brighter” it appears. It's an experiment in using color shading to denote the distance a link is from here. If you don't notice it, don't worry; it's not all that important.

It is assumed that every brand name, slogan, corporate name, symbol, design element, et cetera mentioned in these pages is a protected and/or trademarked entity, the sole property of its owner(s), and acknowledgement of this status is implied.

Copyright © 1999-2017 by Sean Conner. All Rights Reserved.