Saturday, January 01, 2011
What? Not another 365 days …
HAPPY NEW YEAR!
Even though we still don't have flying cars, and we never did go back to Jupiter (heck, we never got there in the first place), maybe, just maybe, things will improve in 2011.
And remember, only 721 or 723 days left until The End Of the World As We Know It (but I feel fine).
(This post brought to you by EPS. Had this been an actual post, it most likely would have been exceedingly late)
Code and Data, Theory and Practice
- From
- Steve Crane <XXXXXXXXXXXXXXXXXXXXX>
- To
- Sean Conner <sean@conman.org>
- Subject
- @siwisdom twitter feed
- Date
- Sat, 1 Jan 2011 15:46:14 +0200
Hi Sean,
Are you aware that the quotation marks in the @siwisdom <http://twitter.com/siwisdom> tweets display as
“
and”
in clients like TweetDeck? Perhaps you should switch to using regular ASCII double quotes.Regards and Happy New Year.
Yes, I'm aware. They show up on the main Twitter page as well, and there isn't much I can do about it, other than sticking exclusively with ASCII and forgoing the nice typographic characters. It appears to be related to this rabbit hole, only in a way that's completely different.
What's going on here is explained here:
We have to encode HTML entities to prevent XSS attacks. Sorry about the lost characters.
counting messages: characters vs. bytes, HTML entities - Twitter Development Talk | Google Groups
And XSS has nothing to do with attacking one website from another, but everything to do with the proliferation of character encoding schemes and the desire to fling bits of executable code (aka ``Javascript'') along with our bits of non-exectuable data (aka ``HTML''). The problem is keeping the bits of executable code (aka ``Javascript'') from showing up where it isn't expected.
But in the case of Twitter, I don't think they actually understand how their own stack works. Or they just took the easy way out and any of the ``special'' characters in HTML, like ``&'', ``<'' and ``>'' are automatically converted to their HTML entity equivelents ``&'', ``<'' and ``>''. Otherwise, to sanitize the input, they would need to do the following:
- get the raw input from the HTML form
- convert the input from the transport encoding (usually URL encoding but it could be something else, depending upon the form)
- possibly convert the string into a workable character set the program understands (say, the browser sent the character data in WINDOWS-1251, because Microsoft is like that, to something a bit easier to work with, say, UTF-8)
- if HTML is allowed,
sanitize the HTML by
- removing unsupported or dangerous tags, like
<SCRIPT>
,<EMBED>
and<OBJECT>
- removing dangerous attributes like
STYLE
orONMOUSEOVER
- check
remaining attributes (like
HREF
) for dangerous content (likejavascript:alert('1 h@v3 h@cxx0r3d ur c0mput3r!!!!!!!11111')
)
- removing unsupported or dangerous tags, like
- escape the data to work with it properly (or else face the wrath of Little Bobby Tables' mother).
Fail to do any of those steps, and well … “1 h@v3 h@cxx0r3d ur c0mput3r!!!!!!!11111” And besides, I'm probably missing some sanitizing step somewhere.
Now, I could convert the input I give to Twitter to UTF-8 and avoid HTML entities entirely, but then I would have to convert my blog engine to UTF-8 (because I display my Twitter feed in the sidebar) and while it may work just fine with UTF-8, I haven't tested it with UTF-8 data. And I would prefer to keep it in US-ASCII to avoid any nasty surprises.
Besides, I shouldn't have to do this, because that's why HTML entities were designed in the first place—as a way of presenting characters when a character set doesn't support those characters!
Hey—wait a second … what 's this river doing here?
Sunday, January 02, 2011
The inexorable march of technology
- From
- Steve Crane <XXXXXXXXXXXXXXXXXXXXX>
- To
- Sean Conner <spc@conman.org>
- Subject
- Re: @siwisdom twitter feed
- Date
- Sun, 2 Jan 2011 10:53:12 +0200
Hi Sean,
I see you blogged about this, stating that the problem occurs in Twitter's own web client too. I found that interesting as I don't see the problem in the Twitter web client. As shown in this screenshot it all looks fine.
I'm using Google Chrome and I wondered if the browser may be playing some part so I opened the same page in Internet Explorer, which I only use under duress, and what a difference.
There's the problem, as large as life, but the UI looks different. I recall that I opted to use the new UI a while ago and not being logged in Twitter must showing me the old UI, presumably still the default. So I log in and voila, the same UI I see in Chrome, with all characters represented correctly.
So we can conclude from this that there was indeed a problem; it was Twitter's fault; and they have addressed it in their new UI. This leaves only third party clients to fXXX things up for you.
Cheers.
Oh, now he tells me, after I make sure mod_blog
works with
UTF-8 (it handled a post written in a Runic alphabet just
fine), reconfigured the webserver to serve up the appropriate headers and
converted the data file for Silicone Wisdom to UTF-8.
Okay, it didn't take me that long, and as my friend Jeff said:
It is no longer an ASCII world, it's a Unicode one. I have run in to this a lot and anything that uses XML, like a Twitter feed is going to be encoded into UTF-8. It is profoundly annoying, but spreading.
And progress marches on …
Update a few seconds later …
The automatic posting to MyFaceSpaceBook revealed a similar issue. It is to laugh.
Monday, January 03, 2011
UTF-8 is hard. Let's write device drivers!
Nice. I switch my Stupid Twitter Trick to use UTF-8, and this is what I get for my trouble:
HTTP/1.1 401 Unauthorized Date: Mon, 03 Jan 2011 12:29:02 GMT Server: hi Status: 401 Unauthorized WWW-Authenticate: Basic realm="Twitter API" Content-Type: application/json; charset=utf-8 Content-Length: 70 Cache-Control: no-cache, max-age=300 Expires: Mon, 03 Jan 2011 12:34:02 GMT Vary: Accept-Encoding Connection: close {"request":"\/1\/statuses\/update.json","error":"Incorrect signature"}
No UTF-8 characters, posts fine. Any UTF-8 characters, I get this. I think the problem is that the character set isn't being sent along with the post and I don't have a clue about how that's done. Nor do I think there's an actual standard for this (I don't recall ever coming across one).
Sigh.
This UTF-8 stuff is hard. No, I mean hard. I wish I was making that up.
Tuesday, January 04, 2011
It's hard to break a program when the network keeps breaking
One of my jobs at The Corporation has been to load test a phone network service by simulating a ton of calls and see where our service breaks. Which means I get to write code to simulate a phone network initiating calls. It's not easy, and no, it's not entirely related to The Protocol Stack From Hell™ (but don't get me wrong—there's still plenty of blame to go around).
Problem the first: generating a given load, a measured set of packets per second. It's harder than it sounds. Under the operating system we're using, the smallest unit we can reliably pause is 1/100 of a second. If I want to send out 500 messages per second, the best I can do is 5 packets every 0.01 seconds, which isn't the same as one packet every 0.002 seconds (even though it averages out). The end result tends towards bursty traffic (that is, if I attempt to control the rate; if I don't bother with that, I tend to break the phone network connection—more on that below).
Sure, there's some form of congestion control in The Protocol Stack From Hell™, but attempting to integrate the sample code provided into my testing program failed—not only do I not get the proper messages, but what I do get is completely different from the sample program. This is compounded by the documentation (which everybody agrees is completely worthless) and the fact that this is the first time I've ever worked on anything remotely related to telephony. I'm unfamiliar with the protocols, and with the ins and outs of The Protocol Stack From Hell™ (unlike my manager R, who's worked with this stuff for the past fifteen to twenty years, but is swamped with other, manager-type work).
Now the second problem: even though the testing system is in the same cabinet, and hooked to the same network switch, as the target system (in fact, I think they're physcially touching each other) due to the nature of the phone system, communications between phone network components must go through an intermediary system known as an STP; actually, a pair of STPs (for redundancy). Unfortunately for us, the only STP we have access to is out in Washington State (where The Corporate Master Headquarters are stationed) and said traffic between our two testing systems (here in Lower Sheol) goes back and forth across the Inernet over a VPN.
Yeah, what I can say? When I asked about getting an STP a bit closer to us, I was told it wasn't in the budget (and no wonder—the price is far into the “if you have to ask, you can't afford it” territory—deep into that territory).
So we're stuck with a six thousand mile round trip for the phone network traffic. And now we come to the punch line—the Internet is broken. The quick synopsis: excessive buffering of Internet traffic by various routers is causing a breakdown of anti-congestion algorithms used by TCP/IP. Now, the article is talking about buffer bloat in consumer grade equipment, but it is possible that there are commercial grade routers doing the same thing—excessive buffering and that could be the cause of largish spikes in traffic, as well as increased latency in round trips. If there's a spike in traffic, the STP will attempt to assert flow control, but if there's still traffic coming in, it's considered an error. Also, the phone network is very time sensitive and execessive latencies are also an error condition.
Worse, if the STP receives too many errors from an endpoint, it (like every other STP on the phone network) is programmed to take that endpoint out of service. It's hard to say where that point is, but it happens with frightening regularity when I attempt to do load testing. The packets are being pushed when suddenly we start receiving either canceled messages, or delivery failures about five levels down in the protocol stack, which means one (or both) endpoints have been cut loose from the phone network due to excessive errors. It then requires manual intervention to restart the entire stack on both sides.
So, there's bursty traffic due to my attempts at sending a settable amount of traffic. Then there's the (possible) bursty traffic due to excessive buffering across the Internet. Oh, and I forgot to mention the licensing restriction on The Protocol Stack From Hell™ that limits the number of messages we can send and receive. All that makes it quite difficult to find the breaking point of the program I'm testing. I keep breaking the communications channel.
That tends to put a damper on load testing.
Friday, January 07, 2011
Why did I not get the memo?
In what is sure to be one of the most acclaimed comics events of 2011, Fantagraphics has announced that they will be publishing a definitive collection of Carl Barks' seminal run of Donald Duck comic stories. In an exclusive interview with Robot 6, Fantagraphics co-publisher Gary Groth revealed that the company—which announced their plans to publish Floyd Gottfredson's Mickey Mouse comics last summer—had acquired the rights to reprint Barks' work from Disney and that the first volume will be released in fall of this year. The comics will be published in hardcover volumes, with two volumes coming out every year, at a price of about $25 per volume.
Via Eccentric Flower, Exclusive: Fantagraphics to publish the complete Carl Barks | Robot 6 @ Comic Book Resources – Covering Comic Book News and Entertainment
Squeeeeeeeeeeeeeeeeeeee!
Thursday, April 21, 2011
A Stupid Twitter UTF-8 Bug Fix Du Jour
[Yeah, this is late. So very late. No excuse really, other than a general lack of enthusiasm for posting to the blog (not to mention I missed this years Yearly LiveJournal Post). Hopefully, this ennui has passed and regular service will resume.]
- From
- Tony Finch <XXXXXXXXXXXX>
- To
- sean@conman.org
- Subject
- Jef Poskanzer's Twitter tools
- Date
- Thu, 21 Apr 2011 10:39:29 +0100
I see from your comment on jwz's blog that you are also a fan of Jef's Twitter tools:
http://www.jwz.org/blog/2011/04/a-badge-for-the-software-industrys-failures/#comment-90304I see from your blog that you also encountered the UTF-8 bug:
http://boston.conman.org/2011/01/03I found this bug in October but Jef didn't release a fix until a couple of weeks after your blog post in January. See the last couple of comments at:
http://fanf.livejournal.com/108436.htmlTony.
A one line patch and now my Stupid Twitter Project is perfectly fine and I no longer have to worry about Twitter mishandling HTML entities any more.
Monday, May 02, 2011
What's this red stuff here? … oh, it's catchup.
Yeah, it's been awhile. I just haven't felt like posting since … oh … it's been since early January.
Ahem.
Anyway.
Work at The Corporation has been a series of long periods of intense bordom punctuated by short bursts of sheer terror (in other words—“hurry up and wait!”) as we've been going through a testing phase (more on that later). Meanwhile, my current private “project du jour” is dealing with email. More specifically, working slowly towards indexing a rather large archive of email I've collected over the past fifteen years (and more on that later as well).
Also, Hoade and his lovely wife Ann survived the terrible tornadoe that ripped through Tuscaloosa a few days ago with nary a scratch. Their house, however, did not survive (much like large portions of Tuscaloosa didn't survive). He's also coming down to Lower Sheol to visit; his plans made a few days before he and Ann lost their house. The plans are still on and it'll be nice to see him again without falling into a cactus plant.
“He's one of the old gods! He demands sacrifice!”
Another day, another Mac OS-X automatic update.
I'm growing leary of Mac OS-X updates. I'm also growing leary of Apple in general. I'm not saying I refuse to use their products–heavens no! Chez Boca is slowly turning into Apple territory with one Mac mini, A Mac laptop, an iPad and two iPhones. The computers just work (and give it time Bunny—you'll get use to the interface, trust me).
But I get the feeling that doing anything a bit out of the ordinary is punished, for Steve Jobs is not a kind and loving god—he's one of the old gods! He demands sacrifice! His way, or no way.
The only change I've made to the system is to have syslogd
forward its logs on the Mac to my Linux system (and to do that, I had to
figure out how to edit
/System/Library/LaunchDaemons/com.apple.syslogd.plist
, which is
a binary file, to add one command line option to
syslogd
when it starts) and the last time my Mac auto-updated
(last month) it completely overwrote my changes and I lost an hour trying to
remember how I initially set it up and troubleshoot why it wasn't working
properly.
Thanks, Steve.
More troubling though, are some of the logs I'm seeing from the Mac. Such as:
(pardon the rather unorthodox output from myfc00::3 | /usr/libexec/taskgated | user debug | May 02 15:48:15 | no system signature for unsigned /Applications/Firefox.app[18605]
syslogd
)
The only executables that are thus logged are those that I compiled, or
have been downloaded off the Internet (like Firefox for instance). The man
page for taskgated
says this:
taskgated
is a system daemon that implements a policy for thetask_for_pid
system service. When the kernel is asked for the task port of a process, and preliminary access control checks pass, it invokes this daemon (vialaunchd
) to make the decision.
which doesn't reassure me all that much. Also, given the control that Apple exerts over the iPhone and iPad software ecosystem, how long until Apple starts tightening its grip over the software echosystem of the Mac?
Okay, I doubt they'll go so far as to remove the ability of third party applications from running on the Mac, but still … if I have to worry about every update reversing changes I've made to the system …
Tuesday, May 03, 2011
“Mammas, don't let your babies grow up to be Xanadu”
Too big to fail one more time? How about too ugly or redundant to succeed? The long-languishing, and design-challenged Xanadu project sparks such thoughts.
Rebranded “American Dream@Meadowlands,” Xanadu is highly visible, and abuts an ecological treasure. Perhaps I can offer a comparative context. The Twin Cities' Mall of America is another mammoth retail complex that Triple Five co-developed. It, too, received substantial public funding— mainly for such infrastructure as access roads and parking ramps. In 1993, it was the country's largest mall.
Via Impudence, The Era of Big Malls Is Over - Room for Debate - NYTimes.com
What is is about failure with projects named “Xanadu?”
There's Samuel Coleridge's poem, unfinished because he was interrupted by Dirk Gently, also known as the person from Porlock (okay, okay, the poem's actual name is “Kubla Khan”, but it's one of the most, if not the only, famous literary reference to Xanadu).
Then there were the Xanadu houses, all since gone.
There is (or was?) Ted Nelson's Project: Xanadu (named after the poem), the precusor to the World Wide Web and never fully realized (it being “six months from being done” for over thirty years).
And lest we forget the movie, which sucked. Big time. Enought for it to be Gene Kelly's last movie.
The verdict?
Don't name anything “Xanadu” if you want it to succeed.
“No matter where you go, there MyFaceSpaceBook is”
With the MyFaceSpaceBook “Like” button appearing all over the web, I realized that the intent wasn't just to indicate that I liked a page, but to track my web browsing habits. And it didn't matter if I was logged in or not, because any reference to MyFaceSpaceBook involved browser cookies and the sites I viewed when logged out of MyFaceSpaceBook could be reconciled with me when I logged back in.
So I started deleting any cookies dealing anything with MySpaceFaceBook before logging into the site, and again deleting them after logging out and closing the tab (that last step was important because I found out that MySpaceFaceBook captured the “tab-close” event and set a cookie).
It suddenly struck me the other day though, that I have a static IP address and that it doesn't matter if I delete the cookies or not, because MySpaceFaceBook could still reconcile any cookies sent to my IP address since it never changes.
Sigh.
No, not only do they know I visit Cracked (I never did care for Cracked the magazine, preferring Mad the magazine, but Cracked the website is miles ahead of Mad the website) but also Justin Bieber (not to be confused with Justin Beaver).
Um … that last site … with Justin Bieber … that's just to throw the MySpaceFaceBook tracking off.
No, really!
Ahem.
Anyway …
So, what's the point in trying to scrub cookies with MyFaceSpaceBook had me pretty much pegged by my IP anyway? Even if I didn't have a static IP address, it still wouldn't be that much of a shield, given that The Monopolistic Phone Company™ probably uses a small pool of addresses for my area anyway, and what with IP address geolocation, that would still give marketers valuable demographic information about my web viewing habits.
From the “Um … yeah” Department.
Oh, and speaking of viewing … habits somehow, the existence of this Velvet Store doesn't surprise me …
Wednesday, May 04, 2011
This kind of puts your boss into perspective …
… a few weeks later a guy broke into Frick's office and shot him in the neck. Twice. At this point Frick rose up (presumably laughing deeply while his wounds suddenly healed before the assassin's eyes) and fought back. The cops came and arrested the assassin, and Frick was back to work in a week. And by "back to work" we mean he quickly fired 2,500 workers, and halved the pay for the ones who were left.
The 6 Most Horrific Bosses of All Time | Cracked.com
And Henry Frick was only the fourth most horrific boss of all time. I mean, I thought my boss at Negiyo (it's been over ten years now) was psychotic—he got pissed at me because I came down with acute bronchitis and took a few days (okay, two weeks!) off. He dismissed the doctor's note I procurred, changed my schedule without informing me, and had scheduled my exit interview with HR, while telling me, in no uncertain terms, that he had full blown pneumonia for six weeeks and that never stopped him from coming into work every single XXXXXXXX day. I found out later that a few months before I started with Negiyo, he had a somewhat invasive heart procedure and was back to work the next day!
He also had a habit of logging into the computers systems at night and checking up on us third-shift workers (I'm not going to say he had no life, because who am I to cast that aspersion on someone, but he certainly took his job way too seriously, especially since the department itself was nothing more than an expanded version of Tom Smykowski's job (no, really! If tech support thought a server was down, they would call our department. We would ping the machine, and if it didn't respond, we could then call the Unix or Windows administrators and tell them a machine was down. Seriously! That was the job! Some well written scripts could have done our job. Such was life at Negiyo).
After reading that article, I realized that it wasn't as bad as it could have been. At least he didn't lock us in a burning down office.
(Just a warning—if you are anything like me, then viewing any page at Cracked.com will suck you into that abyss for easily a few hours. Just thought I should warn you.)
Friday, May 06, 2011
“A bird of arts and letters”
Dr. Fuchs's Donald was no ordinary comic creation. He was a bird of arts and letters, and many Germans credit him with having initiated them into the language of the literary classics. The German comics are peppered with fancy quotations. In one story Donald's nephews steal famous lines from Friedrich Schiller's play “William Tell”; Donald garbles a classic Schiller poem, “The Bell,” in another. Other lines are straight out of Goethe, Hölderlin and even Wagner (whose words are put in the mouth of a singing cat). The great books later sounded like old friends when readers encountered them at school. As the German Donald points out, “Reading is educational! We learn so much from the works of our poets and thinkers.”
…
But even the “adult” ducks end up sounding more colorful than they do in English. Fuchs applied alliteration liberally, as, for example, in Donald's bored lament on the beach in “Lifeguard Daze.” In the English comic, he says: “I'd do anything to break this monotony!” The über-gloomy German version: “How dull, dismal and deathly sad! I'd do anything to make something happen.”
Via Tim Carmody (filling in for Jason Kottke), Why Donald Duck is the Jerry Lewis of Germany - WSJ.com
I've heard that Donald Duck & Co. comic books were always more popular in Europe than here but I never quite understood why until this article. The dialog wasn't dumbed down, it was cranked up! And it outsold Superman.
Who'd a thunk it?
And now for you Calvin and Hobbes fans …
In the same article about duck comic books outselling Superman in Germany is a small reference to The Calvin and Hobbes Wiki, for all your Calvin and Hobbes trivia and minutiae.
Notes on a telephone conversation wherein one party learns a painful truth about spending other people's money
“Guess how much Office Depot wants for a 10′ cross-over cable?”
“Oh … maybe $20?”
“Try $26.99. That's insane! Home Depot sells them for around $7.00.”
“So why aren't you at Home Depot then?”
“They ran out.”
“Ah.”
“But $26.99! That's insane! I realize they have to make money, and while I can make my own it's more a convenience factor, but $27?”
“See, Office Depot expects you to buy the cables and expense it to a company, so you aren't spending your money, but Other People's Money™.”
“But $80 for a few cables?”
“Other People's Money™, man.”
Monday, July 04, 2011
The Inadvertent Michael Jackson Impersonation
Our neighbor tends to go all out on the Fourth of July, so there's no real need to go anywhere for a fireworks show. So when he and his friends started firing off their works, Bunny and I went outside to enjoy the show.
Then this one is lit off:
My reaction was pretty much: Hmm … wow that's loud, and large, and low, and oh XXXX XXXX that's going to XXXXXXX land on me get it off get it off get it off. “Aaaaaaaaaaaaaaaaaaaaaaaaaaah!”
Wow.
Now my hair caught on fire.
Okay, okay, technically it wasn't on fire, but it was singed, and man, singed hair smells horrible.
Blech.
Fortunately, I suffered no burns, but I was lucky. It could have much much worse, which is a nice time for this little PSA:
I think next year, I'll watch the fireworks on TV from the comfort of an underground bunker.
Friday, July 08, 2011
“'Tis but thy sex that is my enemy; Thou art thyself, though not an XX.”
This past century, large portions of the American South have been consumed by an unintended side-effect.
I refer to the infamous “kudzu” vine, imported from Japan for its stunning erosion-control properties. This tactic worked: Crumbling riverbanks and hillsides were stabilized all over the South—but, then, everyone realized with mounting horror that this hardy legume is almost completely unstoppable anywhere protected from hard freezes, growing at the awesome rate of a foot per night and reaching heights of 100 feet. Entire abandoned houses have been observed to vanish under a kudzu carpet, over a summer growing season. It's now considered a pest; sometimes, an outright menace.
The plant can be used with caution, where its invasive side- effect is known and planned for—but the point is that it was deployed without understanding its full effects.
Laws' side-effects, likewise, can render them self-defeating (though, on the bright side, bad laws are easier to eradicate than kudzu): I'm going to explain, below, why recently popular marriage-definition legislation like California's November 2008 “California Marriage Protection Act” (an initiative state-constitutional amendment) creates kudzu-class unintended side effects its proponents haven't anticipated and will find horrific—in that they're going to end up mandating and legally sanctifying exactly the sort of same-sex marriages they're intending to ban.
Via Randall Munroe (which itself was via Hacker News), Kudzu and the Marriage Amendment
No, really!
The article outlines eleven instances where the “visual” gender doesn't match the actual “genetic” gender and thus, the laws outlawing same- sex marriages could force “visual same-sex marriages.” Way to go, narrow-minded legislators!
Monday, July 11, 2011
DIY cable managment system
Growing up, my maternal grandmother lived with mom and me. And she was always worried that snarled mess of cables beneath my desk (having two computers means twice the number of power cords, keyboard cables, video cables, mouse cables and serial port cables—a real rat's nest of cables) would spontaneously combust and kill us all in a huge conflagration.
Fortunately, that never happened, but still, it's very unsightly and recently, it's been bugging me.
It's been bugging me since I came across this article about using a rain gutter as a cable management tool. It looked simple enough to implement (and it doesn't hurt that my desk has a wood surface) and why not?
All it took was a 3′6″ section of rain gutter:
$5.23 for a minimum 10′ section—they even provided the tools necessary to cut it to size, so I have enough gutter sections to do two more desks. And then some other associated hardware:
Two rain gutter hangers ($2.35), two screw hooks (62¢ each) and two rubber grommets (98¢ each—wow, they're expensive!). Drill a hole through the hangers, use the grommets to line the holes:
which will be used to suspend the rain gutter beneath the desk:
Then it was a process of screwing in the hooks on the underside of the desk and installing the rain gutter.
From start to finish (and this includes the trip to Home Depot during rush hour traffic) it took only four hours. It took longer to run the cabling than it did buying the items, but then again, there were quite a few cables (a couple of which I forgot what they did—I hate when there are extra parts after putting everything back together again).
Much nicer now. And easier to sweep under the desk. Not bad for $15 (and some sore knees).
Saturday, July 30, 2011
“Cowboys and Aliens”
Given all the sequels, remakes, and reboots coming out of Hollywood (not to mention some questionable inspriration—really? A movie based the Hasbro game?) I'm a bit leery of anything coming out of Hollywood these days.
I was even a bit wary of “Cowboys and Aliens even though its not sequel, prequel, remake or reboot (maybe—it is based upon a comic book but reading the storyline in the comic, it seems the movie went its own direction) but after a positive review from a source I trust, Bunny (who originally wanted to see the movie just from viewing the previews) and I went to the movies.
It's an odd movie—it's a solid Western, with Daniel Craig playing an anmesiac thief who stole gold from Harrison Ford, playing a cruel cattle baron, but then it turns into an alien invasion pretty darned quick (and for those of you who saw the trailer—everything in that trailer is in the first half hour of the film). Daniel Craig and Harrison Ford then team up with the remains of the town to hunt down the “demons” (as the aliens are referred to—nice touch) and save the kidnapped townspeople. And then it's a solid alien invasion story, albeit set in the 1870s. It's a film well worth seeing, if just for the solid performances from everybody in the film (although Sam Rockwell's performance reminded me quite a bit of his role in “Galaxy Quest” as the red shirt).
I only have two real quibbles with the film, and if you don't want anything spoiled, stop reading now. You have been warned.
SPOILERS!
The first quibble is the motiviation of the aliens. Any species that is capable of interstellar travel is not going to land on an inhabited planet just for the gold, especially when the indiginous inhabitants can violently fight back. There are probably other planets (or moons) in the solar system with enough gold and life (if any) that won't fight back, as it were. And even if they are here for the gold, why bother the local inhabitants anyway? Land, mine the gold, leave.
I guess they're just sadistic jerks, these aliens.
The second quibble is how one of the characters, who turns out to be an alien who's homeworld was destroyed by the first set of gold mining aliens, even arrived here. This character came here to fight the first set of aliens, but there's no indication of where its ship is, or how it got here, or anything. This is a smaller quibble than the first, but it's still pretty convenient.
But hey, it's a good film otherwise.
Wednesday, August 03, 2011
Old school journalism
Want to freak out a newsroom full of college journalists?
Sit them down at manual typewriters and ask them to plunk “2011” onto a piece of paper.
They’ll only make it halfway.
“Mine’s broken!” one reporter at Florida Atlantic University yelled a couple of Saturdays ago, when we launched the inaugural ALL ON PAPER project. “There’s no number 1 key.”
Via spin the cat, HOW TO BUILD A NEWSROOM TIME MACHINE « journoterrorist
I don't know whether to be amused or horrified.
I used to write a column for the FAU newspaper The Atlantic Sun (now The University Press) and I certainly remember walking into the weekly meetings on Wednesdays and seeing the layouts for the current issue out on the tables. I would then use an X-Acto™ knife to cut out my column (since they were going to toss the layouts) as a momento.
I wrote most of my columns on my TRS-80 Color Computer but there were times when Wednesdays came around and I hadn't even started my column, much less finish, so on those rare occations, I would grab my manual portable typewriter (a gift from my paternal grandfather, who wanted me to learn how to type if I was going to become a programmer) and literally bang out my column at school.
In fact, the column pictured above was one such column banged out on a manual typewriter, written in the cafeteria as I was eating lunch with a few friends. And on my manual typewriter, not only was there no “1” character, there wasn't a “0” character either!
I also found it amazing that the students had to use a make-shift dark room. What? Is there no dark room at FAU anymore? I distinctly remember there being one, back when I took photography.
Yes, I know all about removing 35mm film from the canister and loading it onto a reel in total darkness, using obnoxious chemicals to develop the film, and once rinsed, letting the film dry overnight, then coming in the next day, cutting the film into strips of five pictures each, mounting the strips into a protective sheet, making the proof sheet, picking which photos (10 out of 72) to print, placing the film into the projector, exposing the photographic paper and using different obnoxious chemicals to develop the picture (and as much as I like my 35mm camera, I do not miss the expense of buying film nor the expense of having it developed).
So I find it odd that they didn't bother to ask the Art department if they could use the dark room.
That is, if the dark room still exists.
Monday, August 08, 2011
“Oh, THAT'S your address? Of course I totally trust you!”
- From
- "Mrs. Morgan Sherry" <lolo31@wfj2uad7q.homepage.t-online.de>
- To
- undisclosed-recipients:;
- Subject
- PAYMENT NOTIFICATION
- Date
- Mon, 8 Aug 2011 18:16:11 -0700
Hello Beloved,
I am Mrs. Morgan Sherry, I am a US citizen, 48 years Old. I reside in District of Columbia 20534. My residential address is as follows 320 First Street, NW Washington, District of Columbia 20534, United States, am thinking of moving since I am now wealthy. I am one of those that took part in the Compensation in Nigeria many years ago and they refused to pay me, I had paid over $42,000 while in the US, trying to get my payment all to no avail.
So I decided to travel down to Nigeria with all my compensation documents, and I was directed to meet Barrister Larry Ego, who is the member of COMPENSATION AWARD COMMITTEE and a Human Rights Activist (Lawyer), and I contacted him and he explained everything to me. He said whoever is contacting us through emails are fake.
He took me to the paying bank for the claim of my Compensation payment. Right now I am the most happiest woman on earth because I have received my compensation funds amounting to $15,000,000.00 Moreover, Barrister Larry Ego, showed me the full information of those that are yet to receive their payments and I saw your email as one of the scam victims, that is why I decided to email you to stop dealing with those people, they are not with your fund, they are only making money out of you. I will advise you to contact Barrister Larry Ego.
You have to contact him directly on this information below.
COMPENSATION AWARD HOUSE
Name: Dr Larry Ego (Lawyer)
Email: egodrlarry69@gmail.com
TELL: +234-7042778612You really have to stop dealing with those people that are contacting you and telling you that your fund is with them, it is not in anyway with them, they are only taking advantage of you and they will dry you up until you have nothing.
The only money I paid after I met Barrister Larry Ego was just $350 for the paper works, take note of that.
Thank You and Be Blessed …
Mrs. Morgan Sherry
320 First Street, NW
Washington, District of Columbia 20534 USA.
I almost skipped over this Nigerian 419 scam but the very specific postal address of the sender struck me as odd … really? From Washington, D.C? I've never seen such a specific address listed in any of the Nigernal scam letters I get. So I decided to check it out.
For the record, 320 First Street NW is about two blocks away from the Capitol Building. It's also the address for the central office of the Federal Bureau of Prisons.
Somehow, that's just fitting.
Thursday, August 11, 2011
Tracking down a paper
So I want to read this paper:
META II: A Syntax-Oriented Compiler Writing Language.
Schorre, D. V.
In Proceedings of the 1964 19th ACM National Conference,
ACM Press, New York, NY, 41.301-41.3011, 1964. available as http://doi.acm.org/10.1145/ 800257.808896Abstract:
Meta II is a compiler writing language which consists of syntax equations resembling Backus normal form and into which instructions to output assembly language commands are inserted. Compilers have been written in this language for VALGOL I and VALGOL II. The former is a simple algebraic language designed for the purpose of illustrating META II. The latter contains a fairly large subset of ALGOL 60.
The method of writing compilers which is given in detail in the paper may be explained briefly as follows. Each syntax equation is translated into a recursive subroutine which tests the input string for a particular phrase structure, and deletes it if found. Backup is avoided by the extensive use of factoring in the syntax equations. For each source language, an interpreter is written and programs are compiled into that interpretive language.
META II is not intended as a standard language which everyone will use to write compilers. Rather, it is an example of a simple working language which can give one a good start in designing a compiler-writing compiler suited to his own needs. Indeed, the META II compiler is written in its own language, thus lending itself to modification.
Tutorial: Metacompilers Part 1
It's avai lable from the ACM but they want $15 for it. Seeing how FAU is just down the street from Chez Boca, I figure it'll be cheaper to obtain a copy there, especially since the Proceedings of the 1964 19th ACM National Conference is is in the library, on the third floor, call number “QA76.A8”, a familar section of the library (it's where all their computer science related materials are stored).
So I'm on the third floor of the library, looking around section “QA76.” I see books in “QA76.A6”, and then books in “QA76.A68” and “QA76.A88” which quickly followed by books in section “QA76.B1”.
Um … did I miss “QA76.A8”? A closer look and … um … a block of wood? What? Did someone really steal a book and replaced it with a block of wood? Oh, it's just a place holder for material that's only available via microfiche. Interesting, I've never seen that before. I keep looking, and no. There are no books in section “QA76.A8” although there is a small section of empty shelving where books in “QA76.A8” would be, if it wasn't an empty section of shelving.
Sigh.
I head back downstairs to the front desk, where they make an announcement that the library will be closing in thirty minutes, never mind the fact that their stated hours clearly means I should have six and a half more hours.
Okay.
I ask the librarian behind the desk about the Proceedings of the 1964 19th ACM National Conference. ``Yes, we do have it, but these missing fields,'' he said, pointing to some blank fields on the screen, ``aren't a good sign. It looks like they've never been referenced at all.''
``Oh.''
``Are you sure you were in the right area?''
``I believe so,'' I said, hoping the librarian would offer to help look for the material.
``Well, you could fill out a missing book report, or you could request an intralibrary loan.'' It was clear the librarian was not going to help me look for the material.
``I was just interested in reading the paper,'' I said.
``Well, as a student, you can fill out the missing book report to have the listing updated in the computer.''
``I'm not a student, although I used to attend.''
``Oh! Do you have an alumni card then?''
``Um ... no.''
``Oh,'' said the librarian. ``Then you can't fill out the missing book report.''
``Oh,'' I said. Thanks. ``I'll just go look around more for the book.''
Then back upstairs to the third floor.
The section I'm looking in, ``QA76.A'', appears to be mostly math related journals and periodicals. The actual computer books are two rows over, in the isle marked ``QA79.C'' even though all the computer books have ``QA76'' as part of their call number. And yes, halfway down that isle is the volume I am looking for, the Proceedings of the 1964 19th ACM National Conference. A quick look at my cell phone (for the time) shows I have twenty minutes to make a copy of the article. It won't take long to make a copy of an eleven page paper.
Seventeen minutes later …
Man was that horrendous. I wasted a minute trying to start the machine, only to realize I needed to select the paper tray before it would copy. Okay, then I find out it's only 10¢ per copy. That's good. But I can't find the copy. That's bad. No paper shot out of the front. Nor out of either side. It wouldn't come out the back—that would be stupid. The copy machine isn't complaining about a jam. But I can't find the copy.
I spend another 10¢ only to find a lack of copy, and a lack of indication that anything is wrong. I start looking all over the copy machine when I find where the copies come out—an alcove about halfway down the machine, hidden from view by the control panel, behind a sign that says “CATION: ELECTROCUTION HAZZARD—EXPOSED MAINS.” Lovely.
I then had to re-copy two pages due to bad placement of the journal on the copy bed. But I did it. With three minutes to spare before the library closed.
Sheesh.
But I have the paper I wanted to read! Woot!
Small, but with an attitude
I don't really know what to make of this:
Bunny and I were leaving the restaurant and parked next to us was this car with nine silhouetted vehicles on the side. And it wasn't like the car in question was an indestructable behemoth.
Nope. It's a Mini Cooper. Now that's scary!
Friday, August 12, 2011
In thinking about it, I think a solid rubber ball would be more reliable than the Monopolistic Phone Company
All I want is a way to get onto the Internet. In other words—all I need is a pipe.
I don't need crap software that requires 1GB of memory and sucks up 100MB of disk space just to configure a stupid DSL modem.
I especially don't want said software to reset DSL password on my behalf after sitting there doing apparently nothing for five solid minutes. What the XXXX?
And I really hate being redirected by the DSL provider to a webpage saying I have the wrong password and then trying to force an install of software on my computer to rectify the problem.
Thank you so much, Monopolistic Phone Company. You've made my Internet experience so much worse.
Is it too much to ask for a XXXXXXXXX simple pipe?
Apparently it is …
[Some background information: earlier this week
the DSL connection
started bouncing like a hard rubber ball. The wait time for local help was
twenty minutes into the future, indefinitely, but immediate help was
available from the Bangalore Help Desk™. All the Bangalore Help
Desk™ could do was send a new modem; they couldn't authorize a test of
the DSL line. Fine, we
elected for the new modem. We'll see if this stops the hard rubber
ball DSL line from
bouncing up and down.]
Emote, monkey boy! Emote!
A few years ago I linked to a site where you could average human faces together and made a prediction that Hollywood would use such technology to “cast” films.
We're closer to being John Malkovich than ever before (link via Jason Kottke).
Monday, September 05, 2011
The trick to flying is to miss the ground
(YouTube video via Michael Duff)
Hmm … he's just standing around on the side of a mountain, what's he going to—oh, he's going to jump off! Okay …
Ah, he's imitating a flying squirrel … that's neat—Whoa! That was pretty cool! Oh, now some footage from … another … angle … um … isn't he pretty low HOLY XXXX that was close!
Okay … he's still flying … how's he going to land?
Yes, you have to watch this. In HD, full screen if you can. It's simply amazing what he does, which proves that you don't even need to jump out of a perfectly good airplane to show people how crazy you are.
Saturday, September 24, 2011
Like the case, hate the name
Bunny and I were at the Apple Store (she was there to pick up her repaired Mac laptop; I was along for the ride) when I saw this:
The Hipstamatic (an unfortunate name in my opinion), which is a tripod mounting case for the iPhone 4 (yes, I have one now—I love it, but both Bunny and I are still pissed off at The Other Monopolistic Phone Company because—well, it's a long story and do we even need an excuse to loathe any Monopolistic Phone Company?). Ever since I got the iPhone, I've been trying to figure out a way to get it mounted to a tripod, and when I saw this, I snapped it up.
The only bit I'm concerned about is a crucial bit—the actual tripod adaptor. It's a small L-shaped piece of metal that screws into the tripod and the case slips over it (it's that vertical bar just below the circle design on the front of the case). This piece is small and I can see it being easily lost.
But it works and it's a simple design, even if it's a bit pricy.
Now THIS is a keyboard!
The USBTypewriter™ is a new and groundbreaking innovation in the field of obsolescence. Lovers of the look, feel, and quality of old fashioned manual typewriters can now use them as keyboards for any USB-capable computer, such as a PC, Mac, or even iPad!
Via Hacker News, USB Typewriter
Wow! What a neat idea! As if my IBM Model M keyboards aren't loud enough, imagine the “clackity-clack-clack” I can get from my old typewriter:
Intellectual challenge on the one hand … people within 50′ of me wanting to silence me on the other hand.
Thursday, September 29, 2011
I just saved $20 by doing a quick search on the Internet
- From
- — Permanent Electricity using MAGNETS??? YES! For only $20!!! —- <almostfree@foryouonly.com>
- To
- sean@conman.org
- Subject
- Produkt Rekommenderad av — Permanent Electricity using MAGNETS??? YES! For only $20!!! —-
- Date
- 28 Sep 2011 05:44:24 +0200
K?ra sean.zooby@conman.org,
Hello, My name is Ronald Bronson and I'm going to show you how to eliminate your power bill. My Free Energy Blueprint kit is going to show you how to build a magnetic free energy generator,
http://myls.me/r/?cn=magnet
which is a device which increases energy efficiency, and propels itself perpetually using a series of magnets. When properly implemented, this device can power your whole household for free.
http://myls.me/r/?cn=magnet
It's only $20!!!
Hurry!!
~~~~~~~~~~~~~~~~~~~~~~~~~~
F?r att granska denna produkt f?lj l?nken nedan:
http://www.castellux.com/webshop/index.php?_a=viewProd&productId=
~~~~~~~~~~~~~~~~~~~~~~~~~~Denna e-postar skickadesfr?n http://www.castellux.com/webshop
Avs?ndares IP Adress: {SERDER_IP}
Well, I hate to inform Ronald Bronson but all electricity is made via magnetism—it's just how you rotate a coil of wires through a magnetic field that varies, some generators use running water (hydro-electric), some use steam to drive the turbines that turn the wires (nuclear, oil, coal) and some use gasoline to drive a crankshaft (home generators, backup generators, your car).
But still, I'm curious, so I go to the page. There, I learn that it'll take as little as $200 in supplies, or maybe even as low as $50, or it could be for as little as $100, I too, could be generating electricity to power my home and free myself from the shackles of The Monopolistic Power Company! This device can generate 180W of electricity at 420 RPM, and it can produce more at faster rates.
Oh, so tempting!
The plans are for a “Permanent Magnetic Generator” (it says so right on that page), and a quick search revealed the plans for such a generator. Reading through the plans I get the feeling that had I spent $20 I would have received a copy of what I'm reading right now. Yup, page 5 shows a graph of Watts/RPM and yes, it looks like you can get 180W at 420 RPM. And yes, the list of tools fits on a single page, and the list of materials take a bit over a page. And all the materials required are probably available at a local hardware or home improvement store.
Isn't it amazing what one can find on the Internet for free these days?
But the question now becomes, can it power your house? I seriously doubt it:
The PMG works at low rotational speed. The chart shows the power output of the PMG, charging a 12 volt battery. At 420 rpm it generates 180 watts, which is 15 amps at 12 volts (15A × 12V = 180W).
At higher speed, the PMG can generate more power. But high currents cause the coils to heat up, and so the efficiency gets worse as the output current gets higher.
And even if it could, you still need a way to get the thing spinning. The plans show you can attach the motor to a windmill (plans not included).
So much for getting off the grid.
Even more amusing, at the bottom of the page is this bit of verbiage:
This page is protected by copyscape. Do not copy.
Again, I hate to inform Ronald Bronson, but the very act of viewing the page made a copy. That's how the web works—the web browser requests a page, and the web server sends a copy of the page. Saying “do not copy this page” really translates as “do not view this page.”
But that aside, there really is such a thing as “copyscape.” It's a website that apparently exists to ferret out websites that plagiarize other websites. Okay, that makes a bit more sense. So let's see if the site selling the permanent magnetic generator plans is a copy … wow! Over ten copies of that site exist.
So much for that verbiage keeping other copies off the Inernet.
Monday, October 10, 2011
The crack of the Internet
I hate Cracked.com. I follow a link to Zooey Deschanel and end up reading seven animals that are one flaw away from taking over the world when I realize it's been three hours since I started reading that site and I still have over two dozen unread articles left to read.
Aaaaaaaaaah!
I should know better than to follow arbitrary links to Cracked.com.
Wednesday, October 19, 2011
On our way
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
Bunny and I were invited to my cousin Nate's wedding on Saturday. I refuse to fly, not wanting to be treated like the guilty (TSA) sheep (airline industry) that US citizens appear to be; instead, we drove to Troy, Michigan, just north of the dazzling city of tomorrow—Detroit.
Bunny drove during the daylight hours, then I drove during the night—our goal was to drive straight through, only stopping for gas and food as required. We both figured the trip would take around twenty-two hours or so.
Bunny drove until 8:15pm, when we hit Cordele, Georgia and decided to eat dinner, gas up, and switch driving duties. The last time I was in Cordele was on December 27th, 1997. It was a Saturday, exactly half way between Christmas and New Year's Eve. I was headed towards Atlanta, Georgia to meet up with some friends to celebrate the New Year when I pulled off I-75 Northbound at exit 101. No sooner did I exit when my car stopped dead., even though the engine was still running.
I restarted the engine, gunned the gas and went nowhere. I checked behind me, and with no traffic (remember, it was the weekend between two major holidays), put the car into reverse. And the car still didn't move. I stopped the engine, placed everything in the cabin into the trunk, put the car into neutral, and tried moving the car off the road. It still didn't budge.
I walked a hundred yards or so to the nearest gas station. The attendent said that everything was pretty much closed, but he would try to get a tow truck out my way, seeing how my car was stuck in the middle of the road. By the time I walked back to the car, a police officer had shown up and was running my plates. I explained the situation to him, and he then turned to the task of scaring up a tow truck.
Over an hour later, one showed up. A flat bed truck. The police officer drove off to finish his beat. The tow truck driver then tilted the bed down in front of my car, hooked up some chains to the front wheels, and proceeded to pull the car up the bed. The wheels of my car were solidly locked into place and for a second there, I thought the front axel of the car would be pulled out.
But no, the car eventually made it onto the bed of the tow truck. He then drove the car and me to a nearby body shop. I went into the office to call my friends to have them pick me up, while the tow truck driver and the one machanic on duty attempted to get my car off the tow truck.
There was the bed, at a 45° angle, chains slacked, and the car still sitting on the bed. Between the driver and the mechanic, they figured out that the only way to get the car off the truck was to slide it off, so they slicked the bed down with oil and the car slid off.
The mechanic told me I could call him in a few days to give him time to figure out what happened. The tow truck driver then drove me to a nearby restaurant so I could wait for my friends there.
I'll spare you the details about the trip home (wherein I learned a few hard lessons about modern financial systems and just how screwed we are as individuals) but the upshot: the transmission seized up on my car. I could get a new transmission for $2,500 or a used one for $2,000. There would be a warranty on the work, but it would have to be serviced by the body shop there in Cordele, 500 miles from home. The mechanic did know of a student that needed a car and was willing to pay for the work, but really, could only just afford the transmission plus a bit more.
Not having the money myself (for the transmission and for travel expenses to retrieve the car), I sold the car to the Cordele-living student, and went on to learn a few hard lessons about modern car dealerships and living beyond one's means.
So my last time in Cordele wasn't all that great. This time, however, the car survived, and we were able to continue on our way north, with me taking on driving duties.
Thursday, October 20, 2011
Destination: Motown
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
Driving through Atlanta felt like driving through Tokyo in an anime movie—miles of monstrous buildings looming over the endless rain-slicked highways for what seemed like hours on end, crotch rockets warping past us, screaming "Akira" and "Kaneda" either at each other, or at us. I couldn't tell.
And yes, the rain.
The rain.
It was nothing but rain once we hit northern Georgia. It wasn't that bad until we hit Tennessee, when the wind kicked in, and it made driving through the moutains, at night, with rain, and wind, a real intense experience. Kentucky was just as bad, first with the mountains, and by the time we got though that, we hit Ohio. And bumper to bumper traffic at 6:30 am going through Cincinnati. It took us over an hour to travel some ten miles and past the parking lot of I-75 in Cincinnati.
Then Bunny took over driving, and I fell asleep for a few hours. The next thing I remember, We're pulling over somewhere just south of Detroit as I take over driving duties, since I'm more familiar with the area.
We drove by my dad's parents' house, the one were I spent many a summer, just to see it again. That neighborhood hasn't changed in the twenty years since I last saw it (I last visited in I think 1993 or 1994—a few months before Grandpa died, but no one else in the family seems to recall that visit; my prior visit was the summer of 1987). We then drove to Jan and Ed's house. Jan was at work, but Ed was still there. We chatted briefly about things. Then we drove by Kay and Dale's house, but they weren't there (at first, I got the wrong house as I was a block off, but it ultimately turns out they no longer lived there—boy, things do have a way of changing).
Since we were hungry by this time (it was around 1:00 pm or so) we drove back into Detroit to eat at Buddy's. It's not much to look at on the outside:
but it's cozy on the inside:
and the pizza is incredible (honestly, I don't know if they serve anything else but pizza; I don't think I've ever looked at their menu).
After lunch, we checked into the hotel.
It was quite nice.
A few hours to relax, and we get together with Kay, Dale and Ethan and head to Plymouth Roc for dinner. It seems that their son (my cousin) Jordan is a partner in the restaurant. Sweet. While there, we met up with Jordan, Aaron and family and Caitlin. I somewhat remember Jordan, and I barely remember Caitlin and Ethan. It's also weird to think of Aaron as a family man, seeing how the last time I saw him he was in high school.
This is something I had to grow used to, cousins I knew having families, and meeting several new cousins.
We spent the next few hours eating (execellent food, although as a disclaimer, I do have to mention it's a restaurant that's in the family, so I might be a bit biased) and getting caught up. Then it was back to the hotel for some much needed sleep.
They'll ship! Do you understand? They'll ship!
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
While Bunny and I were at Buddy's, we asked about delivery. No, they don't deliver. But they do ship. In fact, so many people have asked Buddy's to ship pizza over the years that they have a whole process down.
They ship!
They ship!
They ship!
They half-bake the pizzas, then ship in dry ice. Once you receive the pizza, you thaw it, finish baking it, and enjoy.
I must try this some time.
Friday, October 21, 2011
The Obligatory Family Photo
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
Front row, left to right: Jordan, Joshua, Aiden, Caitlin, Ashley. Second row, left to right: Amy, Audrey, Ed, Jan, Cameron, Mallory, Carson, Easton, Melanie, Harmony, Kay, Bunny. Back row, left to right: Bill, Seth, me, Chris, Caleb, Ethan, Aaron, Nathan, Dale.
Saturday, October 22, 2011
A grand day out
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
Bunny and I awoke early today, for she had some last minute shopping to do before the wedding. We had planned on going to the Oakland Mall, but we were informed that a much better option was the Summerset Collection Shopping Center. It also had the distinction of being closer to the hotel we were staying in.
I haven't experiened many three-story malls in my time, much less a mall that sprawled across the street with a pedestrian cross-walk above the road. Not only do they serve real Coke (cane surgar, none of that corn-syrup stuff) but the mall had a Lego Store!
How does some two-bit mall in Michigan rate a Lego Store! The closest one to me, here in Boca Raton, Florida no less! is three freaking hours away in Orlando!
No wonder Joshua has an entire room devoted to Lego in his house! He has a steady supply of the stuff, less than fifteen minutes from where he lives!
The lucky bastard.
Anyway, I asked one of the clerks inside how this mall rated a Lego Store, when the closest one to me is three hours away in Orlando.
“Ah,” the clerk said, “that's why. Disney placed a restriction on Lego, limiting them to how many stores and how close they could be in Florida.” Disney. Figures.
I took little solace in the fact that the Town Center Mall in Boca Raton has a bigger Apple store, as the one there had people lined up halfway down the mall.
We had some small difficulty in reaching the church on time. I left the invitation back at Chez Boca, and when I asked for the address of the church, I was told 581 West Fourteen Mile Rd when it really was 581 East Fourteen Mile Rd. We lost a few crutial minutes sorting that out, and we barely made the church on time.
What can I say about the wedding ceremony? The bride was beautiful. The groom hansome. The ceremony moving. Vows and rings exchanged. Kisses. Crying. Cheering. Photos. It was great!
Between the wedding and the reception, Kay, Dale, Jan and Ed decided that Bunny and I needed to try the Grand Traverse Pie Company, which is exactly what it sounds like, a pie company. Over a few hours, we all got caught up on our lives, and had some of the best pie I've ever had in my life. Wonderful stuff.
Pie. Pizza. Why does this area of Detroit have such good food? Why can't we have this goodness down here in South Florida?
Bunny and I were curious as to where we would be sitting at the reception. The table with Kay and Dale's family was filled. It was simiar with Jan and Ed's table. We found ourselves sitting with Audrey's family from Indianna. There, we met Tim, Audrey's brother-in-law, who hailed from Blackpool, England. It was very weird meeting a European who liked American football. It was also weird to learn that American football was actually rather popular over in Europe. Tim, on the other hand, found it weird to think that Bunny and I drove over 1,300 miles and never left the country, while he once drive over 1,300 miles and ended up going through four countries.
But like all receptions, the booze was flowing, the music was playing, and people dancing. It was odd to see a pizza delivery man show up with a stack of pies, but we were told that people, including the groom, were still hungry and thus, an order for delivery was placed. That's something I haven't seen.
Afterwards, Bunny and I followed Kay and Dale over to Joshua's house. Kay and Dale had baby-sitting duty (of Aiden and Ashley) and we decided to follow along. This was also a chance for me to see Joshua's Room O' Lego.
And a Room O' Lego it was, although earlier in the day Aiden and Ashley (around two or three years of age) had gained entry to the room and well … I felt for Josh. The Room O' Lego was too painful to view for very long. Accidents happen and well … ick … too painful to talk about …
Sob!
Sunday, October 23, 2011
A lazy Sunday
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
It was a lazy-hazy Sunday today. We had lunch with Kay, Dale, Joshua and Ethan at a local diner, where good food and good conversation followed. Kay mentioned that we should head out to the Yates Cider Mill, but that they wouldn't be able to join us.
I wanted nothing more than a nap. Bunny was intent on going to the cider mill. We compromised—I'd take a nap at the hotel, and Bunny would go to the cider mill.
I'm not sure who go the better deal in the end. I got a nice four hour nap. Bunny got the best apple cider, ever, but had to fight traffic, an hour long wait for the bathroom, and thousands of people, all fighting for the best apple cider, ever.
It's probably a wash.
For dinner, we met with Jan and Ed for dinner. Again, good food, good conversation, but it ended all too soon.
Monday, October 24, 2011
And now for the educational portion of our trip
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
There were three reasons why I decided to drive to Detroit:
- Nathan and Melanie's wedding;
- Buddy's Pizza;
- one exhibit at The Ford Museum.
Two down, one to go.
The sole exhibit I wanted to see was Buckminster Fuller's Dymaxion House. When I first read about it (oh, some time in 2003 or 2004 I think) it seemed like an incredible idea—an entire house, mass produced like a car, out of aluminium, with no part weighting more than 10 pounds (or something silly like that). There were even two pre-built bathrooms installed in the house (out of four parts). Crazy stuff.
I took a ton of pictures [most of which, upon viewing, don't make a lot of sense unless you know what you are looking at. —Editor] on about three passes through the house.
Bunny was able to pull me away to view some of the other exhibits in the museum, like the trains:
And she convinced me
to go out and view a portion of Greenwichfield
Village, which was much better than I expected. Little did I know that
many of the buildings were the original buildings, moved, at Henry
Ford's expense, to Greenwichfield Village as part of the
museum.
It was interesting to see old technology still in use in the village, and
just how clever it was too. We didn't see the entire village (Thomas
Edison's laboratory is somewhere in Greenwichfield Village) but
what we did see was incredible.
Tuesday, October 25, 2011
The long way home
[The following entries are being written a month after the fact. I have no excuse, other than laziness and a severe case of procrastination; story of my life. So, without further ado … ]
We loaded up the car, checked out of the hotel, stopped by Buddy's Pizza one last time (our third time), took two pies with us, and started the long drive home.
At least this time, it wasn't raining.
And we still manged to hit traffic going through Cincinnatti.
Sigh.
The last time I made the drive from Michigan to Florida, it was in 1983. My mom's cousin Rick was in the area and to save on air fare, it was decided that I would drive back with him and his two kids (eight and five).
So there we were, stuck in a Camero (yea Gods!) on a two-day journey through Hell. To this day, I still avoid Long John Silver's and the Waffle House—emotional scarring and all that.
At least this time, there were two of us, no kids, in a mid-sized car and no scraps of metal flying into the air and taking out the fender.
Thursday, November 24, 2011
“The Muppets”
For a Thanksgiving treat, Bunny and I went to see “The Muppets,” and I must say, as sequels go, it's not bad.
And yes, it's a sequel, to the classic 1979 “The Muppet Movie.” It's not as great as that, but it's darned good.
The movie centers around Walter, a Muppet, his brother Gary (Jason Segel, who also wrote the screenplay), a human (okay, it doesn't make much sense, but really—this is a universe where there are seven foot walking chickens, talking frogs, and nine foot blue monsters; if you can accept that, then I assume you'll have to accept a Muppet having a human brother) and Gary's girlfriend (Amy Adams). Walter is the Muppet's biggest fan, and as a present, Gary presents Walter with tickets to Muppet Studios. There, he learns that the studio is in trouble, and, once he meets Kermit, convinces him to get the gang back together again for one last show to save the studio.
What's nice is that not only do they reference the original “The Muppet Movie” with the “standard rich and famous contract”, but that Gonzo is now a very successful business…thing with a plumbing supply wholesale company (in the original, he was a plumber) and they yet again leave Sweetums behind. Again (in what looks to me the original setting for that scene).
And then there's the constant breaking of the fourth wall, film metahumor (they travel by map—like in “Raiders of the Lost Ark” where they superimpose a map showing the path the hero is taking—that's how they travel in this film; or the villain (Chris Cooper) who laughs diabolically by saying “Diabolical laugh!”) and general mahem (they “obtain” a celebrity to host their show, and I'll leave it at that).
They even brought in older Muppets from the TV series, which was a nice touch (even these guys).
But … the voices are … just … a … bit off. I realize why, but still, it did interfere with my enjoyment of the film (the worst was Kermit, followed by Fozzie). They were so close, but not quite there. Also, the character of Kermit was pretty much split between Walter and Kermit himself. Kermit was always trying to keep order on “The Muppet Show” (the TV series), but here, that role was primarily Walter's.
And the cameos—it felt like “The Muppet Movie” had more cameos than this film. I'm not saying they didn't have cameos, but it felt like they had fewer this time around than in 1979.
But with that said, I loved the film.
Sunday, November 27, 2011
“Everybody lies” or “An update on the updated Greylist Daemon”
Since it's been eighteen months since the previous update of the greylist daemon, I best do a release of what I have so far, even if it's not what I wanted.
I know, I know … I said that 1.0.12 would be the last version in the 1x line, but … well … as House says: “Everybody lies.”
I never did get around to fixing the bulk transfer problem, and thus, the protocol hasn't changed, so there's no need for a major bump in the version number. And there have been a few changes in the past eighteen months. I converted the codebase to C99; there are more metrics being logged; there's better self-monitoring (it'll restart in case of a crash) but there are two large changes I need to mention.
The first one: no more recursive make. After reading “Recursive Make Considered
Harmful,” I decided to give the non-recursive make a try. The greylist daemon isn't all that
big, and listing the dependencies in one large Makefile
shouldn't be that tedious. And even if so, it's pretty much a one-time
thing.
The major benefit of doing a non-recursive make (and making sure all the dependencies are labeled correctly) is the parallel make. Making everything straight through on my development box takes around two seconds. A parallel make, on the other hand, only takes one second.
Okay, that may not sound like much (“Big whoop!”) but I converted one of the code bases I develop at work to a non-recursive make model, and on our slow Solaris development system, the parallel build time (which I couldn't even do before the change) takes 1/10th the time of a normal build. But the trick, like I said, is to list all the dependencies correctly, or else a parallel make will fail.
The other large change is probably more controversial: I removed a bunch
of command-line options from the program, mainly the configuration options.
I never used them, and given how little response I get about the project (I
know of only one other person
two other people using the software) I decided they should go.
If anyone complains, I can always add them back. But for now, they're
gone.
Monday, November 28, 2011
I haven't dont a metablog post in a while …
In addition to updating the greylist daemon, I've also updated the software that runs this blog.
The biggest change this time is to the configuration file. The first
stab at changing how it works was made back in (let me check … oh wow!
was it that long ago?) September of 2010. Prior, I had code that
checked the SCRIPT_FILENAME
environment variable (passed in by
Apache) and changed
the extention from .cgi
to .cnf
to locate the
file. That meant the configuration file had to live in the main web
directory and frankly, I felt that bit of code was always a bit of a
hack.
I changed that, however, by configuring Apache to pass the configuration filename explicitly to the script:
<VirtualHost 66.252.224.242:80> # ... <Files boston.cgi> SetEnv BLOG_CONFIG /home/spc/web/sites/boston.conman.org/journal/boston.cnf </Files> # ... </VirtualHost>
Now, no more hacking around with filenames, and the configuration file no
longer needs to be stored in a web-facing location. If you do use this
method, you'll need to check REDIRECT_BLOG_CONFIG
as well
(which Apache sets when it does a redirect, and only a redirect).
And that was it for the configuration file until earlier this month. The next big change is how it looks. Prior to the changes this month, the configuration file looked like:
Comment: Comment: ********************************************* Comment: * Comment: * Configure File for the Boston Diaries Comment: * Comment: ********************************************** Comment: Name: The Boston Diaries Backend: /home/spc/source/boston.old.1.9/sbg/bp BaseDir: /home/spc/web/sites/boston.conman.org/journal WebDir: /home/spc/web/sites/boston.conman.org/htdocs/ BaseUrl: / FullBaseUrl: http://boston.conman.org Templates: html/regular DayPage: /home/spc/web/sites/boston.conman.org/htdocs/index.html Days: 7 RssFile: /home/spc/web/sites/boston.conman.org/htdocs/bostondiaries.rss RssTemplates: rss RssFirst: latest AtomFile: /home/spc/web/sites/boston.conman.org/htdocs/index.atom AtomTemplates: atom Comment: TabTemplates: html/sidebar Comment: TabFile: /home/spc/web/sites/boston.conman.org/htdocs/boston.tab.html Comment: TabFirst: latest StartDate: 1999/12/4 Author: Sean Conner Comment: Authors: /home/spc/web/sites/boston.conman.org/users Email: sean@conman.org Email-List: /home/spc/web/sites/boston.conman.org/notify/db/email Email-Message: /home/spc/web/sites/boston.conman.org/notify/mail/notify Email-Subject: The Boston Diaries Update Notification Facebook-AP-ID: XXXXXXXXXXXXXXX Facebook-AP-Secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Facebook-User: XXXXXX _System-CPU: 600 _System-Mem: 20971520 _System-Core: 0 _System-Locale: en_SPC
Let me explain how this came about. I had code to parse RFC-822 style headers (because at the time I had code to fetch pages via HTTP and it's needed there; also, I can accept entries via email and I need it there too) and instead of writing even more code to parse a configuration file, I decided to shoehorn the configuration file into an RFC-822 format.
And thus, the odd format for the configuration file. It's also never
been fully clensed of old features (I no longer have a backend, so the
Backend:
header could go; I removed support for the tab
template, so TabTemplates:
, TabFile:
and
TabFirst:
could go as well—don't bother asking what the tab
file was for, it'll take too long to explain and as far as I know, nobody,
including myself, ever bother using it).
Even since I started playing around with Lua, I've been playing around with the idea of using it as a configuration file, and I finally got around to doing it.
process = require("org.conman.process") os = require("os") -- --------------------------------------------------------------------- -- Custom locale to get "Debtember" without special code in the program -- --------------------------------------------------------------------- os.setlocale("en_SPC") -- -------------------------------------------------------------------- -- process limits added because an earlier version of the code actually -- crashed the server it was running on, due to resource exhaustion. -- -------------------------------------------------------------------- process.limits.hard.cpu = "10m" -- 10 minutes process.limits.hard.core = 0 -- no core file process.limits.hard.data = "20m" -- 20 MB -- -------------------------------------------------------- -- We now resume our regularly scheduled config file -- -------------------------------------------------------- name = "The Boston Diaries" basedir = "/home/spc/web/sites/boston.conman.org/journal" webdir = "/home/spc/web/sites/boston.conman.org/htdocs" url = "http://boston.conman.org/" author = { name = "Sean Conner" , email = "sean@conman.org" } startdate = "1999/12/4" templates = { { template = "html/regular", output = webdir .. "/index.html", items = "7days", reverse = true }, { template = "rss", output = webdir .. "/bostondiaries.rss", items = 15, reverse = true }, { template = "atom", output = webdir .. "/index.atom", items = 15, reverse = true } } email = { list = "/home/spc/web/sites/boston.conman.org/notify/db/email", message = "/home/spc/web/sites/boston.conman.org/notify/mail/notify", subject = name .. " Update Notification", } facebook = { ap_id = "XXXXXXXXXXXXXXX", ap_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", user = "XXXXXX" } affiliate = { { proto = "asin", link = "http://www.amazon.com/exec/obidos/ASIN/%s/conmanlaborat-20" } }
Not only does it look much nicer (Whitespace! Real comments!) but I was able to remove code to handle the resource limits (it's now handled in Lua—and I'll talk about that in another entry) and locales (which supports a feature I added back in October 2003).
Also, by doing this, I partially cleaned up the template mess. Before, I had to explicitely add code to support specialized templates (the HTML output, the RSS and ATOM feed files and the long-since-removed tab file); now, I can specify new templates by just adding them to the configuration file. The only limitation is that the HTML template has to be specified first (it's easier to code that way).
You'll also notice a section labeled affiliate
. That I
threw in at the last moment. I'm an Amazon affiliate and if I wanted to link
to, say, a book from my friend Hoade, I would have to manually generate the
link, but now, I can just do:
<a class="book" href="asin:0595095291">Ain't that America</a>
and it'll be converted automatically to the correct link:
<a class="book" href="http://www.amazon.com/exec/obidos/ASIN/http://www.amazon.com/exec/obidos/ASIN/0595095291/conmanlaborat-20">Ain't that America</a>
Or rather, Hoade's book Ain't that America.
On the down side, in trying to release this (the last releast was in September of 2009, and before that, July of 2004) I found a rather curious bug—below a certain threshhold of entries (and there're currently over 3,700 here in this blog), the program crashes. There's probably an assumption built into the code about there always being a previous entry, but for a new blog, that's not necessarily the case and in tracking down the issue, I found that it appears to have something to do with the internal caching I do of entries. Like the old joke goes:
There are only two hard problems in Computer Science: cache invalidation, naming things, and off-by-one errors.
And I think I'm being hit by one of—
Core error - bus dumped
Some Lua trickery
In my previous post, I presented this bit of Lua code:
process = require("org.conman.process") -- -------------------------------------------------------------------- -- process limits added because an earlier version of the code actually -- crashed the server it was running on, due to resource exhaustion. -- -------------------------------------------------------------------- process.limits.hard.cpu = "10m" -- 10 minutes process.limits.hard.core = 0 -- no core file process.limits.hard.data = "20m" -- 20 MB
It looks like a simple assignment to set process limits, yet under Unix,
you need to call setrlimit()
. What's happening under the hood
(so to speak) is that it's easy to intercept assignments to tables (Lua
“go-to” data structure) and that's exactly what's going on here. During
the process of registering the module org.conman.process
(more
on the name later) we create some fake structures for the hard limits (and
soft limits, but since it's similar, I'll skip that part) and attach a
metatable, which contains code to intercept both reads and writes so we can
do a bit of magic:
#define SYS_LIMIT_HARD "rlimit_hard" #define SYS_LIMIT_SOFT "rlimit_soft" static const struct luaL_reg mhlimit_reg[] = { { "__index" , mhlimitlua___index } , { "__newindex" , mhlimitlua___newindex } , { NULL , NULL } }; static const struct luaL_reg mslimit_reg[] = { { "__index" , mslimitlua___index } , { "__newindex" , mslimitlua___newindex } , { NULL , NULL } }; int luaopen_org_conman_process(lua_State *const L) { void *udata; assert(L != NULL); luaL_newmetatable(L,SYS_LIMIT_HARD); luaL_register(L,NULL,mhlimit_reg); luaL_newmetatable(L,SYS_LIMIT_SOFT); luaL_register(L,NULL,mslimit_reg); luaL_register(L,"org.conman.process",mprocess_reg); lua_createtable(L,0,2); udata = lua_newuserdata(L,sizeof(int)); luaL_getmetatable(L,SYS_LIMIT_HARD); lua_setmetatable(L,-2); lua_setfield(L,-2,"hard"); udata = lua_newuserdata(L,sizeof(int)); luaL_getmetatable(L,SYS_LIMIT_SOFT); lua_setmetatable(L,-2); lua_setfield(L,-2,"soft"); lua_setfield(L,-2,"limits"); return 1; }
When Lua sees an assignment to the process.limits.hard
table, it calls mhlimit_lua___newindex()
, where the magic
happens:
static int mhlimitlua___newindex(lua_State *const L) { struct rlimit limit; void *ud; const char *tkey; int key; lua_Integer ival; assert(L != NULL); ud = luaL_checkudata(L,1,SYS_LIMIT_HARD); tkey = luaL_checkstring(L,2); if (!mlimit_trans(&key,tkey)) return luaL_error(L,"Illegal limit resource: %s",tkey); if (lua_isnumber(L,3)) ival = lua_tointeger(L,3); else if (lua_isstring(L,3)) { const char *tval; const char *unit; tval = lua_tostring(L,3); ival = strtoul(tval,(char **)&unit,10); if (!mlimit_valid_suffix(&ival,key,unit)) return luaL_error(L,"Illegal suffix: %c",*unit); } else return luaL_error(L,"Non-supported type"); limit.rlim_cur = ival; limit.rlim_max = ival; setrlimit(key,&limit); return 0; }
We basically take the key we're given, say, “cpu”, and translate it to
the appropriate value (which happens in
mlimit_trans()
—nothing terribly interesting, it just maps the
string to the appropriate constant value, in this example,
RLIMIT_CPU
) and the same for the value; if it's a number, we'll
use that and if it's a string, we'll convert it to a value and use any
suffix to modify the value. For our example, “cpu”, it's a meaure of
time, so the suffix “m” means “minutes.”
mlimit_valid_suffix()
handles this and again, it's pretty
straightforward code.
I think it's a pretty cool trick, but I can see why some might not like the idea of masking what amounts to a system call with what looks like a simple assignment, since it does have side effects outside of the simple assignment, but I like the way it looks, and it's a more “natural” or even “Luaish” way of specifying the intent of the code.
Now, on to the name of the module, org.conman.process
. When
I first started playing around with Lua I wrote a few modules that did
similar operations as existing modules, with the same names. One example is
syslog
. There's an existing Lua syslog module, but I don't like
how it works, so I wrote my own.
The problem now becomes, what if I want to use a module that uses the
existing Lua syslog module, but the rest of my code uses mine? If they both
have the same name, some code is going to get a nasty surprise. To work
around that, I decided to put all my modules under a “namespace” I control
and is not likely to cause any conflicts with any existing (or even future)
modules. Thus, the org.conman
namespace.
Tuesday, November 29, 2011
Yet more code released
- From
- S Page <XXXXXXXXXXXXXXXXXXX>
- To
- sean@conman.org
- Subject
- your "program that will select the URL and HTML from the Firefox primary text selection" ?
- Date
- Tue, 29 Nov 2011 15:43:56 -0800
Hey there, I'm trying to find a command-line program that will output the HTML of Firefox's current selection. Klipper, xsel, xclip, etc. all just deal with the plain text. None of them admit to doing the content negotiation.
In http://boston.conman.org/2008/12/03.1 you investigated and hacked away and came up with a program. Awesome … so where is it, can you share it?
In my case I just want to grab the actual HTML of a humongous dynamic Facebook page, so big that Firefox's Select All then View Selection Source exhausts memory.
Your hack of composing the various clipboard formats into a mini citation is really cool, I wish something like Klipper had such templating ability.
Cheers,
–
=S Page
Wow! Somebody's interested in something I wrote! Very cool!
And yes, I did make the source code available, although there's no documentation, it uses a library I no longer maintain, and it might be a bit temperamental to use, but it is available.
And I nearly forgot—the program xselect.c
, a program I wrote that can be used to
query and get the various forms of the current X11 selection buffer.
Wednesday, November 30, 2011
The royal deal that was a royal pain
seems while the players (all 4 of them) were taking a break, the dealer thought it would be funny to setup the deck to give all 4 the royal flush. essentially no one would be getting hurt, and all get back their money. now everything was going according to plan, and suddenly one old man was screaming how he had a royal flush and wanted his money. the other players told him they ALL had the royal, and i dont know if he was senile, or didnt believe them, but he insisted the floor call gaming, and it seems he eventually got paid and the dealer got fired.
Via The Fourth Checkraise, tbc's blog about grinding low stakes poker: well i finally got it to work
This is for my dad, and especially for my friend H (who is currently a dealer in Las Vegas). I still remember the last time he tried stacking the deak and slowly watching it backfire on him as I got the winning hand. I literally fell on the floor clutching my sides from laughing so hard.
Thursday, Debtember 01, 2011
It took me five hours to build a five minute tool
I've heard of HyperCard, but having gotten into the Apple Mac scene just recently (like in the past two years) I've never seen it in action. I've heard great things about it and the types of stacks (which is what a HyperCard “program” is called) that have been created with it.
So I'm reading about why HyperCard had to die, which is more than just about HyperCard needing to die. It's also a tutorial about running HyperCard. I thought how hard could this be? So I start downloading …
Five hours later …
Oh. That hard.
I failed to get the Basilisk II binary for Mac OS X (as
the site that hosts that appears to be down). Compiling it from source
failed in the linking stage with an undefined reference to
__gxx_personality_v0
and frankly, I'm just curious about
HyperCard; I am not interested in debugging a build problem with a
Macintosh emulator.
I then tried Executor, but given that I needed to run the GNU autotools prior to compiling and having that fail meant I discarded that solution; I am not interested in debugging an autotool problem with a Macintosh emulator.
It was at this time I found Mini vMac. There was an existing Mac OS-X executable (so nothing to build). Older Mac OS systems are freely available from Apple, leaving only the Macintosh ROMs to procure. I happen to have a Macintosh Classic, so I'll skip the details on extracting the ROM images from a machine I have no way of transferring any data from and that in no way involves using an Internet search engine to find a ROM image I could use. Nope. Did it the hard way. Tin cans. String. In the snow. Up hill. Both ways. That's my story, and I'm sticking to it.
So now I can start up the Mac emulator with the ROM image I totally copied from the Macintosh Classic I have (cough cough—sorry about that) and it's asking for a disk image to use.
Then came the issue of extracting the disk images from the Apple site. The modern
Mac's default extracting program can't deal with the format. Existing free
programs to do so under Linux don't work (I tried two different packages
that are so old, they're shar
files) and
most Mac based programs want money. I did find one free program that can
extract Mac-based archives and that worked beautifully.
It then took another hour or so to get System 7.0.1 installed (hint: you may find these blank disk images helpful to have someplace to install the software).
And finally, I can run HyperCard!
I then was able to finish the tutorial and ended up with a working calculator in less than five minutes time.
And just for comparison, here is a screen shot with the system calculator:
Now, HyperCard is more than just a precursor to Visual Basic, but at least now I can play around with it and see what all the hype was about.
See! I told you I own a Macintosh Classic!
Sunday, Debtember 04, 2011
Sigh—another update of the Greylist Daemon
Oops. I let a bug slip through the latest release of the greylist daemon. It was a rather bad bug, one that was a show-stopper. My fault for not fully testing what I thought were last minute cosmetic changes to the code.
Ah well, what happened, happened, and I just released a new version.
Monday, Debtember 05, 2011
Oh those crazy Nigerians
- From
- "AGENT RONALD T. HOSKO."<XXXXXXXXXXXXXXXXXX>
- To
- undisclosed-recipients:;
- Subject
- FEDERAL BUREAU OF INVESTIGATION
- Date
- Sun, 4 Dec 2011 01:44:28 -0800
I HOPE YOU UNDERSTAND HOW MANY TIMES THIS MESSAGE HAS BEEN SENT TO YOU?. WE HAVE WARNED YOU SO MANY TIME AND YOU HAVE DECIDED TO IGNORE OUR E-MAILS OR BECAUSE YOU BELIEVE WE HAVE NOT BEEN INSTRUCTED TO GET YOU ARRESTED, KINDLY OPEN THE ATTACHED FILE BELOW FOR FULL DETAILS (DUE TO SECURITY REASON)
RESPECTIVELY
AGENT RONALD T. HOSKO.
FEDERAL BUREAU OF INVESTIGATION (FBI)
THIS IS THE (F.B.I)
FBI HEADQUARTERS IN WASHINGTON, D.C.
FEDERAL BUREAU OF INVESTIGATION
J. EDGAR HOOVER BUILDING
935 PENNSYLVANIA AVENUE,
NW WASHINGTON, D.C. 20535-0001
E=MAIL:(washingtonfbi@washington.usa.com)
FEDERAL BUREAU OF INVESTIGATION (FBI)ATTENTION DEAR THIS IS THE FINAL WARNING YOU ARE GOING TO RECIEVE FROM ME DO YOU GET ME????
I HOPE YOU UNDERSTAND HOW MANY TIMES THIS MESSAGE HAS BEEN SENT TO YOU?.
WE HAVE WARNED YOU SO MANY TIME AND YOU HAVE DECIDED TO IGNORE OUR E-MAILS OR BECAUSE YOU BELIEVE WE HAVE NOT BEEN INSTRUCTED TO GET YOU ARRESTED, AND TODAY IF YOU FAIL TO RESPOND BACK TO US WITH THE PAYMENT THEN, WE WOULD FIRST SEND A LETTER TO THE MAYOR OF THE CITY WHERE YOU RESIDE AND DIRECT THEM TO CLOSE YOUR BANK ACCOUNT UNTIL YOU HAVE BEEN JAILED AND ALL YOUR PROPERTIES WILL BE CONFISCATED BY THE FBI.
WE WOULD ALSO SEND A LETTER TO THE COMPANY/AGENCY THAT YOU ARE WORKING FOR SO THAT THEY COULD GET YOU FIRED UNTIL WE ARE THROUGH WITH OUR INVESTIGATIONS BECAUSE A SUSPECT IS NOT SUPPOSE TO BE WORKING FOR THE GOVERNMENT OR ANY PRIVATE ORGANIZATION.
YOUR ID WHICH WE HAVE IN OUR DATABASE BEEN SENT TO ALL THE CRIMES AGENCIES IN AMERICA FOR THEM TO INSET YOU IN THEIR WEBSITE AS AN INTERNET FRAUDSTERS AND TO WARN PEOPLE FROM HAVING ANY DEALS WITH YOU. THIS WOULD HAVE BEEN SOLVED ALL THIS WHILE IF YOU HAD GOTTEN THE CERTIFICATE SIGNED, ENDORSED AND STAMPED AS YOU WHERE INSTRUCTED IN THE E-MAIL BELOW.THIS IS THE FEDERAL BUREAU OF INVESTIGATION (FBI) AM WRITING IN RESPONSE TO THE E-MAIL YOU SENT TO US AND AM USING THIS MEDIUM TO INFORM YOU THAT THERE IS NO MORE TIME LEFT TO WASTE BECAUSE YOU HAVE BEEN GIVEN FROM THE 3RD OF JANUARY.
AS STATED EARLIER TO HAVE THE DOCUMENT ENDORSED, SIGNED AND STAMPED WITHOUT FAILURE AND YOU MUST ADHERE TO THIS DIRECTIVES TO AVOID YOU BLAMING YOURSELF AT LAST WHEN WE MUST HAVE ARRESTED AND JAILED YOU FOR LIFE AND ALL YOUR PROPERTIES CONFISCATED.
YOU FAILED TO COMPLY WITH OUR DIRECTIVES AND THAT WAS THE REASON WHY WE DIDN'T HEAR FROM YOU ON THE 3RD AS OUR DIRECTOR HAS ALREADY BEEN NOTIFIED ABOUT YOU GET THE PROCESS COMPLETED YESTERDAY AND RIGHT NOW THE WARRANT OF ARREST HAS BEEN SIGNED AGAINST YOU AND IT WILL BE CARRIED OUT IN THE NEXT 48HOURS AS STRICTLY SIGNED BY THE FBI DIRECTOR.
WE HAVE INVESTIGATED AND FOUND OUT THAT YOU DIDN'T HAVE ANY IDEA WHEN THE FRAUDULENT DEAL WAS COMMITTED WITH YOUR INFORMATION'S/IDENTITY AND RIGHT NOW IF YOU ID IS PLACED ON OUR WEBSITE AS A WANTED PERSON, I BELIEVE YOU KNOW THAT IT WILL BE A SHAME TO YOU AND YOUR ENTIRE FAMILY BECAUSE AFTER THEN IT WILL BE ANNOUNCE IN ALL THE LOCAL CHANNELS THAT YOU ARE WANTED BY THE FBI.
AS A GOOD CHRISTIAN AND A HONEST MAN, I DECIDED TO SEE HOW I COULD BE OF HELP TO YOU BECAUSE I WOULD NOT BE HAPPY TO SEE YOU END UP IN JAIL AND ALL YOUR PROPERTIES CONFISCATED ALL BECAUSE YOUR INFORMATION'S WAS USED TO CARRY OUT A FRAUDULENT TRANSACTIONS, I CALLED THE EFCC AND THEY DIRECTED ME TO A PRIVATE ATTORNEY WHO COULD HELP YOU GET THE PROCESS DONE AND HE STATED THAT HE WILL ENDORSE, SIGN AND STAMP THE DOCUMENT AT THE SUM OF $499 USD ONLY AND I BELIEVE THIS PROCESS IS CHEAPER FOR YOU.
YOU NEED TO DO EVERYTHING POSSIBLE WITHIN TODAY AND TOMORROW TO GET THIS PROCESS DONE BECAUSE OUR DIRECTOR HAS CALLED TO INFORM ME THAT THE WARRANT OF ARREST HAS BEEN SIGNED AGAINST YOU AND ONCE IT HAS BEEN APPROVED, THEN THE ARREST WILL BE CARRIED OUT, AND FROM OUR INVESTIGATIONS WE LEARNT THAT YOU WERE THE PERSON THAT FORWARDED YOUR IDENTITY TO ONE IMPOSTOR/FRAUDSTERS IN NIGERIA LAST YEAR WHEN HE HAD A DEAL WITH YOU ABOUT THE TRANSFER OF SOME ILLEGAL FUNDS INTO YOUR BANK ACCOUNT WHICH IS VALUED AT THE SUM OF $10.500,000.00 USD.
I PLEADED ON YOUR BEHALF SO THAT THIS AGENCY COULD GIVE YOU THE 2011/12/02f SO THAT YOU COULD GET THIS PROCESS DONE BECAUSE I LEARNT THAT YOU WERE SENT SEVERAL E-MAIL WITHOUT GETTING A RESPONSE FROM YOU, PLEASE BEAR IT IN MIND THAT THIS IS THE ONLY WAY THAT I CAN BE ABLE TO HELP YOU AT THIS MOMENT OR YOU WOULD HAVE TO FACE THE LAW AND ITS CONSEQUENCES ONCE IT HAS BEFALL ON YOU.YOU WOULD MAKE THE PAYMENT THROUGH MONEY GRAM TRANSFER OR WESTERN UNION MONEY TRANSFER WITH THE BELOW DETAILS.
RECEIVER NAME ==== PAUL UBA
COUNTRY========== NIGERIA
CITY============== LAGOS
TEXT QUESTION==== WHEN
TEXT ANSWER===== TODAY TODAY
AMOUNT=====$499USD
SENDERS NAME======SEND THE PAYMENT DETAILS TO ME WHICH ARE SENDERS NAME AND ADDRESS, MTCN NUMBER, TEXT QUESTION AND ANSWER USED AND THE AMOUNT SENT.
MAKE SURE THAT YOU DIDN'T HESITATE MAKING THE PAYMENT DOWN TO THE AGENCY BY TODAY SO THAT THEY COULD HAVE THE CERTIFICATE ENDORSED, SIGNED AND STAMPED IMMEDIATELY WITHOUT ANY FURTHER DELAY. AFTER ALL THIS PROCESS HAS BEEN CARRIED OUT, THEN WE WOULD HAVE TO PROCEED TO THE BANK FOR THE TRANSFER OF YOUR COMPENSATION FUNDS WHICH IS VALUED AT THE SUM OF $10,500,000.00 USD WHICH WAS SUPPOSE TO HAVE BEEN TRANSFERRED TO YOU ALL THIS WHILE.
NOTE/ ALL THE CRIMES AGENCIES HAS BEEN CONTACTED ON THIS REGARDS AND WE SHALL TRACE AND ARREST YOU IF YOU DISREGARD THIS INSTRUCTIONS.
YOU ARE GIVEN A GRACE TODAY TO MAKE THE PAYMENT FOR THE DOCUMENT AFTER WHICH YOUR FAILURE TO DO THAT WILL ATTRACT A MAXIMUM ARREST AND FINALLY YOU BE APPEARING IN COURT FOR ACT OF TERRORISM,MONEY LAUNDERING AND DRUG TRAFFICKING CHARGES, SO BE WARNED NOT TO TRY ANY FUNNY BECAUSE YOU ARE BEEN WATCHED.
THANKS AS I WAIT FOR YOUR RESPONSE
RESPECTIVELY
AGENT RONALD T. HOSKO.
FEDERAL BUREAU OF INVESTIGATION (FBI)
I constantly receive Nigerian 419 scams all the time and it takes a really great one to make it post worthy, and this one, despite being long AND IN ALL CAPS is well worth the time to read. This is the first time I've seen a Nigernian scammer blackmailing victims to respond. I'm sure Susan Whelchel has nothing better to do than to instruct the Boca Raton Police Department to come to Chez Boca and arrest me for terrorism, money laundering and drug trafficking, unless I pay $500 to help launder $10,500,00.00.
Nice deal, “pay $500 to ‘obtain’ $10,500,000 or we'll be forced to arrest you.” I don't even think the Mafia ever had the gumption to try that approach.
It's also funny (as in “ha ha” funny, not “interesting” funny) that the FBI would have me send the money to Nigeria. It's also telling that the Nigerian scammers are at least doing some minimal research, as Ronald Hosko is a real FBI agent, although everything else (email addresses, websites, etc.) they got wrong.
But it's a start.
And if, on the off chance that this is true, then when I disappear, you'll know what happened to me.
Nice move ISP—people who forward spam to the spam complaint department will have their email flagged as spam and dropped immediately
Okay, that was amusing.
Normally, I post entries via email. I get to use an editor I'm used to using and I don't have to type in a small text field using whatever the web browser thinks is a capable editor (it never is).
But when I went to “post” my previous entry it never showed up. I could see my computer here delivering the email, but I never saw it show up on my server.
“But Sean,” you say, “if you saw your computer deliver the email, but your server never got it … um … how does that work?”
“Glad you ask,” I say, knowing full well that you didn't really ask at all. My ISP blocks all outbound email except through their servers. So I had to configure my local email server at Chez Boca to deliver my email through The Monopolistic Phone Company server, which usually then delivers the email to my server which ends up posting an entry to the blog.
So, my computer here delivered the post to The Monopolistic Phone Company, where it seems it was immedately swallowed up, no doubt marked as spam because it quoted extensively from a … um … well … “questionable” email. So I'm sure my email was automatically classified as spam and dumped directly into the bit bucket.
Now watch as in a few hours the two copies I sent show up posted here.
Tuesday, Debtember 06, 2011
It didn't take me quite as long this time
I decided to give Basilisk II another try, given the proper files
for Mac System 8 were available. The problem I had last time appeared to be a
simple compiler problem, and forcing the Makefile
to use
g++
got past that issue.
I then had to make a bazillion casts in one of the files, since
g++
didn't like the code:
../uae_cpu/gencpu.c:2422: error: invalid conversion from `unsigned int' to `amodes' ../uae_cpu/gencpu.c:2422: error: initializing argument 1 of `void genamode(amodes, char*, wordsizes, char*, int, int)' ../uae_cpu/gencpu.c:2422: error: invalid conversion from `unsigned int' to `wordsizes' ../uae_cpu/gencpu.c:2422: error: initializing argument 3 of `void genamode(amodes, char*, wordsizes, char*, int, int)'
It seems one cannot cast an unsigned bitfield to an enum in
g++
without a cast. There were only a bazillion locations to
change in that one file, but once done, I had Basilisk II running on my
Linux system.
A nice feature of Basilisk II is that it can mount a Unix directory as a
Mac “drive” so transferring files in and out of the virtual Macintosh is
very easy and I no longer need to use hfsutils
on disk
images.
Software archaeology is apparently a real thing
My job now was to smuggle these documents back into the company. I would be happy to just hand them over. But that doesn't make any sense to the company. The company officially has these documents (digitally managed!), and officially I don't. In reality, the situation is the reverse, but who wants to hear that? God knows what official process would let me fix that.
…
Oh, and as an external consultant, I'm not allowed to know some of the trade secrets in the documents. The internal side of the team needs to handle the sensitive process information, and be careful about how that information crosses boundaries when talking to the external consultants. Unfortunately, the internal team doesn't know what the secrets are, while I do. I even invented a few of them, and have my name on some related patents. Nonetheless, I need to smuggle these trade secrets back into the company, so that the internal side can handle them. They just have to make sure they don't accidentally repeat them back to me.
Via Flutterby, Institutional memory and reverse smuggling
This sounds like a cautionary tale of what happened to Stonehenge or the Pyramids of Giza—they were built, but now years later the project documentation got misfiled somewhere and we're stuck with trying to reconstruct how it happened.
Actually, now that I think about it, it also sounds like a lot of software projects.
Hmmm … oh my … no … just no …
“My unit test had moved Greenland into Argentina.”
… but on October 7th this year, Argentina announced that it wasn't going to use daylight saving time any more … 11 days before its next transition. The reason? Their dams are 90% full. I only heard about this due to one of my unit tests failing. For various complicated reasons, a unit test which expected to recognise the time zone for Godthab actually thought it was Buenos Aires. So due to rainfall thousands of miles away, my unit test had moved Greenland into Argentina. Fail.
Via Hacker News, OMG Ponies!!! (Aka Humanity: Epic Fail) - Jon Skeet: Coding Blog
I have no words for this, other than “be afraid. Be very afraid.”
Friday, Debtember 09, 2011
Notes from a catered lunch on the eighth floor
To help celebrate the Holiday Season™, The Corporation decided to cater our lunch today. The catering company selected saw that The Ft. Lauderdale Office (which has since moved to a new location), on the 8th floor, has a sizable patio and felt it would be nice to serve our lunch on the patio.
The picture is of our patio from the ground floor. At the top of the section of building on the right hand side is our patio. It's sizable. And did I mention it's on the 8th floor?
Because the weather today was a bit blustery. Blustery enough that at the 8th floor, setting up a tent was not a good idea.
The wind picked it up and pitched it over the side like a piece of tissue. Fortunately, no one was hurt, and the only damage sustained was to the tent itself from its short flight.
We ate lunch inside The Ft. Lauderdale Office, and not on The Patio of the Ft. Lauderdale Office.
Tuesday, Debtember 20, 2011
Inappropriate Behavior: Short Transgressions
Okay, I'm totally biased, but what can I say? Sean Hoade is my best friend, and his new book of short stories, Inappropriate Behavior: Short Transgressions has just been released for the Kindle. You will buy this book! If not for you, then as a present.
(Oh, and if you don't like Amazon, Inappropriate Behavior: Short Transgressions is also available for the Nook, so there's no excuse---buy this book!)
Saturday, Debtember 24, 2011
History in your own backyard
Thanks to a random link to Cracked.com from my friend Hoade (damn him for sucking me into Cracked,com, but buy his book!) I spent the past several hours reading article upon article (like this hasn't happened before) when I came across this very interesting fact about Brevard, North Carolina.
I lived there for only five years, but I still have a soft spot for the place, even thirty years later. At the time, I thought it was very cool that the town was the county seat for Transylvania County (how cool is that?). Little did I realize that there was a secret NSA installation just outside of town.
And now, I just learned that there was a shooting war between North Carolina, South Carolina and Georgia over what later became Transylvania County, known as The Walton War. It started out as a place no one wanted but after some urban development and accurate surveying, everybody wanted it, and were willing to fight for it (even up till 1971!).
Why did I not learn this in school?
I mean, I can understand not learning about it in Florida schools, but I attended school in Brevard! This was local history! With shooting and stuff! And by local, I mean, passing a battle field on the way to my friend's house (and a mile from the school no less!).
What will I learn about Brevard next? Maybe mutant circus squirrels taking over the town? Hey … wait a second …