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.

Tuesday, April 08, 2014

Right now, it would take you about 5 seconds to start screaming in terror

So I'm checking my iPhone™ at 2:20 PM when I notice that the weather is hot and windy, and oh, it will take me approximately twenty-three minutes to drive home if I so choose.

[It's also going to scare the bejesus out of me later on tonight]

I'm not sure how I feel about this. I mean, aside from the fact that my phone is subliminally telling me I should leave work, how does it know where I live?

Wednesday, April 09, 2014

I for one welcome our new silicon overlords

I was curious enough to check before driving to the office:

[Rod Serling is behind this, I know it!]

It knows!

Saturday, April 19, 2014

You too can be a patron of the arts.

I would probably be remiss if I didn't mention the chance that Sean Hoade is giving you, yes you, to become a benevolent benefactor of a starving artist, namely, Sean Hoade himself.

His Elevated Personage put out a question on Facebook the other day, asking if anyone would be interested in helping a poor boy survive long enough to write his next book on the 10-book contract while he waits on word back from 107,642 applications he has sent in to various unsuspecting suckers potential employers. This “job” that he is trying to get would be to take him to the beginning of Q2 of 2015, when the royalties should start flowing like extremely inexpensive “wine drink” since the first and possibly the second books will have been released in Q1.

Help keep a writer alive while he writes a Lovecraftian epic! | Indiegogo

Remember, just a few pennies a day could help feed a starving artist in Las Vegas as he plumbs the eldritch horrors to craft his C'thululian writings.

And now a song from troubador and heartstring-puller Sarah … McLachlan play it while you decide on what amount to donate. … While she sings, imagine me begging for someone to adopt me … I’m almost housebroken … Won’t you … REMEMBER ME? sniff!

Help keep a writer alive while he writes a Lovecraftian epic! | Indiegogo

I mean, really! Can you turn him down?

[Who's a good boy?  Who's a good boy?  Yes,YOU'RE a good boy! Here's some money!]

So please, donate. Even just a few dollars could really make a difference in his life. And keep the C'thululian horrors at bay.

Update Monday, April 21st, 2014 in the mid-afternoon.

Hoade had second thoughts.

Update at 2:49 AM, Wednesday, April 23rd, 2014

Hoade had third thoughts.

Tuesday, April 22, 2014

The Computer Is Your Friend, Citizen!

I'm sitting in the Ft. Lauderdale Office of the Corporation, using the Lookout email client when it throws up this obnoxious message that my pasword expires in thirteen days.

Your password will expire in 13 days! Please hurry up and change it now! Now! Change it! CHANGE IT! You don't want to be caught with an expired password two weeks from now? Do you? Then what? You'll be without email, that's what! And guess what? To change your email password requires sending an email! But you can't! Because your password expired! Even though it won't expire for two weeks, I'll remind you every ten minutes to change it, because … well … XXXXXXX CHANGE IT ALREADY!

Okay, so it's not quite that obnoxious, but still, I find it annoying that it'll remind me several times a day that my password will expire. And the thing is—we have a 90-day expiration date for email passwords. Only it's not really 90 days, but 77 days if you don't want to look at the obnoxious “UPDATE ME” message.


I used to ignore it until a three days or so when this policy was first mandated, but now, I just give in and change my password when the computer wants me to change my password. I'm not in charge here, the computer is. Or rather, the Lookout server is in charge. Me? I just rotate through the same X passwords because coming up with a new password that meets the minimum standards of:

Minimum of six characters, but a maximum of five characters, all of which must be unique, at least seven of them must be alphabetic in nature, two must be numbers, and at least as many punctuation characters as there are vowels used, unless you used no vowels, then the maximum number must be no greater than the number of numbers used minus upper case characters.

Yeah, I just came up with X passwords that pass muster, wrote them down on a piece of paper (which if I'm caught with by Corporate Security results in no less than five hours spent in front of a “web seminiar” on “Computer Security And You! The Top Ten Things You Must Do To Ensure a Happy And Secure Computer.”


Yes, this bothers me just as much as that little number in the upper corner of the App Store icon on my iPhone, reminding me, taunting me, that I haven't updated in the last twenty minutes.

And here I thought computers were to serve our needs …

Stupid MyPlusFaceSpaceGoogleBook

First it was the death of my Stupid Twitter Trick, and now, three years later, the MyPlusFaceSpaceGoogleBook interface is kaput.


Now to figure out what got borked.

Update a few minutes later

Okay, my server doesn't like the secure certificate that MyPlusFaceSpaceGoogleBook is presenting.

Stupid MyPlusFaceSpaceGoogleBook, part ][

The error I was getting from libcurl (which I use to inform MyPlusFaceSpaceGoogleBook I've updated this blog) was:

curl_easy_perform(AUTH) = problem with the SSL CA cert (path? access rights?)

Okay, so there is some certificate authority that OpenSSL doesn't like now (probably because of the heartbleed bug which didn't affect my server since I'm running a pre-heartbleed-bug-enabled version of OpenSSL). Curious as to where this information was stashed, I ran strace on mod_blog and found a list of certificate authories in /usr/share/ssl/certs/ca-bundle.crt (you can tell I'm well versed in this stuff if I'm resorting to debugging tools to locate this information).

So it looked like it was time to update that file. Well, seeing how OpenSSL was written by monkeys (no, really), the current format for ca-bundle.crt is now vastly different from the format I'm using for ca-bundle.crt, enough to cause this:

CRASH(20409/000): pid=20409 signal='Segmentation fault'
CRASH(20409/001): reason='Address not mapped for object'
CRASH(20409/002): address=0x9
CRASH(20409/003): CS=0073 DS=007B ES=007B FS=0000 GS=0033
CRASH(20409/004): EIP=00BE42BC EFL=00010246 ESP=BFEE7608 EBP=BFEE7628 ESI=08430EB8 EDI=00000000
CRASH(20409/005): EAX=B7F006C0 EBX=00CBBFF4 ECX=00000068 EDX=00000001
CRASH(20409/006): UESP=BFEE7608 TRAPNO=0000000E ERR=00000004
CRASH(20409/007): STACK DUMP
CRASH(20409/008):        BFEE7608:                         00 00 00 00 00 00 00 00 
CRASH(20409/009):        BFEE7610: B8 6A 46 08 C0 06 F0 B7 68 00 00 00 F4 B2 19 00 
CRASH(20409/010):        BFEE7620: C8 6A 42 08 68 00 00 00 58 76 EE BF BC B6 17 00 
CRASH(20409/011):        BFEE7630: 65 6F 42 08 01 00 00 00 68 00 00 00 B8 0E 43 08 
CRASH(20409/012):        BFEE7640: B7 6A 46 08 00 00 00 00 57 B6 17 00 F4 B2 19 00 
CRASH(20409/013):        BFEE7650: C8 6A 42 08 68 F1 42 08 F8 76 EE BF 0D DC 18 00 
CRASH(20409/014):        BFEE7660: C8 6A 42 08 01 00 00 00 65 6F 42 08 68 00 00 00 
CRASH(20409/015):        BFEE7670: 14 F3 42 08 00 00 00 00 68 00 00 00 00 00 00 00 
CRASH(20409/016):        BFEE7680: C8 6A 42 08 C8 6A 42 08 00 00 00 00 00 00 00 00 
CRASH(20409/017):        BFEE7690: 67 43 57 53 A9 6A 46 08 63 6F 42 08 E4 76 EE BF 
CRASH(20409/018):        BFEE76A0: A8 76 EE BF 00 00 00 00 2D 21 C5 00 1F 00 00 00 
CRASH(20409/019):        BFEE76B0: 63 6F 42 08 02 00 00 00 02 00 00 00 D9 47 19 00 
CRASH(20409/020):        BFEE76C0: 01 00 00 00 01 00 00 00 00 00 00 00 C8 6A 42 08 
CRASH(20409/021):        BFEE76D0: C4 F2 42 08 01 00 01 00 F8 76 EE BF 28 E1 18 00 
CRASH(20409/022):        BFEE76E0: 01 00 00 00 68 00 00 00 18 C3 18 00 F4 B2 19 00 
CRASH(20409/023):        BFEE76F0: 68 F1 42 08 C4 F2 42 08 38 77 EE BF AF ED 18 00 
CRASH(20409/024):        BFEE7700: 68 F1 42 08 27 77 EE BF                         
CRASH(20409/026):        ./build/boston[0x805d7b8]
CRASH(20409/027):        ./build/boston[0x805df94]
CRASH(20409/028):        /lib/tls/[0xbb79b0]
CRASH(20409/029):        /usr/lib/[0x17b6bc]
CRASH(20409/030):        /usr/lib/[0x18dc0d]
CRASH(20409/031):        /usr/lib/[0x18edaf]
CRASH(20409/032):        /usr/lib/[0x18f242]
CRASH(20409/033):        ./build/boston(notify_facebook+0x39c)[0x805a000]
CRASH(20409/034):        ./build/boston[0x8050745]
CRASH(20409/035):        ./build/boston(main_cli+0x1cc)[0x80505f4]
CRASH(20409/036):        ./build/boston(main+0x147)[0x805243f]
CRASH(20409/037):        /lib/tls/[0xba4e93]
CRASH(20409/038):        ./build/boston[0x804ce15]
CRASH(20409/040):        ./build/boston
CRASH(20409/041):        --config
CRASH(20409/043):        --cmd
CRASH(20409/044):        NEW
CRASH(20409/045):        --update
CRASH(20409/046):        NEW
CRASH(20409/047):        --file
CRASH(20409/048):        /tmp/e
CRASH(20409/050):        [redacted]

Woot! Way to go, OpenSSL!

So updating ca-bundle.crt is a “No go!”

The next option?

curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0); /* in other words, no validation */

It's not like what I post on the Internet is private. And there are no errors nor crashes. Hopefully, this is enough to fix the issue.

Update a few seconds later

Nope. No error. But no MyPlusFaceSpaceGoogleBook update. Grrrrrr …

Update at 2:06 AM, Wednesday, April 23rd, 2014

Okay, I stupidly removed the code that sent the authenticated token from MyPlusFaceSpaceGoogleBook back to MyPlusFaceSpaceGoodBook. All is right with the world now.

Wednesday, April 23, 2014

You too can be a patron of the arts, take II

I would probably be remiss if I didn't mention the chance that Sean Hoade is giving you, yes you, to become a benevolent benefactor of a starving artist, namely, Sean Hoade himself.

I'm a starving writer, yet a bit overweight. But that's just from eating cheap food and also to fill the emptiness of my being while I struggle to get TEN books finished for my publisher over the next THREE years. Have a look at my video, won't you? This is going to be a great project, and I would really appreciate—and will reward with sanity-shattering surprises— your support!

Support Sean Hoade creating Nine novels

Remember, just a few pennies a day could help feed a starving artist in Las Vegas as he plumbs the eldritch horrors to craft his C'thululian writings.

I mean, really! Can you turn him down?

[The book, the beard, the fez. The Hoade]

So please, patronize him. Even just a few dollars could really make a difference in his life. And keep the C'thululian horrors at bay.

Friday, April 25, 2014

It's never Lupus.

Both my iPhone and iPad were taunting me. “There's an update! Update us! Update your precious! Preeeeeecious … ”

Why yes, I am a slave to the machine.

I downloaded and install the latest iOS for both—7.1.1. Two hours later, both devices were running the latest and greatest.

Only the wireless net-work-ing … was … … very … … … s … l … … o … … ‥ … w. Like 300 baud slow. Maybe 110 baud.

Did I mention it was slow?

I did a bunch of searches, using terms like “iOS 7.1.1 slow” and “iOS 7.1.1 sucks” and “why the XXXX is iOS 7.1.1 so XXXXXXX slow?” and most of the answers (when I could find them—there were very few incidents reported) were variations on “shut down all running apps,” “disallow background upgrading,” “disable location services,” to “restore factory settings, then restore from backup. That's the only way to make sure.”


Shut down all apps—wireless networking still slow.

Disallowed background upgrading—wireless networking still slow.

Disabled location services—wireless networking still slow.


An hour to restore factory settings and reload everything back onto the iPhone and iPad. Wireless networking still slow.


It was then that Bunny came in. I got her up to speed, and she asked if it could be the wireless router. “Well, in theory it could be, but what ever happened would have had to happen in the past day or two,” I said.

“Because my Mac laptop is slow,” she said.

“Oh really?” I asked.

“Really.” The wireless networking on her Mac laptop was slow. “It's been that way for some time now,” Bunny said. “And I haven't upgraded any time recently.”

Yup. Slow. I shut down all the running programs (she tends to leave email and a browser running all the time). Still slow. Okay, I plugged in a network cable and the networking afterburners kicked in, bits flying around so fast the sonic booms were deafening.

So it definitely was something with the wireless router. It's been sitting there on a shelf for a year or two, just doing its thing. So, operating under the assumption that it hadn't changed, but something else in the environment did. A quick scan showed a new wireless access point nearby—perhaps interference?

A quick aside: all wireless routers can transmit on 11 different channels, and by default, they are all configured to broadcast on channel 6. My wireless router was broadcasting on channel 6.

Hmm … change the broadcast channel. Bunny's Mac is now fast.

That couldn't … no … couldn't be it, could it?

iPhone, fast.

iPad, fast.

Well. There it is.

Saturday, April 26, 2014

Just because there's a standard doesn't mean it's consistent

I came across this URL today that has some base64 encoded data in it. Curious as to what it might be, I tossed the data into a base64 decoder only to have it reject the data as bad.

Okay. It certainly looks like base64 encoded data. But the data doesn't match the RFC-2045 specification. Don't tell me there's more than one … oh for heaven's sake! Really? Thirteen variations?

Standards! There are so many to choose from!

An unexpected feature

As I was writing the link to RFC-2045 in the previous post, an idea suddenly struck me—why should I have to type out the entire URL? I already have a shortcut to link to Amazon (all I have to do is write a link like <a href="asin:B00BWQW73E"> and mod_blog converts it to <a class="book" href="">) so it shouldn't be that hard to add.

I was fully expecting it to take maybe fifteen minutes or so to add the code, but to my surprise, no code change was required! The configuration file has this bit:

affiliate =
    proto = "asin",
    link  = ""

It was originally intended for affiliate links, but it'll work for this as well. A slight modification:

affiliate =
    proto = "asin",
    link  = ""
    proto = "rfc",
    link  = ""

Now all I have to do is write <a href="rfc:2045"> and mod_blog will convert it to <a href="">. I love it when stuff like this happens.

Beware typosquatting

When I initially added the links to the IETF RFC database I made a typo. Instead of linking to “I-E-T-F dot O-R-G” I instead typed it as “I-E-F-T dot O-R-G” and … wow. Easily a dozen redirects, probably half a dozen attempts to infect my computer and landing on some company website I never heard of hawking seminars to help you pass Cisco training and certificaitons.


Obligatory Picture

[The future's so bright, I gotta wear shades]

Obligatory Contact Info

Obligatory Feeds

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