This Space for Rent

Apr 30, 2004

New bug!

In struct tm, tm_mon goes from 0 to 11, but in strftime, the %m flag goes from 1 to 12.


New code!

The Ingredients page wasn't complete without adding in a barcode. So I wrote a little program to generate them for me.

Apr 27, 2004

Babysitting night

Dorkier than thou

New colophon page for pell: List of Ingredients

Apr 25, 2004

Look! An SDP40F!

Or at least the back end of one, stuffed into the pile of engines (Eng!, according to Silas) at the Brooklyn roundhouse.

The last picture I've got of a SDP40F was taken a while ago, when Amtrak was still running them on their passenger trains:

And, to my intense dismay, it appears that the Maersk unit is not a SDP40F, it's the only SDP40F, and the only reason it's around is that the people who saved the F40PH that's parked at the Brooklyn roundhouse (and some associated people) kept pestering BN/SF to sell them an engine even after the railroad decided that, no, it wouldn't be prudent to allow people to preserve one of them.)

Archive page generation

Now works (bbs-reindex -a) and found a buglet; I need a way to regenerate all of the archive YY/MM/index.html pages, but I don't have the reindex code to do it. -f(ull) should also reindex all the monthly archive pages.

Perhaps I should consider documenting this code?

Just for a change. you understand. I'd not want to make it a habit, you know.

I also need to write the routine to do the end of month generation of the archive pages and, maybe, tweak the indexer so I can put <-[next article] [previous article]-> links on article pages.

Oh, look, it's gotten confused about blockquotes vs. P. Nope, that was a stupid coding mistake on my part.

1 comment

Apr 24, 2004

The CSSification of (almost) everything is done

New look for the webpages (up to and almost including the PV&T webpages, which are a far scarier thing to tweak with because I want them to look like they date from the 1960s.

The new look is all done by cascading style sheets, and all of the formatting tables are gone. The only place where they don't seem to be working out yet is here; there's something in the CSS support of IE that doesn't like to resize images to fix max-width: constraints, and that seems to gum up the rendering of the various title elements. Plus, if the screen gets too narrow, the bookmarks vanish to points south. I might be able to fix that by doing explicit widths of the bookmarks, leaving the content (for lack of a better word) to float off to the right.


And, of course, it's a real pain in the ass to get a two column display (like, uh, this one) to work properly. Wide images (like the retired streetcar) toss a huge bloody axe into the works of the layout, causing it to render in a whole bunch of interesting ways (none of which actually work). So I've had to drop in a pretty kludged up layout that uses g-ddamn pixel alignment to fit. Bleah. Perhaps it's time to drag out a table for alignment.

Looking at the final result inside Netscape 4 is, um, not quite as pleasing as IE 6 and Phoenix .8

Apr 19, 2004

Test with an image.


I’ll put in a placeholder so I can attempt to comment on it.

At least I'll get to see how the comment function explodes.

Or not, as the case might be.


Test another one.

To see if I can do more than one comment per message.


Apr 18, 2004

Rip out the guts and redo the whole message thing

each message is now 4 files:

  • message.ctl (header information)
  • message.txt (htmlized body)
  • comments.txt (htmlized comments)
  • index.html (body+comments, wrapped up in theme)

Does edit still work?

1 comment

Apr 16, 2004


If I'm ever frogmarched out of my office and hurdled into the street, it's because my Corporate Masters saw the source code to my weblog program. It's so horrible that it makes theme (not the best written code on the planet) look like it sprung fully-formed from Knuth's forehead.

Apr 15, 2004

Running headlong into the ahem more broken parts of the weblog design.

I need to embed paths so I can put up [edit], [post], and [comment] buttons. What I REALLY need is to generate three different copies of the html;

  • 1 copy which is the toppage, with a [comment] button.
  • 1 copy which is the post page, with a [post] button at the top and [edit] and [comment] buttons by each page.
  • 1 copy which is in the archive, with a [read comments] button.

So reindex will need to be patched to not write out a whole html file for theming, but to write out a half-baked file that I can then substitute in for the buttons as needed.

And I really need a [edit] button so I can fix dumb errors in a post.

And I should really write a Bl*gg*r compatable xml interface so all the point and drool weblog clients can post and save me from more user interfaces.

The bookmarks are now a table-free zone.

I modified mkbookmarks so that it doesn't use tables anymore, because the old hybrid table + floating index page wasn't getting along too well with IE6 in that it would always return to the top of the page when I backed out of a link. So I tweaked it; my bookmarks are now, on browsers that support CSS (and if the browser window is wide enough), a nice three-column index with garish yellow headers and a dotted line between each row.

My signature line on that page has also been CSSified and doesn't include any table goop. It's a little more readable than the signature line that used tables, but it's probably hopelessly confusing if you don't know about CSS.

Oh, and the W3C validator does not like the bookmarks page one bit. Oh well.

Apr 14, 2004

The new Seattle monorail people are idiots.

Alweg put a demonstration monorail line along fifth Avenue in Seattle for the 1962 worlds fair, and it's been running from downtown Seattle up to the fairgrounds ever since. The monorail loonies have been pushing to put in a bigger monorail system in Seattle ever since (a good idea) and have finally got a plan, money (that's not ripped off from the so-called light rail system that's allegedly being built), and city approval of the route. And they're going to include the demonstration line!

Well, no. They're going to run their line down Fifth Avenue, and it's going to be a straddle-beam monorail, but it's not going to use the same beam design so they're going to scrap the existing monorail line and replace it with brand new track that the Alweg cars can't run on.

Now that's a compelling argument for putting in monorails. Rip out something of some historic significance, something that works and that has been working safely for 40 years, and replace it with some incompatable modern crap that won't allow the old vehicles to even use it.

Idiots. They're all idiots.

Update: Yes, I know that some trolley lines in the United States started off their construction by ripping out perfectly good railroad track and then putting their own track down where it used to be (I'm looking at you, Los Angeles), but you can run old streetcars on this track without any trouble (except the occasional pothole-like jar as the tramway profile wheels bounce in and out of flangeways. But in Portland, where we've got a multitude of new streetcar lines, we've also got 3 new wooden trolleys that are running on PCC trucks that were used to move 6000-class EL cars from place to place in Chicago. But they don't look like Disney toy cars, so I can understand why nobody would like them.)


I still can't think of a good way to do the privileged interface to the weblog. The best way I can think of so far is to put magic cookies into the index page and have a cgi script in post that expands them to little [post] [update] [delete] buttons.

But instead of that, I've been tweaking on the POSTOFFICE program. I found a bug in the local delivery code that would not go back to being root if it failed while opening the mailbox (I found this while trying to put in code that detects if a file is actually a symlink (executive summary; no, it's not easy. If I fstat() a fileno(), it's already skipped over the symlink and is pointing at the actual file. I'm not really sure what's the best way to beat up on this problem is, so I'll just have to stick with the current security policy of refusing to write to any files except /var/spool/mail/root if I'm root.

I've also added a goodness() function to POSTOFFICE so I can have a crude indication of how ill-behaved a SMTP client is. It keeps a little list of how bad or good a client is (successful mail is GOOD, unsuccessful mail is BAD, repeated attempts to send mail to bogus recipients (or mail from: someone while they're in the greylist) is BAD, and if you're bad enough, you get ipfwed away until tomorrow.

Be that as it may, I don't want to forget the ob railroad picture:

Taken on Sunday while we drove by the NW Portland BN yard on the way back from St Johns.

Apr 11, 2004

A UP engine going east along Columbia Blvd.

Egg drops

Easter time, aka the spring festival of tooth decay. Everyone else trots off to the park while I stay at home and "hide" eggs, then dig out an ancient Nikon Coolpix 100 to photograph the scene of the crime.

Baby picture of the day.

Speaking of the weblog software…

... Don't forget to write the reindex program, so I can clean up after horrible coding and html errors by simply washing the evidence away.

And, of course, the weblog software needs more work.

Aside from the obvious things of comments, a nice little screen of things that a special user can do (other than post by typing in the url to the post program) and the documentation, I need to modify the simple stupider than a rock defaults so that articles all live in the same-width boxes.

New code!

I’ve published a new version of postoffice; 1.0.2, which is running on pell, has reached the state of being edible dogfood. I’ve tweaked and hacked the greylist code until it’s gotten to the point of being too annoying for a lot of spam but no so annoying that it won’t accept real mail, I’ve added in auditing code so you can see, in more detail than you want to know, that, yes, you’re getting approximately 500 dictionary attacks, attempted virus deliveries, and pieces of spam per single real mail message.

A railroad picture to start with.

It's more impressive fullsized but this is already big enough.


Obéir c'est trahir, Désobéir c'est servir