renodino's Journal
http://use.perl.org/~renodino/journal/
renodino's use Perl Journalen-ususe 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:00pudgepudge@perl.orgTechnologyhourly11970-01-01T00:00+00:00renodino's Journalhttp://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>renodino2009-02-19T22:23:10+00:00modulesIs 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 & Co. purposely releasing bugs to the public.</p><p>
<rimshot/></p><p>
<i>"Just add water, makes its own sauce..."</i></p>renodino2009-02-12T16:46:04+00:00journalOSCON08 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&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>renodino2008-07-25T18:39:40+00:00journalOSCON08: 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>renodino2008-07-24T02:13:02+00:00journalOff 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&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>renodino2008-07-18T19:40:53+00:00journalGoogle 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>renodino2008-07-10T21:57:48+00:00journalThere 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>renodino2008-07-01T20:06:34+00:00journalDLJB 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>renodino2008-06-29T17:45:01+00:00journalGremlins!
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>renodino2008-05-26T17:06:33+00:00journalLone 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>renodino2008-05-10T16:06:38+00:00journal"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>renodino2008-03-24T17:46:42+00:00journalCPAN 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/) && ($^O ne 'MSWin32'))<br>{<br> next; # NO SOUP FOR YOU!!!<br>}</tt></p></div> </blockquote>renodino2008-03-18T15:35:35+00:00cpanHTTP::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>renodino2008-03-12T01:09:01+00:00modulespQuery: 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>renodino2008-02-28T19:03:43+00:00modules"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>renodino2008-02-11T19:37:45+00:00journalALL 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>renodino2008-01-16T19:19:03+00:00journalPerl 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> Parent(first, last) {<br> this.first = first;<br> this.last = last;<br> }<br> <br> toString() { return this.first + " " + this.last; }<br>}<br> <br>class Child extends Parent {<br> Child(first, last, id) {<br> super(first, last);<br> this.id = id;<br> }<br> <br> 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>renodino2007-12-30T00:49:32+00:00journalLil 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.
<sigh/>
</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>renodino2007-12-17T19:15:54+00:00modulesI 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 <canvas> 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. <sigh/>. 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>renodino2007-12-01T01:51:30+00:00journalDDJ'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>renodino2007-11-21T01:20:18+00:00journalSC07 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>renodino2007-11-13T02:08:29+00:00journalSC07 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>renodino2007-11-08T16:21:05+00:00journalWin32::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>renodino2007-11-07T18:22:20+00:00modulesTired 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>renodino2007-09-13T22:40:52+00:00journalProps 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>renodino2007-09-12T20:58:38+00:00journalAn 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>renodino2007-08-31T06:09:10+00:00journalOSCON 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 <I forget> 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&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>renodino2007-07-27T16:16:10+00:00journalOSCON 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>renodino2007-07-26T14:59:36+00:00journalOSCON 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>renodino2007-07-24T23:10:43+00:00journalOSCON 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>renodino2007-07-24T15:36:31+00:00journal