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 ?
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'):
if (token == '\n')
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
The half pint of 13% ABV trippel then caused a mental segue to Bill G.'s recent stunt. 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.
"Just add water, makes its own sauce..."
Session 1: Parallel/Distributed Perl
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.
Session 2: DBIx::Router
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).
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.
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.
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.
OSCON08 Day 5
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.
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.
Social science and large/open data. Adding context vs just adding GPS. Techies pushing tech off the desktop out to the masses.
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 ?!?!
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!
Jeremy Ruston (tiddlywiki) acquired by BT: what we learn from airports. meh.
Q&A: Rippin on MSFT! You patent trolling bastids!
Session 1: Spring 2.5: Spring wo/ XML
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.
Since the next session was gonna be Spring/JDBC too, I decided I'd had enough OSCON for 2008, and bailed.
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.
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.
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!
The rest of the drive was uneventful. Got to Portland about 7:30PM, checked in, chugged a couple cold homebrews, and crashed.
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.
The 2nd tutorial was "Test Driven Development". Alas, the title and description were a bit misleading. Should have said, "Test Driven Development for Perl". 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.
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).
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...
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!
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.
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.
Dirk Hohndel talks about Moblin. Basically pleading for FOSS developers to jump on the wagon. Wish I had time.
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.
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...
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
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.
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).
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.
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.
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...
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.
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.
Then beers in the exhibit hall, and soon beers back the hotel (courtesy Sun/MySQL/et all)
And yes, I'm already getting teched-out.
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
And then some R&R with friends in Seattle, and a leisurely camping meander back to Reno.
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.
Looking for Chaotic Evil? Find exactly what you want today.
I'm almost tempted to bid on the phrase and point it at (RIAA/MPAA, whitehouse.gov, microsoft.com, the Wikipedia entry for Iran,
Essentially, its the intersection of Murphy's Law and PEBKAC.
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.
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.
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.
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.
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.
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.
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.
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.
If there isn't a word for it, there certainly should be. And there should be at least one expletive embedded in it.
After a few queries on DICE, 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.
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.
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.)
On a positive note, however, the overall numbers seem to be holding up quite well, despite the current economic woes here in the US.
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.
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.
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.
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.
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.
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.
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.
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!
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!
In the meantime, I'm desperately trying to get Thread::Sociable into at least compilable 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).
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.