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.

Thursday, April 01, 2004

A Round Toit.

Yes, I haven't updated here in a while. Yes, I do need to update. I'll get around to it, just as soon as I file off the edges of this square to it I just found.

Friday, April 02, 2004

Finally got my round to it

Well, the masses spoke, and 75% did not like my little design change of yesturday, finding it ugly and hard to read (although the one person who liked it enjoyed the retro feel of the design). But that wasn't a permanent design change—it was my own little April Fools joke (although in the process, it reverted a change Mark made to one of my posts as a joke (side note to Mark: next time, change the actual post)). So rest assured that the design is back to normal (that's the neat thing about CSS—it took all of five minutes to edit one file to change the entire look of the site).

As far as pranks go, it's pretty tame. I do recall in college pulling some decent pranks—the time some friends and I placed ”Beware of GOD” signs all over campus (someone had placed ”Beware of DOG” signs all over campus; we took them down, rearranged the letters and placed them back up). We even managed to place some on second story windows, facing in. Then there was the time we found some police tape, and strung it up in a few locations in the building we worked in on campus, along with tape outlines of bodies (best location: elevator with the hand sticking out on the second floor). We managed to scare the cleaning crew with that one.

Okay, so it's a far cry from the pranks at MIT, but as far as I could tell, we were the only ones at college to do such things.

Monday, April 05, 2004

Cerebus is dead

The first 1,100-page graphic novel in the history of the medium, and the reaction could be summed up as the sound of one cricket leg chirping. Just as there was no “storm of misinterpretation” following Cerebus' “marriage” to Astoria. I'm not sure the quotes belong on there. That was part of my point. If Cerebus is the Pope and he declares himself married to Astoria and has sex with her, is that rape? There were a number of levels to that one, but that was the joke as far as I was concerned. To give it a greater immediacy: Why does having a priest say a few words to a couple make what they do marital relations, and if he doesn't say the few words, it's fornication? And if a priest can make fornication into marital relations, why can't he make rape into marital relations?

Via Michael Duff, Onion A.V. Club: Writer-artist Dave Sim

I was introduced to Cerebus back in 1990 by my friend Sean Williams. At that point Dave Sim was nearly done with Church and State and I had a great time in catching up and getting current with the storyline. I had read the first 25 issues, but sadly, Sean did not have a copy of High Society (the next 25 issues, forming a single story arc). I became familiar with the whole 300 issue story arc Dave Sim was planning, and became a great fan of not only the writing but of the artwork as well.

But that was the early 90s. Over the next ten years I lost track somewhat of Cerebus, managing to get a copy of High Society and a few volumes past Church and State and hearing about the infamous screed against feminism but that's about it. And it surprised me that March of 2004, the last month of Cerebus has already come and gone.

And thus ends, as Dave Sim says, “comic-book equivalent of one Russian novel” at 6,000 pages of beautifully drawn art (well, nearly—the first few issues were rather rough around the edges).

Dave Sim may be a right-wing conservative anti-feminist facist, but he still has the best take on intellectual property I've read in a long time.


Photography of heavenly bodies

Last month The Kids received a telescope from their father. I helped The Kids to set it up (read: I put it together) and use it to view the moon and what I think was Jupiter. It's too nice to let them keep it in their room, so it currently lives in our room.

Late Sunday night, I was talking with my friend Ken D, who just received his Ph.D. in physics from FAU and currently teaches an astronomy class and he pointed out that the bright star south west of the moon was most likely Saturn, so when I got home, I decided to break out the telescope and do a bit of viewing.

Or rather, an attempt at stellar photography. Or would that be, planetary photography?

Anyway, I set up the telescope (which has a computerized controller which makes fine adjustments quite nice) and then attempted to use my digital camera to take pictures, first of the moon.

Considering I have no camera mount for the telescope, I think I managed to get some decent photographs of the moon through the telescope. Not an easy task to line up the camera optics with the telescope optics and take a picture without the image becoming hopelessly blurry. Even with a tripod it was difficult since the moon was so high up that the camera would just barely reach the eyepiece if I tipped the camera tripod up on two feet—in retrospect, I should have lowered the telescope, but hey, it was a learning experience.

I spent so much time with the moon that by the time I got around to Saturn it was just above a strand of trees and setting fast. At least, I think it was Saturn—it was a planet (since I could make out a distinct disk) but the rings were very hard to see, if in fact they were rings and not a form of spherical abberation due to the telescope optics. Twice I moved the telescope and lowered it in a vain attempt to get a picture of Saturn, but to no avail—it had set behind the trees and the one shot I did get was a light blob, not worth saving.

Tuesday, April 06, 2004

The art of filmmaking

In August of 1979, Mom and I moved to South Florida where a few months later, I met my best friend Sean Hoade who was quite the movie buff (even at the age of ten). He was really taken with the film Time After Time and by the end of the year we had worked out a ten page script for The Time Machine, about two guys who build a time machine in the living room of their apartment (and get a TIME cover story no less!) and go on to have various adventures, ending with a stint through 1944 Germany (of course).

We never did make that film, although I did learn the technical aspects of home film. A standard 8mm reel is 50′ long and at 16fps will last 3′40″ (3 minutes, 40 seconds). When you buy the film, it's actually 25′ of 16mm film; you load the camera, and when you shoot your 1′50″ of footage half the film is exposed (left half—right half is still unexposed). Then you reverse the reels, feeding the film through the camera again, expose the other 1′50″ of footage, then seal the film back up in its container and off to the lab it goes. There, the film is developed, split down the middle and spliced together to make a 50′ foot of 8mm film. Super-8 is still 8mm wide, but the film sprockets are verticle, leaving more space for the picture, and you actually get 50′ of film 8mm wide when shooting. Editing consists of splicing the film together, and there are two methods of doing that—one consists of literally glueing the strips of film together by overlapping one strip with the other (by one or two millimeters); the other method is to buttress the two strips end to end and tape them together. Well, there's more but I won't bore you with details (heh—it's been twenty years since I last used an 8mm camera and I still remember this stuff).

Fast forward ten years. Hoade is back living in South Florida and he gets the moving-making bug once again. He enthuiastically shows me the video of Polish Vampire in Burbank (good luck in finding a copy, but trust me on this, you aren't missing much). Hoade relates that the film in question was made for $2,500 (1985 dollars—adjusted for inflation, $4,326.21) and basically, it shows. Made on Super-8 (with sound) and probably all the $2,500 went into film stock and processing and very little into anything else.

“But,” Hoade said, “it grossed over $500,000!” A return of 20,000% wasn't something to sneeze at, and it would be nearly impossible to do worse than Polish Vampire in Burbank in terms of script quality, film quality and sound quality—heck, we were planning on a “straight to video” release anyway and film always looks better than video, even Super-8 (or at least, film has a different “look” that's pretty easy to spot). And given that we planned maybe spending $5,000 that put us at nearly double the Polish Vampire budget ($2,500 adjusted to 1990: $3,020).

So Hoade dusted off a short story he wrote in high school (“The Nihilist”) and a few weeks later we had our screen play—The Left Hand. A psychological horror story where the main character recieves a talisman and is instructed to use it only in his right hand. One night while drunk he decides to see what happens when he uses it in his left hand. Mayhem ensues.

And did mayhem ensue. We got Joe Lo Truglio involved (Hoade made an 8mm film with Joe in middle school, and I knew him in high school), and over the next few weeks, managed to cast the rest of the film but being complete amateurs at this, plus a sprialling budget, ended the attempt.

The following year Hoade decided to give it yet another try (Joe by this time was in New York City studying acting). This time, we would use 16mm, the budget was set for $25,000. Again, we found our cast and a professional crew and we were one week from filming when Hoade called it off again—the budget had blown up to over $60,000 and Hoade had no idea of how to finance it at that point (since he was paying for this out of his own money).

I was reminded of these memories as I was reading Joe Queenan's The Unkindest Cut, a book about Queenan's attempt at filming Twelve Steps to Death for $6,998 to undercut Robert Rodriquez's $7,000 film El Mariachi (more widely known than Polish Vampire) by two dollars. In the book, Queenan pretty much blows the myth of El Mariachi apart—unless everything is free and you are shooting in 8mm or video there is no way you can do a film for only $7,000 (or even $6,998). Depending upon the accounting method used, his film cost $35 (“To those of you who say that $35 seems a bit on the low side … I can only say this: There may be some give in our figures.… [A] debate rages over whether Kevin Costner's new movie Waterworld actually cost $85 million—the studio's figure—or $165 million—The Wall Street Journal's latest calculation. If Kevin Costner can be allowed $80 million worth of latitude, surely an intrepid filmmaker … is entitled to a tiny bit of leeway.”), $49,960.39 (the amount he spent to the premiere) or $65,193.67 (if you include everything he spent including publicity, tapes, free merchandise, etc).

That's a pretty expensive $6,998 film.

I also finished reading Art Linson's A Pound of Flesh, a horribly cynical look at Hollywood by an actual Hollywood producer. After reading that book, I'm amazed that anything is actually filmed in Hollywood:

After all, if a producer has enough scripts in development, he can earn sufficient income from development fees to survive without going into production. As I mentioned, a supervisory fee for bringing a development deal to a studio can range from $25,000 to $50,000 and more. Hey, if you can have ten of these deals, you can “live.” Twenty, and you can afford to give to charity. Why bother getting a movie made? Believe me, everyone is in on this.

Art Linson hates writers—

What are you going to tell this “I don't need you anymore now that I have the deal” know-it-all writer to help him come up with a good screenplay? Does he really need your help anymore? In most cases, emphatically yes.

has strong opinions on directors—

For my part, if I can't be on the committee that chooses the director, I'd just as soon work on something else.

but treats the actors with respect—

“So, let me see if I'm hearing you correctly,” I said. “You have given this a lot of thought [about two hours —Sean], and you have come to the conclusion that you hate the wardrobe. You would like me start over and have it completely redesigned by the time you get back from Italy, under your supervision.”

“Exactly.”

“Done.”

“Done,” [De Niro] smiled.

He's cynical as hell about the whole Hollywood thing, but he's still there, producing films.

But it's sad in a way, that in reading both books I realize that the art of filmmaking, the technical aspects, really pale in comparison to the money end and the politics that go on trying to get a film made. It may explain why George Lucas spend $150,000,000 of his own money to make The Phantom Menace—there were no politics, no one to say “No, George, this is crap” (and as a film, someone should have been there to say that).

And I suspect, that had Hoade and I known all this back then, we may have not even tried.


Large scale engineering in the computer world

Google is more than just a web search engine:

Rob Pike has gone to Google. Yes, that Rob Pike—the OS researcher, the member of the original Unix team from Bell Labs. This guy isn't just some labs hood ornament; he writes code, lots of it. Big chunks of whole new operating systems like Plan 9.

Look at the depth of the research background of the Google employees in OS, networking, and distributed systems. Compiler Optimization. Thread migration. Distributed shared memory.

I'm a sucker for cool OS research. Browsing papers from Google employees about distributed systems, thread migration, network shared memory, GFS, makes me feel like a kid in Tomorrowland wondering when we're going to Mars. Wouldn't it be great, as an engineer, to have production versions of all this great research.

Google engineers do!

The Secret Source of Google's Power

And how Google can offer 1 gigabyte of storage per email user:

A pack of 20 300GB drives can probably be driven down to around US$5000, so, even accounting for minimal expense on RAID, we're looking at roughly US$200 million in hardware costs. Yeah, it's a gross exaggeration, since I've not factored in oversubscribing (which probably shrinks the required disk capacity to 30%) or made a real attempt at estimating other costs rather than the disks themselves - let's say things even themselves out and it can be done at half that (US$100million).

Looks cheap, even for Bill. Expect Hotmail to try to outflank Google.

Gmail

And this is pure speculation, but something to keep in mind:

This page is not meant to be an analysis of Gmail, but while you are at it, please read the privacy page and the terms-of-use page for Gmail. Note that if you delete an email, Google may mark it so that it is invisible to you, but might not really delete it. And if you terminate your account, Google does not guarantee that they will erase your emails. Google decides what to delete and when, not you. It's none of your business.

While Google brags that no humans will read your emails, the entire Gmail program will involve extensive automated profiling of you as an individual. Google will be sharing the non-identifiable portions of your profile with anyone they choose. If the ownership of Google changes, or there is a merger, the entire personally-identifiable profile will be available to the new owners or partners.

Finally, it's all available to government officials all over the world, under whatever legal procedures are used in any particular jurisdiction. It is also available to civil litigants under discovery procedures authorized by a court. When you look at it this way, the one-gigabyte allowance for your email account becomes much less attractive.

Google never deletes anything they collect, as far as we can tell. Think twice before typing in your email address on a Google form.

Google covets your email address

Thursday, April 08, 2004

It works, but mysteriously crashes after a day or so …

A program I'm trying to run (for a small side project) keeps crashing. Well, “crashing” isn't the right term—it technically doesn't crash, but calls exit() when certain errors occur. The error in question happens with the following code:

x = fcntl(fd, F_GETFL, &fl);
if (x < 0)
{
  syslog(LOG_ERR, "fcntl F_GETFL: FD %d: %s", fd, strerror(errno));
  exit(1);
}

and the error in question is:

fcntl F_GETFL: FD -1: Bad file descriptor

It's in a function called set_nonblock() and it pretty much takes a file desriptor (reference to an open file) as a parameter and makes two calls to fcntl() and it's failing with an invalid file descriptor on the first call. So I check the code that calls set_nonblock(); there are only two locations were set_nonblock() is called, and in both cases, the file descriptor is checked before the call to set_nonblock() which means that the file descriptor is being clobbered between the initial test and the call.

Not good.

So I add more logging, and run again (mind you, this is over the course of several days).

I finally get a location:

stp.c:233: failed assertion newsock >= 0

Okay, check the code:

int wait_for_connection(int s)
{
  int                newsock;
  int                len;
  struct sockaddr_in peer;

  ddt(s > -1);

    len = sizeof(struct sockaddr_in);
    newsock = accept(s, (struct sockaddr *) &peer, &len);
    /* dump_sockaddr (peer, len); */
    if (newsock < 0) {
        if (errno != EINTR)
            perror("accept");
    }
    get_hinfo_from_sockaddr(peer, len, client_hostname);
    ddt(newsock >= 0);
    set_nonblock(newsock);
    return (newsock);
}

Line 233 is highlighted, and ddt() (which is a function I wrote) basically checks the condition and if false, logs it (via syslog()) and exits the program. And I see the error. It's subtle, but it's there. The fragment:

newsock = accept(s, (struct sockaddr *) &peer, &len);

if (newsock < 0) {
  if (errno != EINTR)
    perror("accept");
}     

is the culprit.

Under Unix, a system call (like accept()) can be interrupted, and if so, the call fails with an error code of EINTR. Why could a system call be interrupted? Well, say a program creates a child process (which this one does), and that child does its job and exits, then the parent process (which created the child process) is “interrupted” with a message: “your child process has finished.” Normally, if a system call is interrupted, you want to try the system call again, only this code doesn't do that! (although it looks like the author intended to recall accept() but forgot to write that code).

Patch the code:

int wait_for_connection(int s)
{
  int                newsock;
  int                len;
  struct sockaddr_in peer;

  ddt(s > -1);
 
  do
  {
    len     = sizeof(struct sockaddr_in);
    newsock = accept(s,(struct sockaddr *) &peer,&len);
    if (newsock < 0)
    {
      if (errno != EINTR)
      {
        perror("accept");
        return(-1);
      }
    } while (newsock < 0);

    get_hinfo_from_sockaddr(peer,sizeof(struct sockaddr_in),client_hostname);
    set_nonblock(newsock);
    return(newsock);
  }
}

and try again. Hopefully, this (and some other minor cleanup) will fix the problem.


An unexpected visit

We were expecting Marcus later this week—Saturday to be exact. His friend Kat is attending a wedding a wedding in Key West this weekend and due to some misfortune, she couldn't fly (they're both from Texas). So she convinced Marcus to drive to Key West for the wedding, if only to drop off a kitten that Marcus has been threatening to send our way for the past few months (you see, he found himself with four kittens and wanted them to go to good homes, and Spring has been wanting a kitten for some time and … )

We were not expecting him to show up today.

At least we got several hours notice.

He and Kat arrived around 8:30 pm, and something fuzzy was released into the house, causing Spodie to growl and sulk about. I suppose it was the kitten (not quite a kitten anymore) but I've yet to see the thing so who knows.

After shooting the breeze for a bit, Marcus and Kat mentioned they were a little peckish (“Hey Napalm! We're XXXXXXX starving here! Where can we eat?”) Spring and I started mentioning restaurants, but nothing grabbed their attention as much as Brewzzi, a microbrewery in Boca Raton (“Steak? Beer? Hell yes!”).

Much beer (mostly Marcus) was consumed, and much food (in larger-than-Texan sized portions). Topics of conversation ran from Tejano music, to horrible bar jokes to how kids can sleep anywhere (the Older fell asleep on several chairs next to our table).

After dinner, Marcus and Kat drove on to Miami to meet with friends there, where they would then drive to Key West the following day. Spodie is still sulking around the house, and I think we have another cat around here somewhere.

Friday, April 09, 2004

An anonymous text message I received on my cell phone on a Friday evening at 9:31pm

Wuz up girl?


<1754XXXXXXX>
04 / 09 / 04
9:31 PM

I've also yet to see the kitten.

Sunday, April 11, 2004

Is there something going on today?

Somehow I get the feeling that I forgot about something.

Maybe some holiday or something?

In other news, ants ate The Younger's Cracker Jacks. That's my story and I'm sticking to it.

And yes, that fuzzy thing released into the house the other day is indeed a cat. I've finally seen the darned thing, and Spodie is still growling at it, and it's hissing right back at Spodie.

I think they're in love.

Tuesday, April 13, 2004

Obligatory Cat Pictures on a blog

Enough!

Uncle!

I give!

Here are cat pictures of Tula Suriyothai, our new kitten. On a blog.

[That's right Spodie!  I'm taking over here!] [Are you looking at me?] [Vogue] [Yea?  So?] [Worship me!] [The Cyborg Kitty]

Yes. Cliché, I know.

Sorry.

Thursday, April 15, 2004

Beware the Ides of April

Through explicit policies, as well as tax laws never reported in the news, Congress now literally takes money from those making $30,000 to $500,000 per year and funnels it in subtle ways to the super rich—the top 1/100th of 1 percent of Americans.

One 1985 law, promoted in the Senate as relieving middle class Americans, gave a huge tax break to corporate executives who make personal use of company jets. CEOs may now fly to vacations or Saturday golf outings in luxury for a penny a mile. Congress shifted the real cost of about $6 per mile to shareholders, who pay two-thirds, and to taxpayers who suffer the rest of the cost lost as a result of reduced corporate income taxes.

Via Ceejbot, Stroke the rich—IRS has become a subsidy system for super-wealthy Americans—IRS winks at rich deadbeats

Something to think about as you are doing your last minute tax preparations. On the flip side though, about those lear jets:

This paper studies perquisites of major company CEOs, focusing on personal use of company planes. For firms that have disclosed this managerial benefit, average shareholder returns under-perform market benchmarks by more than 4 percent annually, a severe gap far exceeding the costs of resources consumed. Around the date of the initial disclosure, firms' stock prices drop by an average of 2 percent. Regression analysis finds negative associations between CEOs' personal aircraft use and their compensation and percentage ownership, in accord with Jensen-Meckling (1976) and Fama (1980), but both relations have small magnitude.

Via Jason Kottke, Flights of Fancy: Corporate Jets, CEO Perquisites, and Inferior Shareholder Returns

I wonder if we'll be seeing a rise in civil court actions by shareholders? Again, something to think about as you fill out your 2003 Form 1040


Vacation

Even though today is tax day there is one good thing about today—The Kids' father arrives today to take them on vacation.

Thus giving us a vacation.

It will be a quiet week.

Friday, April 16, 2004

Kill Bill

Spring's friend Chris invited us over to watch Kill Bill volume 1 on DVD at her house, then afterwards see Kill Bill volume 2 (the second half of the film) at the movie theater.

I've generally like Quentin Taratino's work so of course I had to watch his latest work. But his work is not for the squeemish. To say that Kill Bill volume 1 is a bit bloody is like saying that Machiavelli is a bit crafty. Starts out with Uma Thurman lying on the floor, bloody, talking to someone who shoots her in the head. Roll starting credits, leaving the audience (well, at least me) going “What the XXXX? Guess the film is about how she ended up being shot.”

First scene. Door bell rings. Woman answers. Uma, on the other side, slams her fist into the woman and it continues from there in a great fight scene.

And yes, it pretty much starts up and doesn't relent at all.

But unlike Reservoir Dogs there are no ear slicing scenes, nor are there faces being blown off like in Pulp Fiction. But there are arms, legs and heads being sliced off with geyser of blood errupting from the body. Blood spraying everywhere. But it's so over the top that it's not as disturbing as it could be.

And the fight sequences. Incredible choreography.

And you learn that she did in fact survive the gun shot to the head and is after the people who attempted to kill her. One after the other. She only gets halfway through the list when volume 1 ends.

Film two opens up with the clip of her getting shot in the head, then her driving towards the final confrontation with Bill. The second film is more sedate then the first; no rivers of blood nor crazed fight orgies; no, you get more of the great Tarantino dialog and a great homage to martial art films of the 70s (including the crazy camera work and music). Not to say that there aren't any fight sequences, but they're more personal, mano a mano as it were.

While lacking the depth of Pulp Fiction or Jackie Brown and the intensity of Reservoir Dogs, they're still fun to watch, and are worth seeing if you are a Tarantino fan, or a fan of martial art films.

Thursday, April 29, 2004

Alive and well on Ganymede

It was a quiet week, and surprisingly, The Kids have been back nearly a week now and it's still quiet. Well, not as quiet as it was when they were off with their father driving through Florida, but still, after a year, the concept of “quiet” seems to have percolated down into their psyche and they are quieter now then they were this time last year.

Woot!

I've also been somewhat busy over the past two weeks. One task I've been working on is a “Getting Started Guide” for Seminole, Mark'a webserver. As Seminole is an embedable webserver, the guide is geared towards programmers who need to link Seminole into a larger project, and as writing assignments go, it is bloody difficult.

The problem I have is that I simply don't want to parrot in English what the demonstration code (which I'm also writing) is doing. I think I rewrote the CGI chapter two or three times and hating each revision, and I'm still not fully satisified with the results, but hey, that chapter is done (for the most part), and besides, what can one say about the following code?

bool DemoCgiHandler::Handle(HttpdRequest *p_req)
{
  assert(p_req != NULL);

  if (IsMe(p_req))
  {
    //-------------------------------------------------------
    // we only accept POST methods in this handler, which is
    // the most common method of handling HTML forms.
    //-------------------------------------------------------

    if (strcmp(p_req->Method(),HttpdUtilities::mPostRequest) != 0)
    {
      p_req->Respond(HTTPD_RESP_METHOD_NOT_ALLOWED);
      return(true);
    }

    //----------------------------------------------------------
    // This call collects the parameters into an array for us
    // to use.  If there is no Content-type passed in, or it's of
    // the wrong type, then HttpdCgiParameter::ParsePostData()
    // will return NULL.
    //----------------------------------------------------------

    HttpdCgiParameter *list = HttpdCgiParameter::ParsePostData(p_req);
    if (list == NULL)
    {
      p_req->Respond(HTTPD_RESP_SRV_ERROR);
      return(true);
    }

    //---------------------------------------------------------
    // We accept three parameters, "name", "title" and "age".
    // We don't do much with the data, other than print it out,
    // but this is the basics of getting CGI data from the client.
    //------------------------------------------------------------

    HttpdDynamicOutput output(p_req,false);
    p_req->Respond(HTTPD_RESP_OK);

    const char *name  = list->Find("name");
    const char *title = list->Find("title");
    const char *age   = list->Find("age");

    output.Header("Content-Type","text/plain");
    output.HeaderComplete();

    output.Body()->Printf(
                           "Name:  %s\r\n"
                           "Title: %s\r\n"
                           "Age:   %s\r\n",
                           name  ? name  : "none given",
                           title ? title : "none given",
                           age   ? age   : "none given"
                         );
    return(true);
  }

  return(false);
}

(I don't think Mark will be too upset for me posting the code here—this is, after all, just a demonstration of how to use Seminole and the code (at least to me) is fairly obvious in what it does).

If the CGI chapter was bad, the template system was even worse. The demo code for that was about the size of the CGI demo, and just as drop dead simple (well, as simple as C++ code can be).

I guess part of the problem is that I'm having a hard time placing myself into the mindset of an embedded programmer (which I'm not) who has to learn how to use Seminole (which I am, mostly by going through the source code to Seminole, and following the few examples written by Mark) and knows C++ (which I'm learning) but might not know how this web stuff works (which I know all too well). So yes, it's kind of hard to get into the right mindset to write this guide.

But I'm forging ahead anyway.

One thing I did learn this week is how to pipe highlighted text from joe (the editor I use) through an external program (and I've been using joe for how long now? I'm not going to bother answering that). What this means is that I can now embed code, highlight it, and run it through a filter to convert certain characters like “<” or “&” into “&lt;” and “&amp;” (which is required since the documentation is in XML) or to indent the block or even (much to Mark's delight) expand tabs to spaces (to Mark, tabs are eeeeeeeeeeeeeeeeeeeeeevil).

Another thing I learned this week—how to hard boil eggs. I've learned that fresh eggs are important to the success of hard boiled eggs.

Friday, April 30, 2004

The death of one and a hundred zeros

Aieeeeeeeeeeeeeeeeee!

It's the beginning of the end!

NEW YORK (CNN/Money)—Google, the world's No. 1 Internet search engine, finally filed for its initial public stock offering Thursday and promised to maintain its long-term focus even though it will soon face the intense scrutiny of Wall Street.

Via Jason Kottke, Google files for its long awaited IPO

I can only hope their plans to keep control from Wall Street work out.

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.