renodino's Journal http://use.perl.org/~renodino/journal/ renodino'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. 2012-01-25T02:30:49+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 renodino's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~renodino/journal/ Help! DBD/DBIx::Chart need patent protection http://use.perl.org/~renodino/journal/38514?from=rss Someone has just alerted me to the following patent attempt by our friends at IBM:<p> <a href="http://www.freepatentsonline.com/y2008/0215554.html"> Data Plotting Extension for Structured Query Language</a> </p><p> Given that DBD::Chart predates the filing by at least 7 years (in fact, you can still get a version from CPAN from 2002, and I think BackPAN may have stuff from 2000/2001), I'd like to make sure this thing gets killed. Does anyone know an open source patent holding group, or someplace I can submit prior art claims ?</p> renodino 2009-02-19T22:23:10+00:00 modules Is DEET an effective Irony repellant ? http://use.perl.org/~renodino/journal/38467?from=rss My overlords have tasked me to fix a rather sticky, noisome bit of coding horror whose SQL parser is in need of repair (it needs an overhaul, but thats too risky). Actually, there are 2 or 3 SQL parsers in this pile of codegoo (after all, one is never enough!)<p> After 6+ hours of hair tearing, teeth gnashing and screaming at the walls while attempting to fix this coding disaster, I note the following harmless bit (coded with the rusty straight razor of 'C'): </p><p> <code> if (token == '\n') </code> </p><p> and realize the source of my angst. For the 768,529th time in my coding career, I've been a victim of the longest running practical joke in software development: Microsoft's schizoid newline character. After correcting the offending code, which fixed the problem, I decided I'd had enough for the day, and retired to idle repose with a tasty homebrew and cigar. After a moment I began to ponder </p><ol> <li>How many millions of man-hours of quality software development time have been pissed away on this joke ?</li><li>How many instances of this joke have escaped into the wild, causing bizarre, inexplicable behavior with what appears to be perfectly inocuous input text ?</li></ol><p> The half pint of 13% ABV trippel then caused a mental segue to Bill G.'s recent <a href="http://www.youtube.com/watch?v=ppDWD3VwxVg">stunt</a>. While I applaud Mr. Gate's philanthropy, I would have liked to inform his audience that, as a software developer, I'm very accustomed to Bill G &amp; Co. purposely releasing bugs to the public.</p><p> &lt;rimshot/&gt;</p><p> <i>"Just add water, makes its own sauce..."</i></p> renodino 2009-02-12T16:46:04+00:00 journal OSCON08 Days 4 and 5 http://use.perl.org/~renodino/journal/37013?from=rss OSCON08 Day 4 I skipped the keynotes, not to sleep in, but to start hacking on the Google::AppEngine stuff. Eventually it turned out to be the wrong direction, but it (1) got me into the code and (2) got me learning some Python. Now I think I'm headed in the right direction, and hopefully the Googlers will steer me back on course.<p> <b>Session 1: Parallel/Distributed Perl</b> </p><p> I'm figuring out the dichotomy of parallelism in Perl. Its not really about thread haters vs. thread users; its about what I'll call "sysadmin parallelism" vs. "application parallelism". The former is mostly about fanning out batch jobs; the latter is about making it easy to do concurrency in applications (eg, not having to deal with the async I/O headaches). (Thats not intended as a derogatory comparison, just an attempt to capture the differences). Eric's presentation was about the former; my primary interest is the latter. The usual fork and pipe approach was described. </p><p> <b>Session 2: DBIx::Router</b> </p><p> I've wanted to peek into this module before, mostly to see if it would ever support distributed joins. Its some nice work, might even make a platform for building an MPP database. But its more about load balancing/replication. Interesting application of DBI::Gofer, too. Would be nice if it could use 3dot notation to select specific datasources, but SQL::Statement doesn't support that (but might be easier to do than other stuff SQL::Statement needs).</p><p> <b>OBF Afternoon</b> </p><p> Spent the afternoon at the OBF. I feel much more at home at the OBF than OSCON; not sure what that says about me, the OSCON crowd, or the OBF crowd, but standing out under the blue Portland sky, sipping good microbrews, puffing a nice cigar, and listening to some American-Celtic rock beats the hell out of any crowded air conditioned room of geeks listening to techie stuff. I brew my own beer, I build my own computers, I write my own code...I prefer brewing my own beer.</p><p> <b>Onion/Auction</b> </p><p> Managed to stumble back for the end of the lightning talks, Pudge's musical finale, and the annual Onion. This years Onion was a bit of a puzzler: Larry Wall hacking at the podium with a bit of a rambling review of Perl6. Streaming piles of parsing state machine transitions. Not much humor or insights. Meh.</p><p> Things were running late, so every one bailed before the auction. I hung out briefly, but decided the days events had taken their toll and head to the hotel for a nice cold cocktail and warm bed.</p><p> <b>OSCON08 Day 5</b> </p><p> Up early to pack up the jeep. check on my posts to the perl-appengine maillist; got a response, which confirmed my suspicions wrt how this beast would work. Meaning my prior porting exersize, while educational, wasn't needed. After digesting the wiki content, I think I've figured how I can help: building the stub classes of the public API. Assuming I grok what brad/stephen are building.</p><p> <b>Morning Keynotes</b> </p><p> Humorous speech regarding reporting errors (ATMs w/ the Window splash screen showing - or worse, device install dialogs), the odd effects of news services applying regexes to turn "gay" into "homosexual", etc.</p><p> Social science and large/open data. Adding context vs just adding GPS. Techies pushing tech off the desktop out to the masses.</p><p> MSFT OSS rep gives the schpiel about how FOSS friendly MSFT is. (Oh embrace and extend me!) PHP integrated into Win2K8. IronRuby. IronPython. and Java ?!?! and Eclipse ?!?! SandCastle on codeplex ? Apache POI : Java impl. of MSFT binary formats (ie for Word, Excel, etc) MSFT joins Apache ?!?!? DANGER DANGER WILL ROBINSON ?!?!</p><p> Tim Bray: Programming Languages questions Bit of a ramble. But made the point that if you're doing OSS, you really ought to know C...cuz thats what pretty much everything is sitting atop. Fortunately, I do know C, having coded massive gobs of it over the last 20+ years. Interesting tidbit: Twitter being rebuilt using scala!</p><p> Jeremy Ruston (tiddlywiki) acquired by BT: what we learn from airports. meh.</p><p> Q&amp;A: Rippin on MSFT! You patent trolling bastids!</p><p> <b>Session 1: Spring 2.5: Spring wo/ XML</b> </p><p> Sweet tap dancing Moses, the Java crowd sure goes thru massive contortions to do simple things...most of this was over my head since I haven't done any Spring and haven't kept up with all the latest Java nonsense er I mean "technology". Spring was sposda make J2EE easier...but it looks like they're falling into the same old Java trap: it can't be right unless it takes 1000 lines of CTS inducing code to do what any decent dynamic language can do in a handful of lines. Why do companies continue to put up with this bullshit ? It appears Java is embracing the AOP stuff pretty heavily. I also need to research more on Spring, Guice, and SEAM.</p><p> Since the next session was gonna be Spring/JDBC too, I decided I'd had enough OSCON for 2008, and bailed.</p><p> Now I'm off to Seattle for a weekend with friends. Looks like the weather isn't going to be cooperative, at least Sunday, so I may escape to Mt. Hood or points south to start the camping a day early.</p><p> All in all, its been a decent OSCON. Most importantly it got me away from the new overlords and my current mind numbing/soul sucking assignment for a few days. And hopefully I've found a fun, simple project for spare moments in porting some Google AppEngine code.</p> renodino 2008-07-25T18:39:40+00:00 journal OSCON08: Days 0, 1, 2, and 3 http://use.perl.org/~renodino/journal/37003?from=rss <b>Day 0</b> <p> Headed out of Reno bright and early. Weather was great for cruising sans top. Got to the turn off to bypass Lassen National Park...and missed it. Thought to self, "WTH, its a good day for sightseeing.". I'm very glad I took the long way round, the weather was great and I hadn't driven thru Lassen in nearly a decade. Spectacular scenery, sortof "Yellowstone concentrate". But definitely not for those with vertigo!</p><p> The rest of the drive was uneventful. Got to Portland about 7:30PM, checked in, chugged a couple cold homebrews, and crashed.</p><p> <b>Day 1</b> </p><p> Up early and off to register. Attendance seems a bit thinner than last year. But "Python in 3 Hours" was SRO. A decent presentation, but I think the presenter assumed too little of the attendees. The 1st hour seemed like CompSci 101, which left only 2 hours of pythony meat. My general concensus: seems useful, but I'm not certain what all the hoopla is about. And you can't learn much Python in 3 hours.</p><p> The 2nd tutorial was "Test Driven Development". Alas, the title and description were a bit misleading. Should have said, "Test Driven Development <b>for Perl</b>". Since I've already used Test::More and Test::Simple, I pretty much knew the first 1:30 of the tutorial. And I really needed C++/Java/etc. TDD. So I bailed at the break, headed to the hotel, and started cranking up Thread::Sociable again. After a few hours, I realized (1) this was going to take much longer than I expected/hoped and (2) my long drive and tutorial day had taken a toll on my alertness. I was fading fast, leading to coding errors, and so shut it down for the day.</p><p> <b>Day 2</b> </p><p> First tutorial: "Eclipse PTP": very thinly attended, but lots of parallel goodness. My new overlords are in dire need of an MPP debugger (they've made do with Eclipse and gdbserver, but its far from ideal), and PTP looks like a good start to a solution. PTP pulls concurrent programming into a single IDE (not just MPP, but OpenMP as well). I've never been an Eclipse fan, but I can see how its framework works well for PTP (MPP debugging is going to be a busy interface regardless the GUI).</p><p> 2nd Tutorial: "Actors for Performance, Scalability, and Resilience" for more concurrent goodness. I now realize I have in fact implemented Actors with Thread::Apartment (albeit in a heavyweight fashion). But I needed this session to confirm it (just in case there was some magic aspect I wasn't aware of). Perhaps I'll change the module name to Thread::Actor (or, rather, Thread::Sociable::Actor). Lots of Erlang and Ruby, and surprisingly well attended (Erlang seems to be in vogue, though I'm ashamed to admit the functional syntax makes my brain hurt). In any case, we can now say that Perl implements Actors, which I can then use to evangelize for Thread::Sociable, and the TPF will shower me with huge grants and Perl will become the defacto language for parallel systems...well, maybe not, but its nice to dream. "Perlang"...has a nice ring to it...</p><p> The evening soiree began as usual with cocktails and hors d'ouevres. Shuttleworth's presentation was interesting, but frankly I have no horse in the OS races, so building the next great desktop for Linux doesn't much matter to me...after all, its all going to be run in the browser anyway. Then it was r0ml's turn...very humorous presentation about the software engineering process. But the coup de grace was Mssr. Conway's presentation: he has managed to reverse time...and build nanocomputers...all in Perl, of course!</p><p> <b>Day 3</b> </p><p> OReilly prognosticating...but it sounded recycled, other than the notion of keeping the web open in the era of the cloud(great quote from jesse), and the open mobile platforms.</p><p> Peterson got out the activist drum and beat it loud about FOSS geeks injecting themselves into the debates over proprietary s/w for public sensing and voting.</p><p> Dirk Hohndel talks about Moblin. Basically pleading for FOSS developers to jump on the wagon. Wish I had time.</p><p> Tim O. interviews the MySQL boys. Krow forks MySQL to create MySQL 3.0 er I mean Drizzle. Yet another database for web persistence. Strip out the guts to support more/faster indexed garbage heaps.</p><p> Late breaking news: Google has permitted some of their devs to open up AppEngine for Perl (huzzah!). But the req'ments are pretty severe: a locked down/hardened Perl that essentially does *no* I/O. Thats gonna be painful...definitely need to see what the buffermap i/f is about. Then maybe we can get DBI running there ? Have to chat w/ Tim B. and some monks to get a better understanding. I heard TIm make some noises RE: mapping a Gofer on it...not sure where he's headed...</p><p> Picked up some books: Groovy Recipes, GWT In Action, and Adobe AIR for Javascript pocket guide. The latter is available for free in PDF, but the pocket guides are just too damn convenient, esp. at 30% off.</p><p> 1st session: bigdata (Bryan Thompson) semantic web + scaling out; systap's internal scalable datastore; lots of stuff about RDF and semantic context storage schemes. Over my head I fear...guess I'll stick to good old SQL</p><p> Session 2: couchdb from 10K feet. Nice intro, interesting approach to the problem. Definitely *not* a relational datastore. And just the sort of thing to keep the Informaticas in business for years to come, trying to pull intelligence out of the data. The more I see, the more I realize that the database business has begun to segment out of control, and company's gluing all the "indexed garbage heap" web datastores into structured BI datastores will have a lot of work...and money...ahead of them. I guess my new job kinda puts me on that bus...but I'm not sure I want to take the ride.</p><p> <b>Perlmonks Lunch</b> </p><p> Hooked up with jZed and Tim B., and several Perlmonks (tye and Yitzak, and others) for a quick lunch. Nice to put some faces with names (even tho I'm horrid at remembering the latter). </p><p> Session 3: Groovy v. JRuby: nice quick intro to the topic(s). I'm only a little bit Ruby-fied, but have lots of Java under my belt, so Groovy has been intriguing for awhile. Groovy still looks immature, but I gotta believe Sun/IBM/somebody is going to grab the reins soon and start driving it...its just too damn easy for the vast unwashed Java drones to jump on it. Groovy + GWT...very scary concept... in a good way.</p><p> Session 4: Caching in Facebook: got bumped outta the Hypertable session which was SRO (why did they put it in such a tiny room ???) Anyway, Facebook replayed the usual caching mantra, this time for PHP. Not much new to see, but nice to get a feel for how they handle their traffic.</p><p> <b>Break time.</b> </p><p> The Google AppEngine thing was sticking in my craw, so I was naughty and abused the lousy wifi to checkout the python sources, and spent a half hour trying to decipher the datastore interface. I feel like something's missing...but also found pieces of it in various subdirs that I hadn't expected, so there's probably more I need to review. Need to talk w/ whomever is doing the protocol buffer mapping to find out how datastore's i/f actually works...</p><p> Session 5: LucidDB Columnar dbms: particularly relevent to my new job (a columnar database startup). Presentation was good, but just reiterated what I already knew. They have the same challenges and rewards we do...except we're MPP, and they currently top out at relatively modest data volumes. They used MySQL to compare benchmarks...which might be OK at OSCON, but it would be nice to see some results against eg, Vertica.</p><p> Session 6: XMPP for Cloud Svcs: interesting notion: XMPP for everything. Basically, take HTTP + REST, but make persistent connections. You get XMPP for clouds. Would certainly avoid the Comet madness...but the softshoe dance the presenter gave about scaling sockets left me dubious.</p><p> Then beers in the exhibit hall, and soon beers back the hotel (courtesy Sun/MySQL/et all)</p><p> And yes, I'm already getting teched-out.</p> renodino 2008-07-24T02:13:02+00:00 journal Off to OSCON.. http://use.perl.org/~renodino/journal/36957?from=rss As a condition of accepting my new overlord's dominion, I requested they pay for my OSCON trip this year, to which they graciously agreed. (I'm even getting paid for being there! And finally get to stay at a decent hotel instead of slumming it.) <p> Alas, as they're footing the bill, I have to devote my attentions to their particular business interests, which aren't Perl (though I've been stealthily infesting it where I can). So Perl sessions/tutorials are almost completely absent from my OSCON schedule this year. Gotta learn Python (ugh), Eclipse PTP, and more on Actors. The TDD tutorial looks Perl heavy, but we'll see. The rest of my schedule is databases, databases, and more databases. I'll try to steal a couple sessions for Perl stuff (esp. Tim B.'s fancy new profiler stuff), but the few spare slots I have also have some nifty Javascript sessions, and I've recently been <a href="http://www.presicient.com/shodo/tryshodo.html">splashing</a> <a href="http://www.presicient.com/plotjax/tryplotjax.html">about</a> in that pond - there's lots of kewl and sexy stuff going on there, so I gotta get me some more. </p><p> I see the Perl monks are planning an ad hoc gathering Wednesday, hopefully I'll be able to hook up. And somehow I have to get over the river to the OBF and back before Mssr. Wall's annual Onion. Or maybe after. Or maybe both<nobr> <wbr></nobr>;^} </p><p> And then some R&amp;R with friends in Seattle, and a leisurely camping meander back to Reno. </p><p> While the price of gas is definitely gonna hurt, its a such a great road trip through the Sierras, Cascades, and Siskiyous (assuming it hasn't all burned down by now) in the topless Jeep that I can't bring myself to fly. So I'll grin and bear it...but mostly grin.</p> renodino 2008-07-18T19:40:53+00:00 journal Google AdNonSense http://use.perl.org/~renodino/journal/36893?from=rss So as I browsed rjbs's latest missives, I was amused to find the following Google Ad adorning the page:<p> <b>Chaotic Evil</b> <br> Looking for Chaotic Evil? Find exactly what you want today.<br> <b>Yahoo.com</b> </p><p> I'm almost tempted to bid on the phrase and point it at (RIAA/MPAA, whitehouse.gov, microsoft.com, the Wikipedia entry for Iran,<nobr> <wbr></nobr>...)</p> renodino 2008-07-10T21:57:48+00:00 journal There must be a word for this... http://use.perl.org/~renodino/journal/36836?from=rss I've experienced this far too often, and I know everyone else who has ever laid hands on a computer has experienced it. So there must be a word or acronym for it. <p> Essentially, its the intersection of Murphy's Law and PEBKAC. </p><p> E.g., I'm currently helping someone build some s/w on Windows. He's a Linux hacker, and quickly gets frustrated by the Windows "everything has to be a GUI" imposition. </p><p> Now, when I personally built this particular package, I had no problems. But I've been hacking Windows for years, and know how to install/setup Visual Studio by rote. </p><p> So when my protoge encountered difficulties, I was at a loss. Until I learned he had all manner of crapware on his laptop. And 2 versions of Visual Studio. And the wrong version of the software to be built. And was missing one of the prereqs. </p><p> And so, after scrubbing his system, I walk him through the build process. But I can tell he's frustrated, and he has other responsibilities, so he's also a bit distracted. </p><p> Then I get his latest email listing the errors issuing forth from the build process. I know he's probably fuming at this point, and probably suspects I'm a part of this diabolic conspiracy to thwart his progress. </p><p> Then I point out that he's fatfingered an extra quote in the initial command line, which subsequently causes Perl and the generated makefile to do various bizarre, non-Windows things. </p><p> After correcting his mistake, he's now progressing nicely. But I'm certain the experience has further prejudiced him against Windows, and probably Perl, despite the fact that neither suspect is particularly culpable for his frustration. </p><p> So is there a word for it ? Perhaps the opposite of "serendipity" ? Roughly defined, its the act of making a personal error which you blame on the machine due to having previously experienced numerous machine induced errors. </p><p> If there isn't a word for it, there certainly should be. And there should be at least one expletive embedded in it.</p> renodino 2008-07-01T20:06:34+00:00 journal DLJB Update http://use.perl.org/~renodino/journal/36811?from=rss I got an itch this AM to see how the <a href="http://www.presicient.com/langjobs.html">DLJB</a>'s numbers were holding up after nearly a year.<p> After a few queries on <a href="http://www.dice.com/">DICE</a>, I discovered that "Rails" is now officially a synonym for "Ruby": there are nearly 50% more hits with the two words than with ruby alone. So I've adjusted the DLJB scraper accordingly, and Ruby's numbers are much more respectable.</p><p> I also did some searches on a few other languages (Erlang, Haskell, Groovy, Lua, and Lisp) to see how they're faring. Pretty well, it turns out, esp. Groovy (lookout, Ruby and Python, objects in the mirror may be closer than they appear...). So I've added a new "Others" datapoint to the chart. </p><p> Alas, one troubling note: Perl's general numbers have eroded slightly (about 6-7%), though the "titles only" number seems to be holding up well. PHP is still growing at a steady clip. Python seems to have plateaued. Maybe Google AppEngine will breath a bit more life into it. (I know I'm going to have to learn to stomach Guido's indentation, as my new overlords have adopted it for their test environment. So my OSCON will be Python heavy this year.) </p><p> On a positive note, however, the overall numbers seem to be holding up quite well, despite the current economic woes here in the US.</p> renodino 2008-06-29T17:45:01+00:00 journal Gremlins! http://use.perl.org/~renodino/journal/36523?from=rss Rough holiday weekend. Reno's fickle weather decided to go semi-winter on us, so I've been stuck inside dealing with the techie stuff I usually postpone/ignore when the Sierra Skies are much bluer.<p> Alas, its been a challenge. First, I get a new pile of software to install on my laptop...at which point a 512Meg stick of RAM decides to go into advanced entropy. So I'm scrambling around Reno to find a reasonably priced replacement. Done. Only to discover there's some registry remnant from an earlier install that won't let me install the new software. So I get to reinstall XP and all its updates and Visual Studio, plus all my extra apps and Perl packages. Oh joy.</p><p> Done. Now I have to print some expense reports. Whats this? "Unable to print" scrolls across the printer's LCD screen. So I read the users manual, and follow instructions to reset and clean the machine. To no avail. As this particular multifunction printer has been giving me fits for 3 years, I take a moment to put my fist thru the LCD screen, and place the unit in the recycle pile, and head out to buy a new printer. Wireless this time; should be nice to just plunk the unit down anywhere and be able to print. Hopefully, it won't be the flaky pile of ink-sucking crap the prior unit was.</p><p> Now I'm stressed out, and ready for lunch. Pop a couple slices of bread into the toaster for some nice toasted PBJ comfort food...but the damn toaster won't latch down. Since its also been flaky lately, and is a bit of an energy hog, I unplug it and place it in the recycle pile, and head to KMart for a replacement.</p><p> When even a low tech toaster is infested with gremlins, its best to turn off all electronics and do what comes natural...brew some beer! (A nice chewy coffee stout). Hopefully this bout with the tech gremlins is over; I've blown a minor hole thru my wallet, and really don't need to be pissing away my time chasing these bugs.</p> renodino 2008-05-26T17:06:33+00:00 journal Lone Wolf no more http://use.perl.org/~renodino/journal/36380?from=rss Its been a wild ride while it lasted, and I certainly learned a lot, not just about s/w development, but mostly about business. But after lone wolfing for several years, I've thrown in the towel and taken up with a database startup.<p> Alas, I'll be doing very little Perl for my new job; lots of C/C++, and my new overlords seem to have fallen pretty hard for Guido's koolaid, so I'll need to write a Python indenter . While I'll inject Perl where I can, I fear it'll be an uphill battle, and avoiding those is why I succumbed to captivity in the first place.</p><p> OTOH, I'll be doing stuff I've been doing for the better part of 20+ years, stuff I can do without getting out of bed, much less falling out. And I have a few notions I hope to inject into the product suite; the database field is starting to get crowded again, and anything we can do to differentiate is going to be essential to success.</p><p> And they're letting me do it from Reno, which was a big condition for me. The California thing lost its luster for me years ago; I especially revile the SillyConJob Valley nonsense. I live 10 miles from the CA line...and thats plenty close enough for me.</p><p> I also made them pick up the tab for my OSCON attendance, so I'll actually get to stay at a decent hotel this year!</p><p> What really made me steer back into the database maelstrom was the crew manning this startup. Some of them are almost iconic in the DBMS world, and they've been very succesful in the past; some others I've personally known for a decade or more. Hopefully, the cumulative experience will be enough to climb over the other startups massing around this particular niche. I commented to the VP of Engineering that, if the DBMS s/w didn't pan out, he could just pimp us all out as consultants at $300/hr and probably make more money!</p><p> That said, I am suffering some separation anxiety. Working on what *I* wanted to *when* I wanted to was fun, albeit frustratingly difficult/impossible to monetize. I've spent most of the last 5 years banging out Perl and (recently) Javascript, only doing XS/C when conditions demanded; now I'll be slogging thru mind numbingly slow and (esp) error prone C/C++ development. Hopefully I'll endure long enough to collect the gold ring.</p><p> In the meantime, I'm desperately trying to get <a href="http://www.presicient.com/sociable">Thread::Sociable</a> into at least <i>compilable</i> shape and uploaded to a Google Code repository I setup some months ago. Unfortunately, life keeps getting in the way, so progress has been very slow. Its a damn shame I can't get paid to finish that up. I really think it would make a nice splash for Perl: faster shared access, real STM for real threads, and even shared nothing for those that prefer it, plus (for those that hate on ithreads) all that for process shared memory (without the Storable or DBM contortions of existing solutions). Hopefully, some others will attempt to grok my XS/C hacking and take up the cause. While I won't be tossing commit bits around like beads at Mardi Gras, I'll certainly open things up for those that express both an interest *and* the skill to comprehend it (the STMness gets pretty gruesome in places).</p><p> Oh well. Its my last weekend of independence, and another beautiful Sierra spring day, so I'd better get out and enjoy it before I jump on a plane on Monday.</p> renodino 2008-05-10T16:06:38+00:00 journal "Dream"Host ? More like Nightmare http://use.perl.org/~renodino/journal/35971?from=rss Let me preface this by clearly stating I'm not blaming Mssr. Schwern, who has been very helpful, and a general Perl Hero. This situation certainly is not his fault, and in some sense he's as much a victim of DH as I am. But ever since I took him up on the DreamHost offer, I've been in hosting hell. <p> Since moving to DH, I'm confronted with </p><ul> <li>sloooooow page loads (that is, when the site is up), even for simple static pages with a couple images;</li> <li>email frequently down or very slow;</li> <li>repeated screwups with my weblogs.</li> <li>for some odd reason, my sites (the static ones, no magic JS or server scripts) frequently cause FF 2.0.0.12 to crash...usually after trying to load the page for 10+ secs (no such problems in Safari, IE or Opera, thank god)</li> <li>server status tester frequently reporting "heavily loaded" <i>(can you say "oversubscribed" ?)</i></li> </ul><p> I never thought I'd long for a return to my old host (Earthlink), but their overpriced, restrictive plans seem like nirvana now.</p><p> So I've got to find a new host and fast. I'm looking at Pair, since they've been Perl friendly for awhile now, and they run Perl 5.8.8. More expensive, certainly, but after the DH debacle, I'd rather pay a bit more and not have to constantly run a canary to verify my sites and email are still functioning. MediaTemple is also on my radar, tho they don't appear to be as Perl friendly as Pair.</p><p> If anyone has some recommendations, please pass them along! I'd love to help "Perl bloom", but its obvious that DH is all fertilizer and no substance.</p><p> <b>Update</b> </p><p> After way too much research, I've jumped to BlueHost, they seem to keep their customers pretty satisfied, and have pretty much everything DH does...except the downtime. BlueHost also has a nifty little Perl package installer to pull stuff directly from cpan; I haven't tried it yet, but it should be fun to play with. But I've still got lots of site xfer chores to finish before then.</p><p> BTW, anyone whoc opened a DH account since the 1st of the year is now pretty much dead in the water. And DH's response as to when it will be back up ? "Um, don't know, maybe by the end of the week ?"</p><p> I sure hope I get my refund before they go bellyup 8^(</p> renodino 2008-03-24T17:46:42+00:00 journal CPAN Testers, I love you, but, seriously, we need to talk. http://use.perl.org/~renodino/journal/35930?from=rss I got a couple CPAN tester failures in my email today:<blockquote><div><p> <tt>FAIL Win32-Font-NameToFile-0.10 x86_64-linux-thread-multi-ld 2.6.22.10<br>FAIL Win32-WebBrowser-1.02 x86_64-linux-thread-multi-ld 2.6.22.10</tt></p></div> </blockquote><p>Yes, I'm shocked, shocked! to learn my Win32 modules failed on 64 bit Linux! </p><p> Seriously: I think we can do a better filtering job than this...if for no other reason than running tests for Win32 packages on Linux is a waste of CPANTester resources. How about</p><blockquote><div><p> <tt>if (($filename=~/^Win32/) &amp;&amp; ($^O ne 'MSWin32'))<br>{<br>&nbsp; &nbsp; next;&nbsp; # NO SOUP FOR YOU!!!<br>}</tt></p></div> </blockquote> renodino 2008-03-18T15:35:35+00:00 cpan HTTP::Daemon::Threaded finally gets some CGI love http://use.perl.org/~renodino/journal/35889?from=rss <a href="http://search.cpan.org/perldoc?HTTP::Daemon::Threaded">HTTP::Daemon::Threaded</a> started as an apartment threading exersize. I was never comfortable with the plugin interface (all LWP based), but didn't have time to figure out a better solution in a threaded environment. <p> So when a user prodded me about it last week, it became a serious burr under my saddle. </p><p> After applying some <a href="http://search.cpan.org/perldoc?IO::Scalar">IO::Scalar</a> shenanigans, and a helpful %ENV hint from perlmonks, I'm happy to announce HDT is now CGI capable. </p><p> And just in time for IE8's 6 concurrent connection Web buster (I expect FF, Safari, and Opera will follow suit shortly). </p><p> Anyone interested in building the pure Perl replacement for Google Gears ?</p> renodino 2008-03-12T01:09:01+00:00 modules pQuery: jQuery for Perl http://use.perl.org/~renodino/journal/35790?from=rss <b>Oh boy, new toys!</b> <p> <a href="http://ajaxian.com/archives/pquery-where-p-perl">pQuery</a> </p><p> <i>See also</i> <a href="http://search.cpan.org/perldoc?pQuery">pQuery </a> </p><p> I'm not a big fan of <a href="http://www.jquery.com/">jQuery</a>, but pQuery should keep me busy this weekend 8^))</p> renodino 2008-02-28T19:03:43+00:00 modules "Tired of FUD" Followup: Where the Jobs Are http://use.perl.org/~renodino/journal/35632?from=rss For <a href="http://use.perl.org/~renodino/journal/34444">"Tired of Perl Is Dead FUD"</a>, I generated a <a href="http://www.presicient.com/langjobs.html">simple chart</a> of Perl, PHP, Python, and Ruby job listings. It generated a lot more interest than I expected. <p> One of the common comments went something like, "Yeah, but there's no Perl jobs <i>in my backyard</i>". </p><p> Which aggravated a chronic itch I've had since first releasing <a href="http://www.presicient.com/dbdchart">DBD::Chart/ </a><a href="http://www.presicient.com/dbixchart">DBIx::Chart</a> several years ago: how to support some kind of GIS visualizations. I've occasionally had users ask about GIS support, but it seemed like such a huge challenge that I've always begged off. </p><p> All the online mapping services are about "geo-location"; I'm interested in "geo-intelligence". </p><p> So when people asked "yeah, but where are those jobs ?", I decided to scratch that itch. </p><p> I found <a href="http://search.cpan.org/perldoc?GD::Map">GD::Map</a>, but its interface and rendering weren't quite what I wanted. So I've created <a href="http://www.presicient.com/gdmapmerc">GD::Map::Mercator</a>. (Alas, I still haven't figured out how to integrate it into DBIx::Chart, but the experience helped me better understand the issues) </p><p> With that, and a Javascript widget I've been working on for another project, and a bit more detailed screenscraping, I've whipped up a <a href="http://www.presicient.com/langjobs/usajobs.html"> Dynamic Language Jobs Map</a> that provides some relative indicators of where those jobs are, along with a drill-down breakout of the Javascript, Perl, PHP, Python, and Ruby job counts. <i>(Sorry, USA only; free/open, current detail GIS data for other locations is hard to find)</i> </p><p> Note that I've added Javascript to the list, because its become increasingly important to <i>me</i> personally, and I suspect it either already is, or soon will be, important to other dynamic language users. </p><p> The cosmetics are still a bit rough in spots (despite minor intervention with Microsoft Paint), but hopefully its a bit more insightful. I'd hoped to get a deeper drill down using area code GIS data, but I've been unable to locate a free/open source for the data (if anyone knows of a source of such data, I'd be grateful if you passed along the info). </p><p> I'll try to update the data every couple of weeks; I've imposed on DICE's hospitality a bit more than I should; hopefully they'll continue to be gracious about my occasional scraping.</p> renodino 2008-02-11T19:37:45+00:00 journal ALL UR QWERIES ARE BELONG TO US http://use.perl.org/~renodino/journal/35404?from=rss An interesting day for those of us that splash about in the DBMS end of the pool: <ul> <li> <a href="http://blogs.mysql.com/kaj/sun-acquires-mysql.html/">Sun to acquire MySQL</a> (<i>tho for the life of me I can't figure out why...</i>)</li> <li> <a href="http://www.news.com/Oracle-to-buy-BEA-for-8.5-billion/2100-1014_3-6226385.html">Oracle to acquire BEA</a></li> <li> <a href="http://people.planetpostgresql.org/greg/index.php?/archives/119-DBDPg-2.0.0-release-candidate-available.html">DBD::Pg 2.0 almost ready</a>, with some nifty new features</li> <li> <a href="http://www.trentrichardson.com/jsonsql/">Proof</a> that I'm not alone in my <a href="http://www.presicient.com/dbixchart">SQL madness</a> affliction.</li> </ul> renodino 2008-01-16T19:19:03+00:00 journal Perl for munging Java-esque Javascript http://use.perl.org/~renodino/journal/35241?from=rss <p> Javascript's prototype object system may be academically interesting, but its a royal PITA for coding decent class hierachies. (Just do a quick google on "javascript inheritance" and you'll see the madness that makes Perl's OO look like the purest of Smalltalk).</p><p> Most of the solutions I've seen tend to be bloated, slow, and only marginally less ugly than the original prototype wrangling they attempt to avoid.</p><p> As I'm in the process of bringing DBIx::Chart into the 21st century, I'm wrangling a lot of Javascript. And the long overdue refactoring of the rendering engine means a lot of object hierachies. But typing all the <code>"ThisLongClassname.prototype.someFunction = function..."</code> nonsense is really annoying, and jumping thru all the hoops to properly propagate methods up the class chain is a mind numbing exersize, not to mention an unreadable mess.</p><p> So I think, "Someone <i>must</i> have written a preprocessor for this stuff.". While Google turns up a few hits, they all appear to be full-blown Java to Javascript translators. All I need is something to bury the OO yak shaving; while the Java class declaration syntax is a reasonable choice, I don't want to carry all the other bloated baggage. And CPAN has loads of Javascripty modules, but none that address my little task.</p><p> Ergo...I've whipped up some Perl to do the translation, and the result is actually pretty reasonable. Just declare classes like</p><blockquote><div><p> <tt>class Parent {<br>&nbsp; &nbsp; Parent(first, last) {<br>&nbsp; &nbsp; &nbsp; &nbsp; this.first = first;<br>&nbsp; &nbsp; &nbsp; &nbsp; this.last = last;<br>&nbsp; &nbsp; }<br> <br>&nbsp; &nbsp; toString() { return this.first + " " + this.last; }<br>}<br> <br>class Child extends Parent {<br>&nbsp; &nbsp; Child(first, last, id) {<br>&nbsp; &nbsp; &nbsp; &nbsp; super(first, last);<br>&nbsp; &nbsp; &nbsp; &nbsp; this.id = id;<br>&nbsp; &nbsp; }<br> <br>&nbsp; &nbsp; toString() { return super.toString() + " " + this.id; }<br>}</tt></p></div> </blockquote><p> <i>et voila</i>, (and with the aid of a very tiny Javascript helper function), the Perl script emits the Javascript with all the prototype crud. </p><p> Which will save me many hours of typing and eyestrain. I spose I should CPANify it at some point...</p><p> Hmmm. A Perl script to convert Java syntax to Javascript prototyped class hierachies so I can display charts rendered using an extended SQL syntax inside HTML pages.</p><p> <i>Anyone looking to hire a polyglot programmer ?</i></p> renodino 2007-12-30T00:49:32+00:00 journal Lil help, Amazon ? (DBD::SimpleDB) http://use.perl.org/~renodino/journal/35123?from=rss <p>So Amazon's big announcement RE: SimpleDB service gets us DBD'ers all fired up...and then we've got no place to go. Seems they announced things a bit prematurely, and all the beta slots are filled. &lt;sigh/&gt; </p><p> If any Amazonian's out there read this, we'd sure appreciate a little fast track access. Morphing DBD::Amazon into DBD::SimpleDB looks pretty straightforward, and would add a bit more relational usefulness to SDB to boot. While SDB seems targeted at the SQL challenged, I'm betting someone's going to want to do a JOIN eventually - even if they don't know what a JOIN is. And there's a pretty good chance they'll want a SUM(), MIN(), and MAX() before long, too. </p><p> And DBD::SimpleDB can do that (courtesy <a href="http://search.cpan.org/perldoc?SQL::Statement">SQL::Statement</a>).<nobr> <wbr></nobr>...<i>if</i> we can get at the service.</p> renodino 2007-12-17T19:15:54+00:00 modules I must have enemies... http://use.perl.org/~renodino/journal/35021?from=rss For the past week I've been building a package to provide bitmapped fonts for HTML &lt;canvas&gt; elements (which don't provide native text drawing - someone at Apple needs to be flogged for that omission...). All the existing solutions I can google up require manual intervention at some point. Not very 21st Century, and certainly unacceptable for lazy Perl programmers. <p> On Monday, after some deep cogitation during a restless slumber, I devise a plan. "Should be simple", thinks I, "just use GD::Text to progressively render a text string in a specified font, accumulating character positions and widths as I go. Write a bit of Javascript to load and slice up the character set image and apply to the canvas via drawImage(). Steal a bit of Javascript from some other similar solutions, and I'm done." </p><p> Then a sudden shudder down my spine: "ooooh...GD::Text...<nobr> <wbr></nobr>." A minor headache begins to throb in my temples as I recall painful memories of trying to get the damn thing to work. Vague recollections that the POD is actually a work of fiction. And bugs, strange little bugs, but I can't recall what they were. Perhaps its been updated ? </p><p> Alas, No. Untouched since 2003. </p><p> "But this is too simple, shouldn't take me more than an afternoon to find and workaround the bugs." </p><p> Yes, I'm a cockeyed optimist. </p><p> So I dig in. The code nearly writes itself. "Simple things should be easy!". Even the Javascript is a breeze. </p><p> And then I begin testing. And the painful memories of GD::Text become tangible welts across my back once again. Strange and silent errors. getBounds() behavior and interface only vaguely resembles the POD. Printing a zero character by itself on a line results in nothing printed...unless I add another character. And when, 36 hours later, I finally manage to get the character set rendered, it looks like shit...and strings reassembled from sliced out characters look even worse. </p><p> (My neighbors are now quite certain they've moved next to a drunken, angry Russion sailor. Fortunately, they have no children, so no one learned any new vocabulary words) </p><p> So I'm done with GD::Text (and probably GD, too). They were an adequate solution in the long ago, far away time, and they are still a nice lightweight solution for "Simple should be easy" projects. But the accumulation of frustrations with the pair of them has done me in. </p><p> So I jump to Imager. I'd looked at it some years ago when it was still fairly nascent, and it looked promising, but the docs were confusing, and I didn't have time to spend on it. But the latest versions look pretty robust, and the docs seem better, so I PPM's me a copy and begin code conversion in earnest. </p><p> OK, first, I need to make a transparent fill color. So how do I do that ? Looks in Imager docs. Nothing. Looks in Imager::Color docs. Nothing. Imager::Draw ? Nope. WTF ??? </p><p> Fortunately, as I've been on this merry-go-round a few times now, I figure it must be the alpha channel. Then I find a code sample buried deep in the Imager source tree. OK, 3 hours to find a very basic thing that should be one of the 1st 3 items described in Imager::Color. But I'm a n00b, so I take it like a man and move on. </p><p> Well, thinks I, since I'm screwing with alpha channels anyway, why not add opacity to the text colors. So I does. 'Cept the docs never state what kind of value the alpha channel actually uses. After trying a few fractional values, I discover it ain't like CSS. &lt;sigh/&gt;. So i start throwing numbers at it and seeing what comes out. Big numbers, huge numbers, little numbers. By trial and error I discover its a value betweem 0 and 255. Thanks for the helpful docs, Imager. And another 3 hours pissed away. </p><p> So now I'm ready to start trying fonts. And Imager has a very nice font metrics function. "Ah, at last I'm on the downhill side!", thinks I, and beginning typing furiously. "Now, which of these 9 values do I use to figure out how big a box I need to render my string ? Er...". Another painful trial and error session until I finally get satisfactory results. </p><p> But at least it looks good. And assembling strings from extracted bits looks great. Tweak the API to render the Javascript better, fixup the test suite, and things are humming. At 8PM Thursday night - after starting bright and early Monday AM - I've finally got the <i>Perl</i> working. Yep, "Simple things should be easy." </p><p> I awake Friday after yet another fretful slumber, hack in a few niceties I'd conjured during the night, and start testing the Javascript. Firefox + Firebug, the Web Developer's best friends. Whats this, do I want to update to 2.0.0.10 ? Oh sure, what the heck, can't hurt... </p><p> After fixing a few Javascript syntax errors, things look ready to roll...except for this nasty "Uncaught exception:.... NS_ERROR_NOT_AVAILABLE...". Hmm, the docs say canvas.drawImage() waits for the image to load. Lemme try this...no ? Ok, what about this ? Huh ? Wait one goddamn minute... </p><p> So, reverting to first principles, I grab example code direct from the MDC canvas tutorial site and give it a go. "Uncaught exception:....NS_ERROR_NOT_AVAILABLE..." WTF??? </p><p> Fiddle some more. Still getting the error. Time for drastic measures. Clicks the Opera icon and loads the MDC tutorial page. Runs like a charm. </p><p> Ok, now this is bullshit. "Google, please assure me I'm not insane!", I think, as I feverishly type in "canvas firefox NS_ERROR_NOT_AVAILABLE". First hit: <a href="http://www.neowin.net/news/main/07/11/28/firefox-20010-gaffe-prompts-quick-fix"> 2.0.0.10 Gaffe Prompts Quickfix</a>. Follow the links to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=405584">Bugzilla</a>. Seems our friends at Firefox are doing a less than thorough job of testing <b>standard API functions</b>. </p><p> <b>AARRRRRRGGHH!</b> </p><p> And from the comments in the Bugzilla entry, there are *many* others in far worse shape than I. Hopefully, this episode will light a fire under the Firefox. </p><p> Its now Friday evening. I've poured a a tall spiced ale, and will top it off with a tall Jack and soda soon. This little exersize - that should never have taken more than a day, maybe 2 tops - is now stretching into day 6. I'm frustrated, tired, pissed off, and seriously wondering if its time to throw away OSS and embrace the C#. </p><p> My takeways: </p><ol> <li>Start using Opera for development, and stop recommending Firefox.</li> <li>Stop using GD anything.</li> <li>Submit some doc patches for Imager::Cookbook. Imager is a great package, but the docs seem to assume the reader either has an advanced degree in CG, or was a contributor.</li> <li>If anyone from WHATWG reads this, <b>PLEASE FOR THE LOVE OF GOD ADD drawString() TO HTML5!!!!</b></li> </ol><p> Because Simple things should be easy, dammit.</p> renodino 2007-12-01T01:51:30+00:00 journal DDJ's 1st major insight in a decade... http://use.perl.org/~renodino/journal/34943?from=rss I've been computing long enough to recall when Dr. Dobb's was a worthwhile rag. In the far away, long ago time, I was a regular subscriber, and learned many interesting lessons from it. But the Internet era, and an unhealthy codependence on the MSFT and Java crowd, sucked the life out of the good doctor. <p> So I was happily surprised when by chance I headed over to see what VB/C# pimping the Doctor was doing these days, only to discover this <a href="http://www.ddj.com/web-development/203101035;jsessionid=AD2205O124NVKQSNDLOSKH0CJUNN2JVN">article</a> on dashboards: a very commonsense, yet important, set of datapoints and conclusions. </p><p> Gives me much food for thought...<a href="http://www.presicient.com/dbixchart">DBIx::Chart</a> is in dire need of an update, and I must admit to serious penis envy when viewing some <a href="http://dojotoolkit.org/projects/dojox">recent</a> <a href="http://www.liquidx.net/plotkit/">developments</a> for charting tools. </p><p> Guess I gotta find a fresh cache of tuits...</p> renodino 2007-11-21T01:20:18+00:00 journal SC07 Day 1 (actually, 3): There must be money in this stuff http://use.perl.org/~renodino/journal/34887?from=rss Attended a couple tutorials today: Intro to <a href="http://www.openmp.org/">OpenMP</a> and Advanced Topics in OpenMP. Despite years in the trenches of parallel processing, I'd never studied OpenMP. Very code-at-the-traces stuff, not too useful for anything Perlish, but stimulated the neurons just the same. I'm not too keen on all the <code>#pragmas</code> and compiled-in stuff, but I suppose serious computational hackers need that. <p> It did give me notions about trying to hack Perl's iterator opcodes to provide auto-threading versions...guess I'll need to paw thru the compile sources, and try the midnight opcode swap hacks I've seen posted here and elsewhere </p><p> They gave us a flash drive w/ *all* the tutorial presentations on it, so I'll dive into the MPI stuff ASAP; maybe that'll be a bit more Perl-friendly (there are a couple MPI modules on CPAN, one recently updated). </p><p> Alas, my schedule this week won't permit me to attend the regular sessions, but they're mostly paradoxically brief: 30 minutes to discuss <i> <b>anything</b> </i> related to HPC seems a bit foolish, except for cocktail parties and Nova snippets. </p><p> However, I'm definitely going to the exhibit hall Wed. or Thursday. I was astounded at the number of exhibits/vendors, and the elaborate displays I caught a glimpse of from the convention hall lobby. I can only assume that there's serious $$$ in HPC these days - I'm guessing most of it is gummint money. Still, it does warm the heart of an old parallel coder to see new life in the discipline. However, based on overheard conversations, and the content of tech sessions and tutorials, I'm guessing the HPC hackers are still grinding out code the same way we did 15-20 years ago, which is a bit disappointing. </p><p> I'm still convinced there's a big opportunity for dynamic languages in this space, tho likely not for the serious computational stuff. And it resurrected a memory of something I'd been meaning to track down for a Thread::Sociable storage manager: <a href="http://www.openfabrics.org/index.htm">RDMA</a>.</p> renodino 2007-11-13T02:08:29+00:00 journal SC07 In My Backyard...Why was I not informed ? http://use.perl.org/~renodino/journal/34858?from=rss I just discovered today that <a href="http://sc07.supercomp.org/index.php">SC07</a> is just a hop, skip and jump down the road from me. <b> <i>And I didn't know about it until this AM!</i> </b> when, by sheer chance, I followed a link from Yahoo Finance. <p> As someone who's been working inside, on, around, over, and under MPP systems for 20+ years - I just picked up the <a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471220485,descCd-description.html">book on UPC</a> a few weeks ago for some hints on supporting DSM in Thread::Sociable - , this is really sweet, and likely to eat my week. </p><p> Wish I'd known about this before the early registration expired <i>(arrrgh!)</i></p> renodino 2007-11-08T16:21:05+00:00 journal Win32::WebBrowser http://use.perl.org/~renodino/journal/34852?from=rss After re-implementing this by hand about a dozen times now, I've created a package to deal with it in a single method call. <a href="http://search.cpan.org/perldoc?Win32::WebBrowser">Win32::WebBrowser</a> exports a single method, open_browser(), that pops open the default browser in a detached process and points it at a URL. <p> Who knows, maybe it'll make the <a href="http://use.perl.org/~Alias/journal/34849">Strawberry Perl</a> dist... </p><p> <b>Update:</b> New 1.02 release: Prior version did some URL munging it shouldn't have.</p> renodino 2007-11-07T18:22:20+00:00 modules Tired of "Perl is dead" FUD ? http://use.perl.org/~renodino/journal/34444?from=rss <p> Yeah, me too. But I'm a capitalist, so I like to see what people are writing checks for. As I'm fed up with the various unsubstantiated claims, I've whipped up a <a href="http://www.presicient.com/langjobs.html">little graphic</a> that will hopefully cheer you up. I'll try to keep it updated regularly. </p><p> If nothing else, it'll give us all something to watch as we're overtaken by our Ruby and Python overlords. </p> renodino 2007-09-13T22:40:52+00:00 journal Props to InfoWorld, and major Thanks to TIBCO http://use.perl.org/~renodino/journal/34428?from=rss I've just discovered <a href="http://gi.tibco.com/">TIBCOGI</a>, and I'm in love. Its got me swooning and swanning about. This is so f*ckin kewl, I'm gonna soil myself. And all because I let my jaundiced eye roam from a<nobr> <wbr></nobr>/. article RE: <a href="http://it.slashdot.org/article.pl?sid=07/09/12/1739215">the "Bossie" awards</a>. Props to InfoWorld on a great pick. And HUGE props to TIBCO for OSing this great tool! <p> Despite searching all over the 'net for a tool like this, the closest I could find was <a href="http://www.aptana.com/">Aptana</a>, which is Eclipse based and thus painfully slow and bloated (and kinda contradicts the whole idea of browser based GUIs, doesn't it ?). Why didn't I find this before ? Why didn't this pop to the top of my many Google searches ? Arrgh ! I've been splashing about with YUI, Ext, jQuery, Dojo, et al. for months now, crafting stuff by hand, and here was this wonderful solution that I've never heard of just sitting there. </p><p> Guess I need to get out of the house more often. But that won't happen for awhile, cuz I'll be wired into TIBCOGI like Neo into the Matrix. </p><p> PS. Also liked InfoWorld's choice of NetBeans over Eclipse. I used to think it was just me, but they've confirmed my suspicions: Eclipse's huge collection of plugins is killing it. I've had people recommend Eclipse as a solution for simple data analysis/BI tools...and then I'd stop and think about the BI users/analysts I've known over the last 15+ years. Very smart people, but if you dropped Eclipse in front of them, you'd lose a lot of friends and associates very quickly. And help make MSFT a bigger pile of cash on Excel licenses.</p> renodino 2007-09-12T20:58:38+00:00 journal An Open Letter To The Twin Cities Chamber of Commerce http://use.perl.org/~renodino/journal/34292?from=rss First, allow me to congratulate your fine cities on their vigilance with regard to their burgeoning population of sexual deviants. I'm certain that business and casual travelers alike - not to mention convention bookers - are relieved to know that your airport has taken strenuous measures to assure that every traveler is observed while attending to their biological needs. What better application of Homeland defense funding than round-the-clock staffing of public restrooms with fulltime police officers well trained in the habits of the deviants of your community ! <p> The recent arrest of Senator Craig has undoubtedly provided a significant boost to your efforts to host future political conventions. I have no doubt you're updating your convention prospectus material as I write this. The rallying cry of "Never fear: no queers here!" will undoubtedly warm the hearts of convention delegates of both parties. </p><p> However, if I may, I'd like to offer a few suggestions to avoid potential future unsavory episodes: </p><ol> <li>Perhaps your airport could serve edible food ? While I am uncertain as to Sen. Craig's dietary habits, I personally have feasted upon the fare available at the Minneapolis Airport, esp. while stranded for a day or so awaiting the arrival of the latest jet Northwest Air has been able to get out of hock, and must admit I too tapped my feet a time or two in a bathroom stall shortly thereafter, and may have made somewhat rude and violent gestures with my hands during the inevitable reaction.</li><li>Smaller, dingier restrooms: while I appreciate that you've attempted to make the airport restrooms as undesirable as possible by strewing bits of dung, mucous, and soiled toilet paper about, (the complete lack of ventilation was pure genious!), the more prurient elements of your community appear to still find them a welcome site for their erstwhile trysts. Perhaps removing the doors from the stalls - or removing the stalls altogether -, along with creating additional leaks in the urinals, or improving the content of the many literary barbs inscribed upon the walls, may help eradicate the problem ? Certainly, a fully armed and uniformed patrolman in each restroom, occupying the lone remaining stall 24/7, will keep the perverts at bay.</li><li>Due to the recent unfortunate episode involving Sen. Craig, our nation is finally giving proper honor to the heroic actions of the Public Restroom Patrolman. The trials, diligence, and humanity of these brave warriors of the WC was never better portrayed than in the Pulitzer Prize winning <a href="http://en.wikipedia.org/wiki/Confederacy_of_dunces">Confederacy of Dunces</a>, wherein both a pornographic photographer, *and* a politcal party of fops and dandies are foiled by the vigliant efforts and adroit exploits of the brave and wiley Patrolman Mancuso. Despite their unimpunable credentials in the practices of the perverse, your restroom patrolmen might well take a few lessons from Mancuso's cunning tactics and many disguises.</li></ol><p> I hope my suggestions do not fall on deaf ears, In this moment of glory, full of a sense of pride and self-congratulation, you and your constabulatory may look askance at the "low hanging fruit" available to control the more salacious nenbers of your community. </p><p> Until later,</p><p> Tab, Your pacifist Working Boy</p> renodino 2007-08-31T06:09:10+00:00 journal OSCON Day 4, and I'm outta there http://use.perl.org/~renodino/journal/33897?from=rss Keynotes<br> More good stuff. First a demo of stuff from processing.com. Amazing that they managed to do all that with Java (methinks theres a lot more manyears involved than advertised). Hilf apologizing for MSFT's attitude, and rather sheepishly announced microsoft.com/opensource. He then introduced the 4 horsemen of the apocolypse, and they all soft-shoed off the stage. <p> There was a quick speech that we're all biased suckers. So stop doing that.</p><p> Then the best: the leader of the Swedish Pirate party, gave a very coherent and direct message about why copyrights suck, and why we should be mad as hell and not take it anymore. Closing speech by &lt;I forget&gt; about branding open source was very entertaining despite technical glitches.</p><p> wxPerl: Alas, more about Eric's app than about wxPerl. I didn't have to give them grief about the lack of docs: someone else did.</p><p> Error Handling in AJAX: O'Reilly goofed! Speaker was a no show for an SRO talk; turns out he'd told them months ago he couldn't make it. Grrrrr...so I sat thru a few State Of lightning talks. Nice to see PostgreSQL making such good progress. </p><p> DBI BOF @OBF: Went very well. Tim B, jZed, and myself only, but the weather was good, the beer was cold, and its not nearly as crowded on Thursday as Saturdays. jZed and Tim headed back after a couple hours, but I stuck arround and listened to some great jams under the Portland sun, burned a tasty 'gar, and did much sampling before heading back for the Perl lightning talks. </p><p> Lightning Talks; Pretty good, tho I didn't see the sort of spirited talks I've seen in the past (e.g., "Stop Using XML For Everything, Dammit!"). Before the Onion talk, a TPF auction was held, at which I picked up PBP, which I've thus far managed to avoid. Once I finish the Erlang book, I'll do my best to give PBP a good read (tho I'm admittedly skeptical of such tomes). </p><p> State of the Onion: More techie than spiritual this year (perhaps the focused audience reined Larry in ?) </p><p> Evening Festivities: Hit the Sourceforge party w/ jZed. Was OK, free cocktails, but not much grub. Then the night began in earnest when jZed took me down to Outlaws to see the March Fourth Marching Band. Yeehah, what a hoot. Danced my ample buns off...as did everyone else. Massive props to jZed for the invite. He is now my personal Lord and savior! GO TEAM! </p><p> Due to the late night, I couldn't drag myself back to OSCON for the Friday keynotes. So now I load up the Jeep and beat feet to Seattle for some R&amp;R, including a ballgame at Safeco, before heading back home.</p><p> This was probably my favorite OSCON of the 5 I've attended. Very meaty, with extra crunchiness of the parallel processing variety. Too many ideas to pursue, too many books to read. But entertaining and educational. Kudos to the O'Reilly crew.</p> renodino 2007-07-27T16:16:10+00:00 journal OSCON Day 3 http://use.perl.org/~renodino/journal/33890?from=rss Keynotes: Pretty good. Transactional Memory was far too brief, but appears to have gotten the audience's attention. Intel's TBB appears more marketing than product. The Ubuntu interview was interesting.<p> Sat thru <a href="http://www.greenplum.com/">Greenplum</a>'s talk. As someone who's been playing in the MPP sandbox for 20+ years, the stuff they're doing really intrigues me. (Think API for automatic parallel decomposition over petabyte datasets). I may have to hit Luke up for the job I turned down a few years ago. </p><p> Then Xquery+XForms. Alas, the speaker seemed unaware he only had 40 minutes, so much of the meat got truncated. But I need to revisit the whole XQuery thing I've thus far dismissed. </p><p> Nested data parallelism was interesting, tho being Haskell specific, was perhaps a bit impractical. However, it does dovetail nicely with the Greenplum talk; I wonder if they've looked into it ?</p><p> Then a quick talk on <a href="http://developer.yahoo.com/yui/">YUI</a> CSS by webchic. Definitely gotta add YUI to my toolkit.</p><p> I then collared Simon Peyton-Jones for a quick chat to help get my mind right about the stuff I'm doing for STM in Thread::Sociable. Lots more to read and (I fear) to implement. But I think I've got the basics right. I can cheat on "orElse" operator with a simple boolean "acquire()" method; not perfect, but usable. I/O remains a challenge, tho I've vague notions about writing a PerlIO layer to support thread ownership and buffering for such things. That will likely wait until the 2nd or 3rd release. A transactional queue may bridge the gap for tte time being. </p><p> The Javascript Performance talk was a high-speed adrenaline fueled affair, with conclusions I had come to already (i.e., Dojo/Scriptaculous/et al are great, but too fat...so get out the trimming knife), and also some new ideas (remove the DOM head before hacking up the DOM...gonna have to try that with those monster PPI::HTML[::CodeFolder] documents).</p><p> Lastly, the Machine Learning with Perl talk was far too brief. Great insights, but not enough meat. Would've been nice to see more on how he used PDL.</p><p> Looks like Thrusday's DBI BOF @ OBF is a go. Should make the later lighting talk sessions more enjoyable.</p> renodino 2007-07-26T14:59:36+00:00 journal OSCON Day 2 http://use.perl.org/~renodino/journal/33876?from=rss The first tutorial was on Intel's Threading Building Blocks. (TBB) (recently open sourced) library. Alas, the sort of threading problems they're solving won't be of much use to anyone using a VM. Which, at OSCON, is most of us. But I'll give their read/write spinlock a looksee; I'd been pondering using such for Thread::Sociable's STM. And the concurrent hash and vector constructs might be usable as well, tho Intel is much more concerned with keeping a "hot" cache, upon which VM's will be throwing ice water. I didn't even bother asking about transactional memory support, which will definitely cool off the cachelines.<p> Data Mining Open APIs: much more about data mining than Open APIs. Note to self: never eat the turkey sandwich for lunch before attending a 2 hour talk on statistical analysis in a darkened room. The Python examples illustrated the computational brute force approach to deta mining. And seem completely devoid of code that manages the collection/cleansing of the data. Definitely *not* a solution for ad-hoc OLAP. But wrap the API access as a storage engine, add in some SQL::Statement, and all that code turns into a single SQL statement. Then we start JOINing between SOA's. And maybe toss in a bit of <a href="http://www.presicient.com/dbixchart">charting syntax</a> for chuckles. Ah, if only I had the time. The best take away was the link to programmableweb.com/apis. Maybe need to scrape these sites and derive schemas (WSDL should be a nice start)</p> renodino 2007-07-24T23:10:43+00:00 journal OSCON Day 1, Part 2: http://use.perl.org/~renodino/journal/33871?from=rss Learned some Haskell. Interesting, but left me with a queasy feeling about footprint and performance. I suppose it would be of value to those for those in the fortunate position to sweep such concerns under the rug, but I can't count myself among them.<p> But the best part of the day was the excellent Erlang BoF. Very similar to Haskell (presumably due to the same functional programming roots), but battle tested for 10-15 years in systems with 6-nines uptime SLAs. While it was only an hour long, Patrick Logan provided lots of intriguing info (esp the auto-update of modules in a running system, something anyone working under rigorous SLAs can appreciate). I'm still a bit foggy about using immutable variables, but by happy coincidence the <a href="http://pragmaticprogrammer.com/titles/jaerlang/index.html">new Erlang book</a> was available at Powell's onsite store. So I've got fresh reading matter for the remainder of the summer. Too bad there wasn't a full Erlang tutorial: the Haskell presenter was interesting/entertaining, but Patrick's "learn by doing" approach worked much better for me.</p><p> Day 2 promises intrigue (the semi-stealthy Intel announcement at the morning tutorial) and enlightenment: Data Mining Open APIs appears to mesh nicely w/ my efforts RE: <a href="http://www.presicient.com/dbdamzn/">DBD::Amazon</a> and some other similar drivers I've been working on (albeit at a slow simmer).</p> renodino 2007-07-24T15:36:31+00:00 journal