I keep writing modules, and of course talking about them, when I get the chance. No one ever says, "oh, that's useful", or "I'm glad Perl has that now even though I'll probably never need it" -- they just ask why. That happened when I did typesafety.pm. No one seemed to think it was neat that you could write strongly typed Perl if you so desired. No one could imagine that one piece of code in the project could need its interface changed along with the code that depenended on it and that they'd want to be warned if they missed updating a piece of code. It's just not the Perl way; the Perl way is to avoid refactoring because you might break something, and lack coverage for it in automated or manual testing, or to rely on testing and hoping for perfect coverage. The short version is, there are damn good reasons for type checking that sometimes come up. I've repeated this argument over and over again. People keep making feebile arguments and then just refuse to think about it any more.
So when I wrote Code::Splice, I wasn't surprised that not only could no one think of a use for it, but they were dubious about any existing at all. What the hell has happened to us? Is unit testing and MVC the end all and be all -- have we "arrived" and there is now no future? Sure, code splicing probably isn't the future, but the curiousity is gone from the Perl camp. Or the naturally curious have defected to other places that are at least excited about their own technology and their goals. Ruby's culture seems to be very good at covering lots of technical turf, but doing it in an elegant, minimalish way that keeps things from crumbling under the weight of their own complexity.
Okay, bitches. Here's why Code::Splice. To inline method definitions in cases where there are no subclasses of a class and this optimization can safely be done. To search-and-replace dangerous code constructs, to upgrade them, such as replacing blocking reads with Coro-friendly calls that give up the CPU to runable contexts. To write tests for extremely hard-to-test code without mocking half of the known universe including the DBI -- this was the original reason.
Questions of why code splice came up during the Google interview. The interviewer commented that "that's the only good reason I've heard", in the context of optimizing OO programs with code splicing. I didn't have the heart to mention testing for fear of seeming like a code splicing zealot.
I'm applying mad science to testing -- replacing probably incomplete and manual unit tests with static analysis, and devising schemes for testing the bulk of the existing code out there, which is horrific. But the knee jerk reactions of "we're going to do this right" -- even though the application is hundreds of thousands of lines of speghetti, fragile, time consuming to learn and debug -- still keep companies from turning to mad science. There are no comprimises; no optimizations. Legacy code is a hard problem; I've tried to raise to to the challenge (and succeded in doing so when people didn't stand in my way). The Perl community has left their imagination behind on dealing with this problem just as they're trying to leave their quick and dirty style behind. Is there now no room for cleverness? Do we do everything only according to prescribed methodologies that are endorced by well read evangalists? Do we dodge blame for any failure by punting all decisions to software engineering group-think? Are we like Detroit, having failed to keep up with the desires of the market, now entirely mechanical about building soulless mechanisms using only formulas and specifications? Have we become just Python or Java programmers but without giving up Perl's syntax?
If I stop and think about it, I can come up with a lot more ideas for Code::Splice. A proper implementation of the CoreWars game, where your virus-like program attempts to take over all of core in a simulated computer and wike out your opponets, is now possible in Perl. Can you think of any? Do you care to? Or is anything not directly related to MVC or RSS just pointless?
There are infinite possibilities -- love them. The best ideas haven't even been thought of yet. Don't become a slave to the few things that are currently in fashion.