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.

Sunday, October 14, 2018

Tumbling through code, part III

I was going through my logs (I've been vacation for the past two weeks) and I noticed a few crashes of mod_blog. It was easy enough to determine that a call to assert() was the culpret (the clue is highlighted):

CRASH(32421/000): pid=32421 signal='Aborted'
CRASH(32421/001): reason='Unspecified/untranslated error'
CRASH(32421/002): CS=B7EA0073 DS=007B ES=007B FS=0000 GS=0033
CRASH(32421/003): EIP=B7FE87A2 EFL=00000246 ESP=BFF9AE28 EBP=BFF9AE3C ESI=00007EA5 EDI=B7FAFFF4
CRASH(32421/004): EAX=00000000 EBX=00007EA5 ECX=00007EA5 EDX=00000006
CRASH(32421/005): UESP=BFF9AE28 TRAPNO=00000000 ERR=00000000
CRASH(32421/006): STACK DUMP
CRASH(32421/007):        BFF9AE28:  A5 07 EB B7 00 00 00 00 F4 FF FA B7 00 00 00 00
CRASH(32421/008):        BFF9AE38:  C0 86 E8 B7 6C AF F9 BF 09 22 EB B7 06 00 00 00
CRASH(32421/009):        BFF9AE48:  50 AE F9 BF 00 00 00 00 20 00 00 00 00 00 00 00
CRASH(32421/010):        BFF9AE58:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/011):        BFF9AE68:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/012):        BFF9AE78:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/013):        BFF9AE88:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/014):        BFF9AE98:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/015):        BFF9AEA8:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/016):        BFF9AEB8:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CRASH(32421/017):        BFF9AEC8:  00 00 00 00 00 00 00 00 C7 04 FB B7 C8 04 FB B7
CRASH(32421/018):        BFF9AED8:  F4 FF FA B7 C7 04 FB B7 80 04 FB B7 08 AF F9 BF
CRASH(32421/019):        BFF9AEE8:  28 85 CA 08 F4 FF FA B7 9F 70 EE B7 02 00 00 00
CRASH(32421/020):        BFF9AEF8:  C8 78 CA 08 4C 00 00 00 C8 78 CA 08 4C 00 00 00
CRASH(32421/021):        BFF9AF08:  44 AF F9 BF EC 72 EE B7 80 04 FB B7 C8 78 CA 08
CRASH(32421/022):        BFF9AF18:  4C 00 00 00 27 00 00 00 C7 04 FB B7 00 00 00 00
CRASH(32421/024):        /home/spc/web/sites/[0x805ccf0]
CRASH(32421/025):        /home/spc/web/sites/[0x805d46b]
CRASH(32421/026):        /lib/tls/[0xb7eb0890]
CRASH(32421/027):        /lib/tls/[0xb7eb2209]
CRASH(32421/028):        /lib/tls/[0xb7ea9d91]
CRASH(32421/029):        /home/spc/web/sites/[0x80595a2]
CRASH(32421/030):        /home/spc/web/sites/[0x805aa5a]
CRASH(32421/031):        /home/spc/web/sites/[0x8057f19]
CRASH(32421/032):        /home/spc/web/sites/[0x8057c1a]
CRASH(32421/033):        /home/spc/web/sites/[0x804cb8d]
CRASH(32421/034):        /lib/tls/[0xb7e9dde3]
CRASH(32421/035):        /home/spc/web/sites/[0x804ca6d]
CRASH(32421/037):        /home/spc/web/sites/
CRASH(32421/039):        REDIRECT_STATUS=200
CRASH(32421/040):        BLOG_CONFIG=/home/spc/web/sites/
CRASH(32421/043):        HTTP_CONNECTION=Keep-Alive
CRASH(32421/044):        HTTP_USER_AGENT=The Knowledge AI
CRASH(32421/045):        HTTP_ACCEPT_ENCODING=gzip,deflate
CRASH(32421/046):        PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
CRASH(32421/047):        SERVER_SIGNATURE=<address>Apache/2.0.52 (CentOS) Server at Port 80</address> 
CRASH(32421/048):        SERVER_SOFTWARE=Apache/2.0.52 (CentOS)
CRASH(32421/050):        SERVER_ADDR=
CRASH(32421/051):        SERVER_PORT=80
CRASH(32421/052):        REMOTE_ADDR=
CRASH(32421/053):        DOCUMENT_ROOT=/home/spc/web/sites/
CRASH(32421/055):        SCRIPT_FILENAME=/home/spc/web/sites/
CRASH(32421/056):        REMOTE_PORT=36622
CRASH(32421/057):        REDIRECT_URL=/2015/04-2015/
CRASH(32421/058):        GATEWAY_INTERFACE=CGI/1.1
CRASH(32421/059):        SERVER_PROTOCOL=HTTP/1.1
CRASH(32421/060):        REQUEST_METHOD=GET
CRASH(32421/061):        QUERY_STRING=
CRASH(32421/062):        REQUEST_URI=/2015/04-2015/
CRASH(32421/063):        SCRIPT_NAME=/boston.cgi
CRASH(32421/064):        PATH_INFO=/2015/04-2015/
CRASH(32421/065):        PATH_TRANSLATED=/home/spc/web/sites/
CRASH(32421/066): DONE

The hard part was trying to figure out which of the three calls to assert() was being triggered. Fortunately, there was enough information logged to reproduce the error (for the record, it was assert(month < 13)). Unfortunately, it has to do with the tumbler parsing code.

One of the unique features of mod_blog is the “entry addressing scheme,” where you can address not only a single entry like 2018/10/14.1 but a range of entries like 2000/08/10.2-15.5. In fact, the same code internally changes a reference like 2018/09 to 2018/09/11.1-09/30.1 (the first and last entry in the given month; it also works for days and years). When I wrote the code, I had in mind a way of it working and the bug here is in my inattention to details in checking what I've received.

The code in question, when it sees a request in the form of “number / number - number” is to assume that the number after the literal “-” is a month and not a year. “The Knowledge AI” program was making a request of 2015/04-2015, and max_monthday() was being given an invalid month, thus the assert(month < 13) being false and triggering a crash. That I can fix.

But I do question the programming of the “The Knowledge AI” crawler. I don't have any links in that form, and I'm not aware of any links on other pages of that form (in fact, that particular feature of entry addressing is not used that often, even by me) so I have to wonder how it got a link like that? Does it try randomly generating links to see what it gets? A bug in their code? It's inexplicable.

Saturday, October 13, 2018

Extreme general interest reading, Brevard edition

The photos I present of Brevard are the ones I tend to find whimsical or surreal, and when not repeating myself, I hope I have done a good job. It's not everyday that one comes across a bear wearing a hat:

[Remember, only you can prevent forest rangers.  Only you.]

I decided against posting that one because, let's be frank, when you come across a bear wearing a wig and a dress, a hat-wearing bear just doesn't cut it anymore, you know?

But during this trip, I took a photo that was so out there, that I hesitated to post it. Mind you, I don't go that much out of my way when I take these pictures—I see these weird and (usually) wonderful things as I'm out and about and take a picture.

It's with this in mind that I found myself in a grocery store in Brevard. I'm not going to name names but be aware that there are at least three different grocery store companies operating in Brevard. So I'm in this grocery store when I come across … well … this:

[Seriously, this blew my mind.  Um ... pun unintended.]

If you click on the picture, you'll see what this grocery store thinks passes for “General Interest” magazine reading in this part of the country. Had this section been labeled “Hunting” I would have just walked on by without a second thought.

But “General Interest?”

This may be the most surreal picture I took on any trip to Brevard, cross-dressing bear included (even if it's a female bear, I would still consider it “cross-dressing” as it's wearing clothing not native to its species). In fact, I find the cross-dressing bear less disturbing because at least it was an intentional Hallowe'en display. The “General Interest” reading rack? If that's intentional, I'm not sure what it says about the grocery store or the area. And if it's unintentional … I … I'm still not sure what that says about the grocery store or the area.

There and back again

Friday was an absolutely beautiful day to drive—clear blue skies as far as the eye could see. Bunny and I checked out of the hotel at 11:00 AM and started the drive to WNC Farmers Market to pick up some fresh produce before driving home. The WNC Farmers Market is right off I-26 so it wasn't like we were going that far out of our way.

Only the traffic to the WNC Farmers Market was slow. Man, it took us much longer to get there than expected, and then we had to muck about with finding an ATM because some of the farmers at the WNC Farmers Market don't accept plastic. So there was some time lost there. Soon after that, we started the drive home.

The first 19 miles took us well over an hour to drive. For some reason we never were keen to, half of I-26 Eastbound was blocked off between Asheville and Hendersonville. It was a portent of things to come.

Our fantastic time of 11½ hours to Brevard was countered by our worst time of 13½ hours from Brevard. Traffic along I-26 was horrendous as much as the weather was wonderful. But we made it back and now we recuperate from our vacation.

Thursday, October 11, 2018

I've got to start thinking about what to write for the upcoming NaNoGenMo

AI-generated language shows more of Nakawaza's machine aesthetic. US internet artist Darius Kozemi launched the annual NaNoGenMo contest in 2013 – instead of writing a novel during November (NaNoWriMo) entries of 50,000 words have to be generated by a program. "What I want to see is code that produces alien novels that astound us with their sheer alien-ness," he has said. "Computers writing novels for computers, in a sense."

Past entries include The Psychotherapy of Racter or The Descent into Madness of Dr Eliza, in which two chatbots asked each other questions. Dial "S" for Sudoku's 50,000 words told of "Alice" solving eight Sudoku puzzles at length plus excerpts from her dream diary.

Artificial still life: Artist Robert Todonai programs robot to paint an original |

My “novel” of 2015's NaNoGenMo The Psychotherapy of Racter or The Descent into Madness of Dr Eliza was mentioned in The Financial Review. I'm thinking only because of the name, because I certainly didn't finish it.

And this reminds me, I have to think up an idea for this years NaNoGenMo …

Extreme phones, Brevard edition

Because of the extra day in Brevard (and the rain, oh it's been raining all day today!) here's another picture from Mantiques:

[For the average user, this is just as easy to use as the VMS command line.]

It doesn't quite seem as elegant as the classical TARDIS console.

Wednesday, October 10, 2018

Guess who's blowing past us?

Hurricane Michael did not hit Chez Boca (it skipped Lower Sheol entirely) and it's not expected to hit us here in Brevard and yet, it is already affecting our trip.

We were planning on leaving tomorrow, but tomorrow, Hurriane Michael will be Tropical Storm Michael and will be moving over the very area we would be driving through.

Bunny and I do not want to drive through a Tropical Storm.


So we've extended our stay here in Brevard by one day. On the down side, we can't extend our stay at the The Red House Inn as our room is already booked for the next guest, which saddens me because I am so going to miss siting on this porch.

“It has a slight kick to it”

For the past few months, each time Bunny and I have gone to a Buffalo Wing joint, I had decided to try the hottest sauce available just to see how hot they were. Despite having names like “Ghost Habanero Death Flame” or “Last Rights Hot Sauce” about the best I could say was “it has a slight kick.”

But today Bunny and I tried Zaxby's, a chain Buffalo Wing joint that hasn't quite made it down to Chez Boca. As is my wont, I decided to try their hottest sauce, “Insanity.” Our order taker actually said “Good choice!” when I picked it.


I don't think I've ever had my eyes water like that. It wasn't so hot (for me) as to be impossible to eat, but it had a strong hum of heat that came close to being impossible to eat.

What a nice surprise for a change.

Extreme TARDIS, Brevard edition

In downtown Brevard there's a store called Mantiques:

[This isn't any antique store, this is a MANtique store! Aaaaaaarrrrrrh!]

And in the store they had something I'd thought I'd never see—a TARDIS!

[This one must be using the  Victorian control room. I wonder if Tom Baker is near by?]

Sure, it may look like a call box, but I know better.

Tuesday, October 09, 2018

Extreme wait times, Brevard edition

While walking to downtown Brevard for lunch, we passed by Marco Trattoria. It seems to be a popular place for lunch, given the long wait for a table:

[“Um ... hello? Is there a table ready yet? I'm a bit parched.”]

Monday, October 08, 2018

Extreme swings, Brevard edition

[My uncle placed me on a bicycle with no training wheels and shoved hard. On one side a yard filled with divots. On the other side a busy four lane road. I learned to ride a bike in three days out of self defense. A swing next to a major road does not phase me. In fact, I think that this would build character.]

Sunday, October 07, 2018

Gah! I'm repeating myself!

That picture of the large white squirrel I took Tuesday? Yeah, that's the same white squirrel I took Thursday last year. I can't believe I'm repeating myself!


Extreme benches, Brevard edition

[This is one special snowflake of a bench.]

Obligatory Picture

[It's a study in contrasts—digital camera contrasts]

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:, then add the date you are interested in, say 2000/08/01, so that would make the final URL:

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-2018 by Sean Conner. All Rights Reserved.