merlyn's Journal merlyn's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2006-10-14T21:15:36+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 merlyn's Journal "Communication is free" Not sure why it took this long, but <a href="">someone has finally posted audio</a> from my "Communication is free" talk at FISL7.0 in Brazil a few months ago. merlyn 2006-10-05T14:56:02+00:00 journal You don't know objects if you don't know Smalltalk <p>I've often argued that a programmer who says "I know objects" without having touched one of the "pure object" systems like Smalltalk or Eiffel, doesn't really know "objects". When people would ask "what is smalltalk?", I'd point them at <a href="">Squeak</a>. </p><p>Well <a href="">Keith Fieldhouse</a> has gone and done the next good thing: he's written <a href="">an article for OnLAMP about Squeak</a> that gives far more handholding than I've been able to do quickly. Yeay Keith. That one's going into my bookmarks.</p> merlyn 2006-09-22T14:17:47+00:00 journal "Responsible Breech Reporting" - me on another podcast again <p>I was interviewed for <a href="">another episode of Security Catalyst</a>: this time, a panel on reponsible breech reporting. Check it out! </p><p> <i>Update:</i> or yeah, breach not breech!</p> merlyn 2006-09-18T02:37:55+00:00 journal Perl Fridge Magnets as OmniGraffle Template Perhaps posted before, but I just stumbled across <a href="">the Perl Fridge Magnets as an OmniGraffle stencil</a>. Enjoy. merlyn 2006-09-17T16:51:58+00:00 journal Plates on sticks! Bears on bicycles! And a group doing <a href="">the Sabre Dance</a> on marimba! merlyn 2006-08-30T04:39:32+00:00 journal More Leo, more cruise comments, and now in MP3 goodness <p> I've just pushed episodes 12 to 14 of <a href="">GeekCruises News-es: The Podcast</a> on the time-release site (the first came out today). In these episodes, my buddy Leo Laporte interviews <i>me</i> in a sort of "reverse interview format". </p><p> Also, based on a lot of feedback, I've dropped the "enhanced podcast" format and replaced it with a traditional MP3 flavor. All my grand plans of having lots of embedded pictures and URL links haven't materialized in the first 11 shows, so it's time to fall back to something almost everybody can enjoy.</p> merlyn 2006-08-07T15:55:38+00:00 journal FLOSS weekly interviews *me* <a href="">Hear me talk!</a> merlyn 2006-07-15T07:31:01+00:00 journal - part 2 of leo laporte Part 2 of my podcast interview with Leo Laporte is up, where we talk about the origin of the name of the <a href="">Amazon Mechanical Turk</a>. Subscribe or just listen at <a href=""></a>. merlyn 2006-07-03T13:19:03+00:00 journal Why muni-provided "free" wi-fi is a bad idea <p>I'm against muni-provided connectivity for three reasons. And none of these apply to things like "police" or "fire", so let me explain why the typical analogy to "public services" doesn't apply. </p><dl> <dt>First, there's the "accountability" issue:</dt> <dd> <p> Without "billing", there's no accountability. If I can get free connections, I can send spam to my heart's content, and you can't turn me off, because I can quickly become "another free user" in a matter of microseconds. </p><p> And I can start p2p-sharing my child pr0n and ripped movie and song collections, and again, you can't turn me off, because I don't actually have a contract with you to terminate. Sure, you can arrest me, but you have to find me in the mesh. It's not like you have a street address for me. Heck, I might even be operating from a van that constantly drives around.</p></dd> <dt> Second, there's the "taxpayer dollar" issue:</dt> <dd> <p> Whether we like it or not, when citizens start paying for shipping bits, they're gonna want some say in the kinds of things that are being shipped across the wire. The moment the soccer mom figures out that part of her tax dollar is paying for that creepy guy over there to download his pr0n, she's gonna be storming city hall. And she's also going to be complaining loudly when she finds out that her son can access all sorts of evil things "over the city's wireless system!" She'll want controls put in place, and rightfully so. After all, she's paying for it. </p><p> As evidence, look at the constant tug-of-war and lawsuits regarding internet access at public libraries. Do you really want to open this up on a city-wide scale? It's the very same issue. </p><p> So, no matter how "open" some of us want this, it's going to start getting filtered. We'll never have a truly censorship-free mesh, except for perhaps the first six months. And if there's a constitutional challenge that comes down to a free-speech thing, it'll more likely get shut off than opened back up.</p></dd> <dt> Third, we kill the incentive for competition:</dt> <dd> <p> OK, you say. Then if there's enough demand for an uncensored equivalent, some private sector can come along and provide a different mesh that provides the full bits. </p><p> Well, that's ignoring the economics of the situtation. To deploy a city-wide private sector net requires a fairly large infrastructure, and that can only be supported by having access to a large customer base. But most of the customers of the "free" citywide net won't be buying, because for them, the "free" net is almost good enough. This is false economics, because they're effectively being subsidized $10 a month by the city's taxbase, and if they had to choose between that and a $15 "get everything" net, they might make a more rational choice.</p></dd> </dl> <p> So, for these reasons, I say that cities <i>must</i> stay out of the wifi business. As much as I'd like "free" wifi, there's no such thing as a free lunch, and as soon as someone realizes they are paying for it, they'll want to control it. </p><p> I'd much rather have a few companies vie for my $15, than for me to get censored, slow, no-choice free service. </p><p> Disclaimer - I pay $60/month for Verizon's EVDO service. I'd still have that in every city, regardless of what they do. I'm speaking more for the friends of mine that can't justify that sort of cost.</p> merlyn 2006-06-23T10:45:02+00:00 journal Misquoting JWZ about databases <p> When some people are confonted with a database problem, they say to themselves, "I know, I'll use MySQL!" </p><p> Now they have two problems.</p> merlyn 2006-06-22T02:11:26+00:00 journal Look what I could win! <a href="">I could win a copy of Learning Perl!</a> merlyn 2006-06-21T11:57:24+00:00 journal Grad school instructor, having never been to college? I'm just thinking that my accomplishment of having taught a grad-school level course for credit (Intro to Perl 501 for without having <i>ever</i> been to college might be somewhat rare. Are there other instances that you've seen of a grad-school professor who has never themselves been to anything beyond a high-school education? merlyn 2006-06-18T18:58:51+00:00 journal "Duck and Cover" and "A is for Atom" <p>Thanks to <a href="">The Vintage Tooncast</a> for making me aware (again) of <a href="">Duck and Cover</a> and <a href="">A is for Atom</a>. </p><p> Duck and Cover is a "civil defense" film about how to protect yourself in a nuclear blast. It'd be a perfect MST3K piece now: the idea of protecting yourself from radiation with a newspaper seems amazingly naive and almost malicious. The repetitive "and stay in that position until the danger has passed", without ever explaining (perhaps deliberately) how to know when that has been reached. </p><p> "A is for Atom" is an astonishingly complete and easy-to-watch piece describing precisely how uranium and plutonium bombs work, and goes on to explain how wonderful atomic power will be in the future, providing power, helping farmers, and even producing medical miracles. Of course, to acheive these goals, the dangers of nuclear waste are never mentioned, nor the medical risks from using nuke materials as tracers in the body. </p><p> Although these have both disappeared from the Tooncast feed by the time I watched them (I'm a bit behind), I'd really suggest subscribing to this feed, as they seem to be picking some amazingly cool stuff from and providing it directly to my video ipod on a regular basis.</p> merlyn 2006-06-17T04:25:31+00:00 journal In praise of good testing <p> In my work for $client, last week I spent a few hours making sure that Devel::Cover was mostly happy with my code, running through enough branches so that when I had to "go live" with minor revisions, I could push the change with a fair degree of confidence. </p><p> This week, I concluded that a fundamental data structure (an in-memory hash-of-hashes) that controlled the entire operation and was passed from one part to the next of this 2000-line set of modules, should be changed to be permanent. </p><p> So I pulled out Rose::DB, designed a simple main-row-plus-1-to-n-children database schema, and started refactoring. Of course, after I got rid of the initial data structure, every test failed. I would take each test, run it, and watch it fail, and then I would keep hacking the code and fixing it again until the test passed. Then I'd move on to the next one. </p><p> Six hours later, my complex application was now completely running with Rose::DB-based persistence instead of an in-memory data structure. And I was very happy that the client had insisted on complete tests before I started, because I was now confident to push this <i>new</i> version into production. </p><p> Tests. Not just for breakfast, any more.</p> merlyn 2006-06-08T15:52:00+00:00 journal Not quite getting the picture <p> I had just seen <a href=""> <i>United 93</i> </a>, and after the movie, bumped in to <a href="">a friend of mine</a>, who is known more for her physical assets than her mental achievements. (Although she's not blonde, this week.) </p><p> I had stayed through the credits, and noticed a lot of "HIMSELF" and "HERSELF", which obviously added to the authenticity of this biopic feeling almost like a documentary. So I commented to her "Hey, a lot of the people originally involved played themselves", because it had impressed me. </p><p> She replied, "The people on the airplane?" </p><p> {sigh}</p> merlyn 2006-06-02T15:42:31+00:00 journal Geek Cruises News-es: the podcast I've started a <a href="">weekly podcast for</a>. You can <a href="">subscribe via iTunes</a> (the best for us, since it increases the popularity) or <a href="">add the URL directly to your podcatcher</a>. merlyn 2006-05-29T18:39:02+00:00 journal Simple and sweet Q: "How do I get my pid into a file, simply?" <p> A: print { open my $out, "&gt;", "pidfile"; $out or die } $$, "\n"; </p><p> Yes, I like Perl.</p> merlyn 2006-05-26T13:04:54+00:00 journal Podcast and upload of my "Perl Best Practices" talk <p> See <a href="">my slides!</a> </p><p> Hear <a href="">me talk!</a> </p><p> Buy <a href="">the book!</a></p> merlyn 2006-05-17T00:41:39+00:00 journal PHP poster See <a href="">my favorite description of PHP, in visual form</a>. merlyn 2006-05-09T16:07:43+00:00 journal "my bad" origin <p><p>From <a href="">The origin of 'my bad'</a>: </p><blockquote> <div><i> The best evidence obtainable at present points to Manute Bol (above), the 7'7" Sudanese NBA player whose native tongue was Dinka, as the inventor, sometime in the 1980s, of this now&#8211;ubiquitous phrase. </i></div> </blockquote> <p>Finally, someone to blame for this incredibly hard-to-hear phrase. Yeay. I keep wanting to say "my bad <i>what?</i>", since my and bad are both adjectives there to my ears.</p> merlyn 2006-05-03T19:25:35+00:00 journal Podcast interview with me about my legal entanglement <p> The <a href="">Security Catalyst</a> podcast recently <a href="">interviewed me</a> regarding my <a href="">legal entanglement</a> with the State of Oregon ("victim": Intel Corporation). I haven't had time to listen to this particular show yet, but I remember liking it while I was being interviewed, so it should be a good listen. </p><p> I consider Security Catalyst a very informative and easy-to-listen-to show about desktop and enterprise information security. If you're not already listening, please give it a run. Best of breed, as far as I've seen.</p> merlyn 2006-04-21T15:53:07+00:00 journal Today's lesson on job posting <p> <b>Good</b>: using <a href=""></a> to <a href="">post your Perl job to help build a website</a>. </p><p> <b>Bad</b>: Providing the <a href="">URL of the yet-to-be-built website</a> as the "URL for more information" in your post! (At the time of this writing, the URL leads simply to the name of the site and "coming soon"). </p><p> Doh!</p> merlyn 2006-04-10T13:13:04+00:00 journal Missing the facts <p> <a href="">He says</a>: </p><blockquote> <div><i> But what is beyond forgiveable is that Perl 6 has made the market of new Perl books nonexistent. This alone assures Perl's eventual nonexistence. Why would an author want to write a Perl book that is obsolete in some fuzzy time period. </i></div> </blockquote> <p> To which I replied: </p><blockquote> <div><p><i> We just released the 4th edition of "Learning Perl" last summer, and "Intermediate Perl" this month. We're very committed to keeping the flagship tutorial books for the Perl community up to date until Perl6 arrives. There are also a number of other Perl books in the pipeline at O'Reilly that I cannot comment on. </i></p><p><i> If other publishers are slowing down on turning out the junk that spells Perl in all-caps and promises a complete Perl education in some small number of hours or days, that's actually better for the community, not worse. </i></p></div> </blockquote> merlyn 2006-03-25T18:29:33+00:00 journal Ain't technology grand? <p> So, I'm working for $client, and I needed to send a presentation to my $boss so that he can push it up on the webinar system for a brownbag I'm presenting today at lunchtime. He wanted both the powerpoint (ugh) slides (converted from nice nifty Keynote), and a backup PDF in case things broke. </p><p> When I printed the PDF from powerpoint, it came out as a whopping 22 Megabytes. Ouch. However, I didn't notice this, and simply attached the message in Thunderbird (another ugh, but that's another story), and pressed "send". My message was rejected during the send (and also took a while), so I found a way to reprint the PDF from the original Keynote, and it came out to 252K, so I happily sent that along instead. </p><p> But now for the "WTF" moment. I get a message about 20 seconds later from "the mail administrator" (not a human), advising me that "the attached message is too large to deliver". Yes. Follow the logic. The attached message was too large to deliver, so it <i>delivered</i> it to me in its entirety. </p><p> Oh, joy. </p><p> If only I had faked the "from" on the original message, the bounce would have been "delivered" to the desired recipient instead!</p> merlyn 2006-03-09T15:49:35+00:00 journal Ishmael I recently glanced over to see a friend of mine reading a book titled "Ishmael". <p> I bet him that I knew the first line of the book. My guess, which turned out to be wrong, was "Call me, Moby Dick." </p><p> However, that seems like it would be a great fiction novel... the story of a great white whale who is obsessed with tormenting this one Captain Ahab until he loses everything. Anyone want to set up a collaborative writing project for this? </p><p> Disclaimer: everything I know about Moby Dick, I got from <a href="">Wikipedia</a>.</p> merlyn 2006-03-06T03:11:20+00:00 journal Why do newscasters always ... pause? Why do field radio and TV newscasters invariably... pause before delivering the last few words of their delivery? Was this originally some sort of signal to the studio that they were done, similar to "over" in pilot communications? Who started it? Why do they still do it? Can you tell it annoys me?<nobr> <wbr></nobr>:-) <p> "For my use.perl journal... I'm Randal Schwartz."</p> merlyn 2006-03-03T13:29:57+00:00 journal Still fodder for the conversation It's nice to see that my legal case <a href="">continues to be noticed and discussed by experts</a>. merlyn 2006-02-20T01:50:17+00:00 journal Pot. Kettle. Black. <blockquote> <div>Sams signed the code of conduct but didn't know that working at Hooters could be grounds for termination, she said. "I love this school," Sams said. "I felt so proud to cheer for our teams. I was always the loudest one out there screaming (for the Bucs)."</div> </blockquote> &mdash; <a href=";">Cheerleader booted for working at Hooters cries foul</a> merlyn 2006-02-15T18:37:18+00:00 journal Sell music on iTunes with no middleman cost This is brave: a small music label is setting up a way for <a href="">indie artists to put their music on iTunes and keep 100% of what iTunes pays in response!</a>. That's very very cool. <p> Pudge? Time to start publishing!</p> merlyn 2006-01-29T18:44:53+00:00 journal The 90's called... they want their code back... From <a href="">a recent comp.infosystems.www.authoring.cgi post</a>: <blockquote> <div><blockquote> <div><tt>sub ParseForm<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; my ($key, $prefs, $buffer);<br>&nbsp; &nbsp; if ($ENV{'REQUEST_METHOD'} eq 'GET')<br>&nbsp; &nbsp; &nbsp; &nbsp; { @pairs = split(/&amp;/, $ENV{'QUERY_STRING'}) }<br>&nbsp; &nbsp; elsif ($ENV{'REQUEST_METHOD'} eq 'POST')<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});<br>&nbsp; &nbsp; &nbsp; &nbsp; @pairs = split(/&amp;/, $buffer)<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; else {Error('Bad or Unknown Request Method',<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "The form's request method must be either 'POST' or<br>'GET'. Please check your HTML.")}<br> <br>&nbsp; &nbsp; foreach $pair (@pairs)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; local($name, $value) = split(/=/, $pair);<br>&nbsp; &nbsp; &nbsp; &nbsp; $name =~ tr/+/<nobr> <wbr></nobr>/;<br>&nbsp; &nbsp; &nbsp; &nbsp; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;<br>&nbsp; &nbsp; &nbsp; &nbsp; $value =~ tr/+/<nobr> <wbr></nobr>/;<br>&nbsp; &nbsp; &nbsp; &nbsp; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;<br>&nbsp; &nbsp; &nbsp; &nbsp; $value =~ s/&lt;!--(.)*?--&gt;//mg;<br>&nbsp; &nbsp; &nbsp; &nbsp; $FORM{$name} = $value;<br>...</tt></div> </blockquote></div> </blockquote> And the horror doesn't stop there, but I wanted to minimize your exposure. This <b>is</b> 2006, right? merlyn 2006-01-10T08:20:17+00:00 journal