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.
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:
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?
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.
Update at 2:49 AM, Wednesday, April 23rd, 2014
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.
Gaaaah!
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.”
Sigh.
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.
Sigh.
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/025): STACK TRACE
CRASH(20409/026): ./build/boston[0x805d7b8]
CRASH(20409/027): ./build/boston[0x805df94]
CRASH(20409/028): /lib/tls/libc.so.6[0xbb79b0]
CRASH(20409/029): /usr/lib/libcurl.so.3(Curl_client_write+0x70)[0x17b6bc]
CRASH(20409/030): /usr/lib/libcurl.so.3(Curl_readwrite+0x1905)[0x18dc0d]
CRASH(20409/031): /usr/lib/libcurl.so.3(Curl_perform+0x2b3)[0x18edaf]
CRASH(20409/032): /usr/lib/libcurl.so.3(curl_easy_perform+0x3d)[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/libc.so.6(__libc_start_main+0xd3)[0xba4e93]
CRASH(20409/038): ./build/boston[0x804ce15]
CRASH(20409/039): COMMAND LINE
CRASH(20409/040): ./build/boston
CRASH(20409/041): --config
CRASH(20409/042): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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/049): ENVIRONMENT
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?
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.”
Okay.
Shut down all apps—wireless networking still slow.
Disallowed background upgrading—wireless networking still slow.
Disabled location services—wireless networking still slow.
Sigh.
An hour to restore factory settings and reload everything back onto the iPhone and iPad. Wireless networking still slow.
XXXX!
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="http://www.amazon.com/exec/obidos/ASIN/B00BWQW73E/conmanlaborat-20">
)
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 = "http://www.amazon.com/exec/obidos/ASIN/%s/conmanlaborat-20" } }
It was originally intended for affiliate links, but it'll work for this as well. A slight modification:
affiliate = { { proto = "asin", link = "http://www.amazon.com/exec/obidos/ASIN/%s/conmanlaborat-20" }, { proto = "rfc", link = "http://www.ietf.org/rfc/rfc%s.txt" }, }
Now all I have to do is write <a
href="rfc:2045">
and mod_blog
will convert
it to <a
href="http://www.ietf.org/rfc/rfc2045.txt">
. 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.
Shudder.