Eric Wilhelm's Journal Eric Wilhelm'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:14:40+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 Eric Wilhelm's Journal Open Source Summer Perl Jobs for College Students <p>The Perl Foundation is participating in Google Summer of Code 2010 and will begin accepting applications from students on the 29th.</p><p>If you are a college student interested in Open Source software, now is the time to get involved.</p><p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=""></a></p><p>Each year, Google offers students the opportunity to spend their summer coding on open source projects. You propose a project, and if selected, you're assigned a mentor and provided a $4500 stipend. It is a competitive program to get into, but offers an amazing amount of real-world experience and the ability to get seriously involved in an open source project of your choosing. The Perl Foundation spans a wide variety of projects including Perl 5, Perl 6, and Parrot with many great mentors knowledgeable in areas ranging from language design, virtual machines, and compilers through web and desktop applications. This program is a great chance to get more involved in the Perl community and put a substantial project worth of source code in your portfolio.</p><p>Applications are due April 9th.</p><p> &nbsp; &nbsp; &nbsp; &nbsp; <a href=""></a></p> Eric Wilhelm 2010-03-26T10:46:30+00:00 journal Google Summer of Code is coming <p>The mentor org activities for this year's Google Summer of Code <a href="">are getting underway</a>.</p><p>Now is the time to get involved if you are interested in mentoring or helping The Perl Foundation find students to hack on perl, parrot, or cpan modules this summer.</p> Eric Wilhelm 2010-03-09T07:54:45+00:00 journal Combust and the "preview problem" <p>I've been working on <a href="">Combust::Spontaneously</a> as a solution to the "preview problem".</p><p>The problem is that it's difficult to know what your changes to the site will look like unless you've got a combust running on your local machine (combust is the template rendering engine that runs So, while you can certainly checkout some site from and make a tiny change, any non-trivial changes have had this barrier to entry where you need an apache (and some admin-fu) to see how combust would render it.</p><p>Through some subversive feats of hackenry, I've managed to wrap the combust evaluate_template() call with an HTTP::Server::Simple::Er frontend and everything else you need declared in the Build.PL's dependencies.</p><p>It's not quite cpan-and-go because combust still needs to be checked-out from git. But try it out (see 'Setup' in the combustier manpage) and see if you can't be hacking on the sites within a few minutes.</p><p><em>Update:</em> this is now on the CPAN.</p><p> &nbsp; &nbsp; cpan Combust::Spontaneously<br> &nbsp; &nbsp; perldoc combustier</p> Eric Wilhelm 2009-09-07T01:33:52+00:00 journal TPF grant update <p>Updates at <a href=""></a>.</p><p>I scrapped the existing templates today and brought it up from zero using my Shebangml tools (yet another as-yet-unwritten blog post.) This might make it a pain to fit back into the combust site, but I was feeling so shackled into the existing layout that I wasn't getting anything done. Right now, it will still be a few months before this is ready to go live, so I'll ponder that in the meantime. Maybe it will be trivial to make it work within the existing framework+combust, but I just have to go with the getting-things-done approach for now.</p><p>I spent a lot of time in this last month figuring out what everybody wants from the books listing and what to do with them. Between and, there's a lot of confusion and duplication. My take is to yank the books off of the front page and put them in<nobr> <wbr></nobr>/books.html. It might be nice to add some of the cover thumbnails ala</p><p>At least I've gotten some new content posted (the "Getting Started" and "Modules" tutorials.) If you have critiques of the tutorial content, I welcome you to e-mail me (ewilhelm at cpan dot org) with your thoughts.</p><p>Aside: <a href="">combust</a> has caused me quite a bit of frustration on this. If anyone has successfully installed it on Debian Lenny, please let us know how. I managed to get it working on Etch, but Lenny has dropped Apache 1.x and this workstation is the last Etch holdout (which causes frustration with everything else.) Alternatively, some way to run combust without apache would be extremely useful to in general.</p> Eric Wilhelm 2009-05-03T03:02:21+00:00 journal The Future is Shrouded in History <p>Adam <a href="">wants to dust off the Perl websites</a> and pretty them up. This is going to be an interesting project, starting with the archeological dig through the DNS and some various site maintainer addresses.</p><p>For instance, the<nobr> <wbr></nobr>.html page on the front of is part of the CPAN mirrors, but it (and the code that builds the master tree) is not on the CPAN or accessible by the PAUSE admins. We might be approaching the point where not even the current "elders" know where anything is (hey, do *you* remember where the code for that random site you built 5 years ago is?)</p><p>It reminds me of remodeling a 100-year-old house, where you tear off the sheetrock to discover a door frame and you have to stop to figure out what things must have looked like 30 years ago.</p> Eric Wilhelm 2009-04-23T08:32:18+00:00 journal wanted: perl evalbot <p>Your mission, should you choose to accept it, is to create an online 'evalbot' for the latest stable version of Perl. This could be a crippled version of Perl, such that it will only run for N seconds, refuses to execute system commands or load certain modules and so forth. The goal is simply to give users a zero-footprint way to play with Perl code in their browser. Bonus points if it is easy (and safe) to host.</p><p>Has it been done? Is it possible? How difficult would it be? Is it easy enough to solve only the 80% case? Could you use AJAX and PPI to do syntax highlighting in the textarea?</p> Eric Wilhelm 2009-04-19T07:33:39+00:00 journal Summer of Code Students Needed <p>If you are a student interested in Open Source (or know some students), now is the time to act to get involved in Google's wonderful <a href="">Summer of Code program</a>.</p><p>Each year, Google offers students the opportunity to spend their summer vacation coding rather than flipping burgers. You propose a project, and if selected, you're assigned a mentor and provided with a stipend. It is a competitive program to get into, but offers an amazing amount of real-world experience and the ability to get seriously involved in an open source project of your choosing.</p><p>Please help us get the word out to students and remind them that the deadline is fast approaching (noon (PDT) on Friday!)</p><p>The place to go for more info is <a href=""></a>.</p> Eric Wilhelm 2009-04-01T17:55:59+00:00 journal Perl in Google Summer of Code 2009 <p>The Perl Foundation has been accepted into Google Summer of Code 2009 as a <a href="">mentor organization</a>!</p><p>Now is the time for all good Perl Mongers to encourage students to apply for the program. Qualifying students should note the April 3rd deadline, but also note that the best proposals usually arrive about one week before the deadline.</p><p>If you are interested in mentoring, <a href=";formkey=cEF6WjFMQzZUd0tTQWUwR0tvTW1aU3c6MA..">sign up</a> and add your suggestions to the <a href="">project ideas</a> page.</p> Eric Wilhelm 2009-03-20T17:03:39+00:00 journal Bringing Perl to University <p>Jonathan Leto and I made a trip to Seattle to talk about Perl and The Perl Foundation's involvement with GSoC at a <a href="">Google Summer of Code Infosession</a> this week. The show-of-hands of students who have used Perl was only one or two out of about 25. My presentation included a very brief overview of TPF, Perl, the CPAN, Perl Mongers, YAPC, Perl 6 and Parrot (in under 10 minutes.) I guessed that most of these things might be completely foreign to a group of CS students, but the blank stares about the CPAN were particularly striking.</p><p>Apparently the CS curriculum does not cover version control, test-driven development, project planning, bugtrackers, external dependencies, and various other real-world issues. From talking to some of the students afterwards, they are getting exposed to algorithms and data structures, but only through Java. A few asked about my "Perl is multi-paradigmatic" comment (where I mentioned procedural, object-oriented, functional, and declarative programming.) The notion that you can come at the problem from a radically different direction was just as foreign as everything else I said. I got the impression that several students might have had Perl filed under "only does web stuff" (if they had heard much about it at all.) Hopefully we helped clear-up some misconceptions and spark some interest.</p><p>Please, go tell students in your area about Perl! It seems that the universities are neglecting to mention it.</p> Eric Wilhelm 2009-03-07T19:31:10+00:00 journal Another wrong way to filter Spam <p>Apparently, mail servers are now doing content-based filtering where any domain names mentioned in your mail get compared against a list of "recently registered domains", which is fetched from:</p><p>And here's the funny: just got *renewed*, so for now any attempts to write mail to your perl mongers group wherein you mention will bounce.</p><p>Sigh... attempts to fight spam always turn into some absurd exercise. Such as applying multiple layers of adhesive bandages to your very hairy back while you bleed-out through your wrists due to the fact that you've cut off your hands to keep your feet from sweating.</p> Eric Wilhelm 2009-02-26T00:46:05+00:00 journal File::Fu update <p><a href="">File::Fu</a> has another version out, now with which() support. I looked at possibly replacing File::Which entirely, but unfortunately only had the time to just wrap it. In this case, it's not as painful as wrapping File::Temp, but that sort of choice is an ongoing struggle in the land of revisiting API designs for "good enough" and "what we have works" code.</p><p>And it now has a bug report, but Win32 support is on the back burner mostly for lack of a convenient mechanism for testing on that platform (though I honestly haven't had much chance to juggle the trade-offs of how it would be best implemented.) If you're interested, please feel free to take a run at it.</p> Eric Wilhelm 2009-02-02T05:20:19+00:00 journal The shin bone's connected to the ... <p>Well, actually <a href="">Graph::ChainBuilder</a> probably won't work if you're trying to sort-out a human skeleton, but it does allow you to find multiple <em>closed</em> loops in a set of data. I use it for identifying a sequence in an unordered pile of CAD line/arc data. I'm curious if others have a use for such a thing, and in what domain?</p> Eric Wilhelm 2009-01-31T09:31:30+00:00 journal Helping with <p>So you know a thing or two about RT and want to help make <a href=""></a> be as awesome as the RT you've got running at the office? Or maybe you've been looking for an excuse to learn more about RT and want to help the Perl community? Someone asked me about this sort of thing and the only thing I knew to do was to bother <a href="">Jesse</a> (who already spends lots of time, money, and effort for the love of all things Perl) about it.</p><p>And it turns out, that's sort of the standard procedure for those who would like to help. This is a bit sub-optimal in that you have to feel like you're interrupting someone (and in fact you probably are) to satisfy your curiosity about whether you can help.</p><p>Since Jesse and his crew have already taken the trouble to answer my questions about the matter, I figured I would pass some information along.</p><p>Currently, the RT on is a 3.6 with a set of overlays which were written to work-around problems or missing features in 3.6. These have not yet been tested on version 3.8.1, and it is quite likely that many of the new 3.8 features will render some of the old overlays obsolete (possibly even breaking them.) That is, has some custom hacks which probably can (and should) now be "unhacked" so that we don't get additional drift with future versions.</p><p>So, who needs to do this? Well, how awesome of <em>you</em> to volunteer! If you think you have what it takes, take a look at the repository and specifically <a href="">this setup script</a> to get an idea of what you'll need to setup a local copy and test it. The <code>pull-live</code> script has some hard-coded bits assuming an 'rtcpan' user and is going to try to <code>sudo make install</code> several distros from the bestpractical svn, so you'll probably want to either hack it to fit your machine's environment or simply read through it to copy the svn urls it uses to perform the setup yourself. The bit about <code>sudo make upgrade</code> is also suspect because you likely don't have one setup yet.</p><p>With any luck, this is making sense to you (or at least, you're now looking forward to reading the RT documentation.)</p><p>Once you get it running and working correctly, I would guess that your mission is then to switch the tag to rt/3.8/trunk and see where the magic smoke comes out. Problems at this stage would likely be answered in the #rt channel on Patches would also be warmly greeted there. Ultimately, a member of the awesome BPS crew will be in charge of flipping the big switch on the live server and your updates to the code will then be subjected to the wrath of 7k+ authors debugging almost 17k distributions (not to mention millions of users).</p><p>Ok, we've now exceeded my depth of RT knowledge and I'm out of time for further exploration. Hopefully someone with more tuits can use this information to help bring us the latest and greatest of RT for</p> Eric Wilhelm 2009-01-17T02:20:19+00:00 journal Summer of Code 2009 <p>Jonathan Leto has volunteered to spearhead the GSoC effort on behalf of the Perl community for 2009. Thank you, Jonathan.</p><p>For those who were involved (or just watching closely) in 2008, you may recall that we had a wonderful group of 40+ mentors volunteer and, sadly, not enough students to keep them all occupied.</p><p>Jonathan has <a href="">A Proposal</a> to change that, but will need help from <em>your</em> Perl Mongers group.</p><p>If we indeed have 340 active<nobr> <wbr></nobr>.pm groups, now would be a great time for some of them to demonstrate some activity.</p> Eric Wilhelm 2009-01-16T01:30:21+00:00 journal Module::Build maintenance <p>Today I'm going to try again to do some work on Module::Build. I have one straightforward patch to apply, one very non-straightforward patch to consider, and in the nearly 3 months since the last release there are 15 new bugs in RT.</p><p>Given that I can manage to fix one or two bugs per session and only get about one session of hacking on this per month, I can see that this is going to go permanently pear-shaped if I'm alone.</p> Eric Wilhelm 2008-12-11T19:17:53+00:00 journal adds warn() to rakudo <p>Our <a href="">December Meeting</a> was a rakudo workshop, where we realized that rakudo had no implementation of warn(). While the implementation that got checked-in by the end of the meeting is not fully compliant with the spec's requirement that warn() throws a certain sort of resumable exception, it does now at least exist, and prints your message on stderr.</p><p>Update: read more in <a href="">Jonathan's blog</a>.</p> Eric Wilhelm 2008-12-11T09:08:45+00:00 journal What can Parrot do for Me? <p>In reply to <a href="">chromatic's ponderance</a>:</p><p><div class="quote"><p>Sometimes I wonder what would happen if we gave Perl 6 the slogan "Yes we can!"...</p></div><p>"Yes we can" only sticks if you provide tools for people to use to motivate more people. If someone tries it and finds that indeed they can make a difference (which they enjoyed making), they will tell others about it.</p><p>In my experiences trying to make a difference, I've been bogged-down with historical accident and disorganized information. My threshold is (I think) rather high for absorbing abstract complexity six layers removed from anything which serves my current goal. But once I lose more than a few hours without any feeling of achievement, I have to stop and think whether or not I'll get anything of use from these efforts within the acceptable future. Perhaps I'm lacking in altruism, but I'm going to seek solace in the fact that I'm still alive and selfishly convince me that I have "enough" altruism. Ultimately, you have to somehow provide a sense of satisfaction in the near term to keep people motivated.</p><p>So, is "you can make a difference" a convincing and sufficiently motivating message in the context of something which is perhaps just as overwhelming as massive political change (but likely not so universally appreciated), where the consequences of non-participation are not so immediately evident? After all, everyone in the US is subject to the government's policies and the consequences of its knee-jerk reactionary actions, with the only (and difficult) alternative being to defect. Whereas with parrot and Perl 6, the vast majority of programmers have no current investments or residency. Even existing Perl users need not defect to exercise control over their programming environment (unfortunately, many of them do -- but "the CPAN has fallen behind" is another subject.) So, perhaps the rally-cry of "you can make your hell less hellish" which created such unprecedented attention and turnout in our recent political adventure has less power in terms of the short-sighted, time-pressured world of technological change. And, do you really want to pursue the same course as a political campaign, where change is measured in decades? After 8 years in?</p><p>But I do think there are lessons to be learned. Particularly, the <em>capital of enthusiasm</em>. The lesson which Obama's campaign showed us is that you have to manage that capital in a way which builds the enthusiasm. Except, that was a relatively easy game compared to parrot. How can I connect with an enthusiastic group in my community and spend some relatively small amount of time to gather more enthusiastic supporters? Having gathered these supporters, what does parrot propose to do with them? Where a meaningful contribution or commitment in a political campaign might be as small as 5 votes or dollars, what constitutes a meaningful contribution to parrot? There are indeed places where dollars can be put to good use handling complex tasks where more developers would hinder the effort. But why invest dollars where you have no current stake toward a quite distant goal? So, how do you use non-monetary resources to build and maintain the enthusiasm to push parrot, and ultimately Perl 6 out the door?</p><p>It seems like open source projects have typically relied on "results, today" as a means of gathering user momentum and the ability to have meaningful improvements tomorrow (literally) as a means of converting users into developers. So, what is the compelling case for someone to become a parrot user today? This seems to be missing for me, given my recent experiences with rakudo. But the definition of "user" into which I can be fit is probably limited for this stage of parrot's maturity in that I really need to have suitable performance and compelling usability at a rather high level to get something from being a "user". If there are problems with garbage collection, threads, or anything sufficiently low-level to instill a sense of dread, anyone using one of the many currently available HLL interpreters is not going to be a good candidate for becoming a parrot user today. From what I've seen, becoming a Perl 6 user is also still quite distant, though parrot still seems to be the most direct path to that (but not yet a short one by any means.)</p><p>So, assuming that we can find a different definition of "user" than me, what is parrot <em>right now</em>, and what constitutes a possible user base for it? I would have to guess that CS researchers would be the most likely candidates. But this is not my field of study so I'll trust that those with more in-depth knowledge of parrot might be able to make more educated guesses about where to find users. The point is simply that you need to find a sufficient source of people who would be able to say "I used parrot to $thing and it is awesome." I suspect that $thing will not be of immediate interest to many current Perl users, but the number of people and the fields from which they come to parrot will grow as parrot becomes more capable at higher and higher levels.</p><p>With this in mind, what does parrot need to do to acquire and maintain user enthusiasm? Then, how do you convert the next group of new users into ambassadors and developers? This would seem to require an astute organizer with a high tolerance for organizational complexity and a large amount of patience. It also implies a trip to academia and some extensive effort to put parrot in front of the right audiences there.</p><p>So, while there is probably a lot that I can do for parrot, what can parrot do for me? As far as I can tell, currently: "not much", but I would love for someone to demonstrate otherwise.</p> Eric Wilhelm 2008-11-15T19:33:29+00:00 journal OpenGL <p>Working on <a href="">VectorSection</a> again, I thought I would take another look at the Wx::GLCanvas and doing a little something with polygons.</p><p>From the Wx::GLCanvas demo:</p><p><code><br>sub cube {<br> &nbsp; &nbsp; &nbsp; &nbsp; my( @v ) = ( [ 1, 1, 1 ], [ -1, 1, 1 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ -1, -1, 1 ], [ 1, -1, 1 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 1, 1, -1 ], [ -1, 1, -1 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ -1, -1, -1 ], [ 1, -1, -1 ] );<br> &nbsp; &nbsp; &nbsp; &nbsp; my( @c ) = ( [ 1, 1, 0 ], [ 1, 0, 1 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 0, 1, 1 ], [ 1, 1, 1 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 0, 0, 1 ], [ 0, 1, 0 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 1, 0, 1 ], [ 1, 1, 0 ] );<br> &nbsp; &nbsp; &nbsp; &nbsp; my( @s ) = ( [ 0, 1, 2, 3 ], [ 4, 5, 6, 7 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 0, 1, 5, 4 ], [ 2, 3, 7, 6 ],<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ 1, 2, 6, 5 ], [ 0, 3, 7, 4 ] );</code></p><p><code> &nbsp; &nbsp; &nbsp; &nbsp; for my $i ( 0<nobr> <wbr></nobr>.. 5 ) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my $s = $s[$i];<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; glBegin(GL_QUADS);<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foreach my $j ( @$s ) {<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; glColor3f( @{$c[$j]} );<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; glVertex3f( @{$v[$j]} );<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; glEnd();<br> &nbsp; &nbsp; &nbsp; &nbsp; }<br>}<br></code></p><p>I sense an abstraction layer in my future, but undoubtedly it is going to be at the other end of some very sloggy slogging.</p> Eric Wilhelm 2008-10-18T21:48:42+00:00 journal maybe it's the margins <p>I've always hated web applications, to the point that I'll refuse to edit a wiki and various other things which basically make me completely disfunctional in this age of web 1.999999.</p><p>It just occurred to me that maybe the problem is the margins. I'm currently typing this in a 400x200 pixel box within a 1000x600 pixel window, which means that almost my entire screen is currently <em>margin</em>, vs when I use a desktop app and my 800x600 window has at least 780x550 usable area. I'm also looking at two scrollbars right now. This might explain why I don't blog so often.</p><p>But I had this realization while <em>reading</em> a web page, where again my view of the world is almost completely overwhelmed by margins! (And then there's the pdf, where the margins just serve as a painful reminder about how the margins cannot be written in.)</p><p>You will all now please write "I will not fill the world with useless margins" longhand in your margins until they are full. I suppose that means writing it on paper, scanning it, and uploading it (no image tiling allowed -- that's like using the thing with the 5 chalks.)</p> Eric Wilhelm 2008-10-14T01:11:25+00:00 journal running rakudo in the rain <p><a href="">This month at</a> we'll be sitting down as a group with parrot on our laptops and <a href="">Jerry Gay</a> to explore Perl 6 and kick the tires on rakudo. From my experiences running rakudo thus far, it has at least reached the point of "more interesting than frustrating".</p><p>I'm hoping that this session will demonstrate that Perl 6 is becoming very real and give the attendees an excuse to learn more about the language and explore what it will be able to do for them. It should be interesting to see what different people bring to it, their expectations, and the learning curve.</p> Eric Wilhelm 2008-10-02T08:09:37+00:00 journal Ship like a Pirate Day <p>Avast, me hearties! The 0.2808_05 Module::Build be sailin' through the night tward the CPAN.</p><p><a href="">This be the last alpha</a> (we thinks -- if she'll keep to) afore we weigh anchor, run up the jolly 0.3, and hoist the mainsail.</p><p>A noggin o rum for Schwern, Ken, Slaven, Curtis, David, David, and David.</p> Eric Wilhelm 2008-09-19T08:55:35+00:00 journal Module::Build release wedged on 5.6.2 <p>I seem to be the guy who everyone is waiting on for a (finally) Module::Build release, which will allow the rest of the world access to all of the fine features which have already shipped in the Module::Build in perl 5.10.0, as well as the new TAP::Harness support and various nifty bugfixes which would make installing Perl modules a great deal less painful. After a couple of alpha releases, I realized that the only feature I've tried to add in the last 1.5 years needed to be reverted because the existing documentation had never been fully tested (so when I added my code and a test for my code, everything passed!) and the code involved had too many implicit behaviors which won't yield to anything resembling light refactoring.</p><p>And that used up what remaining enthusiasm I had.</p><p>Meanwhile, to look at the <a href="">cpantesters results</a> for most of my distributions, I still need to build a bot to filter out all of the testers who are running an old or misconfigured toolchain which either invents a Makefile.PL or prefers the Makefile.PL over Build.PL -- your basic rock and a hard place.</p><p>And that has left me with little in reserve.</p><p>But I'm sort of getting over all of that by playing with rakudo, which gives me a shred of confidence that progress actually can be made and that software does not need to be forever locked in the death grip of compatibility.</p><p>So, I figured I would give maintaining Module::Build another chance, and I shipped another alpha build and looked at some test reports and noticed that Perl 5.6.2 has been failing because of a new test which probably only points out a breakage which was already there in t/ext.t (and some other issue in t/xs.t that I haven't had a will to chase.)</p><p>And the thing is: I don't care about 5.6.2.</p><p>Perl 5.6.2 was already outdated when I started using Perl in 2002, and while I can certainly build one (and already did long ago) on my newer machine, I have absolutely zero interest in supporting it or debugging for it simply for the sake of compatibility. I want progress.</p><p>But due to the nature of the CPAN, I cannot release a new Module::Build without breaking every upgrades and installations for every Module::Build based distribution (over 2000 of them) on 5.6.2.</p><p>So, is anybody actively using 5.6.2? If so, how do you propose we solve this?</p><p>It's not like this is a big bug or something I can't figure out, I just do not have any incentive to deal with 5.6.2 because I would have to be a masochist to put extra effort toward enabling behavior which I would prefer to discourage. If somebody wants to sort out the problem and send a patch, I'll happily apply it and ship it.</p><p>In my opinion, the problem runs deeper than just this release and somebody needs to actively keep on top of this sort of thing or I'll constantly be sitting here holding the release axe and muttering "grumble<nobr> <wbr></nobr>... 5.6.2<nobr> <wbr></nobr>... what have you done for me lately".</p><p>As far as I can tell, 5.6.2 users are phantoms, yet anything touching the toolchain has to tiptoe around them ever so carefully? We could, of course, "just fix the CPAN", but this too would primarily benefit users who don't upgrade their software. So, if nobody is motivated enough to do the work or pay to have it done, the easy answer is to not do it.</p><p>Maintaining Module::Build for multiple platforms is difficult enough (especially with e.g. nobody testing svn on Win32), but I can at least pretend to care about other platforms (mostly because M::B gets patches for them.)</p> Eric Wilhelm 2008-09-14T20:45:35+00:00 journal Math::GSL at <p><a href="">Jonathan Leto</a> spoke at tonight about what Math::GSL (a result of <a href="">Thierry's project</a> in this year's <a href="">Summer of Code</a>) can do. There is a <a href="">podcast</a> and maybe some slides to go with it <a href="">real soon now</a>.</p> Eric Wilhelm 2008-09-11T08:47:04+00:00 journal "actual users", build tools, package managers, cpantesters <p>I just released a new version of <a href="">Linux::USBKeyboard</a>, now with Devel::CheckLib (but I have to say I'm a little sad about adding 10k to my dist (4.6k of which is pod) to check whether a linux user has a compiler and libusb (though I'll admit that the inc::InlineBuild code is suboptimal too (because who has time to write better build tools?).))</p><p>So, am I the only module author who thinks that the automated testing procedures have gotten somewhat removed from actual users' computers? Or possibly actual users' computers have gotten really stale.</p><p>In this particular case, the installer should really just figure out what represents the libusb-dev package on the current distro and try to install that. But wait, the user shouldn't be root, so we have to hope they can sudo aptitude, etc, etc. While we're at it, we might as well roll a package and install that because perhaps they'll want to uninstall it without breaking any dependencies, etc, etc.</p><p>But who has time to write build tools?</p><p>What do Perl users want from their CPAN modules? I frequently hear complaints about CPAN being hard to use, yet we call CPAN our killer app. Perhaps the new crop of building-from-source RedHat users will have more to say about that.</p><p>But, really. Who has time to write build tools? It seems to me that we've hit an uncanny valley where the tools are getting stale and vendor support is getting behind, but not so much that existing users can't muddle through. I suspect this might mean that new users are giving up, particularly when it comes to using new code. But, the "good enough" means that nothing hurts enough for anyone to invest in making it better.</p> Eric Wilhelm 2008-08-30T07:22:22+00:00 journal Summer of Code Recap <p>Google's Summer of Code 2008 is wrapping up now and I'm very pleased with how well The Perl Foundation's students and mentors have done. The five projects which survived the halfway point have all finished with great results.</p><p>Many thanks to all of the mentors and students as well as everyone in the community who helped or supported the process. Also, thanks to Google for putting on the program and to Richard Dice and Jim Brandt at TPF.</p><p>But the end is only the beginning. We should really get started on next year now. Perl needs to do a better job of attracting students, but I'll have to address these issues in another post.</p><p>Most of the students did a great job of blogging their progress, which I think is an important part of Summer of Code for the rest of the community. If you have been following along with any of the student projects, please drop me a note or leave a comment. I would love to hear more opinions from outside of the active SoC participants. Also, please <em>thank</em> the mentors and students for their work. Of course, they "know" you appreciate their effort -- but it really means something if you actually send them an e-mail or say thanks on irc.</p><p>For those just joining us, here is a run-down of the SoC projects and some links.</p><p><b>Flesh out the Perl 6 Test Suite</b><br> &nbsp; &nbsp; student: <b>Adrian Kreher</b><br> &nbsp; &nbsp; mentor: <em>Moritz Lenz</em><br> &nbsp; &nbsp; <a href="">Blog</a> | <a href="">Code</a> | <a href="">Moritz's Recap</a></p><p><b>wxCPANPLUS</b><br> &nbsp; &nbsp; student: <b>Samuel Tyler</b><br> &nbsp; &nbsp; mentors: <em>Herbert Breunung</em> and <em>Jos Boumans</em><br> &nbsp; &nbsp; <a href="">Blog</a> | <a href="">Code</a> | <a href="">CPAN distribution</a></p><p><b>Native Call Interface Signatures and Stubs Generation for Parrot</b><br> &nbsp; &nbsp; student: <b>Kevin Tew</b><br> &nbsp; &nbsp; mentor: <em>Jerry Gay</em><br> &nbsp; &nbsp; <a href="">Mail</a> | <a href="">Code</a> | <a href="">(older branch)</a></p><p><b>Incremental Tricolor Garbage Collector</b><br> &nbsp; &nbsp; student: <b>Andrew Whitworth</b><br> &nbsp; &nbsp; mentor: <em>chromatic</em><br> &nbsp; &nbsp; <a href="">Blog</a> | <a href="">Code</a></p><p><b>Math::GSL</b><br> &nbsp; &nbsp; student: <b>Thierry Moisan</b><br> &nbsp; &nbsp; mentor: <em>Jonathan Leto</em><br> &nbsp; &nbsp; <a href="">Blog</a> | <a href="">Code</a> | <a href="">CPAN distribution</a> | <a href="">Jonathan's Recap</a></p><p><em>Update:</em> Adding more links as they appear.</p><p><a href="">Steffen's Recap</a> -- thanks Steffen for all of the help answering student questions on IRC, planning, and keeping track of mentors.</p> Eric Wilhelm 2008-08-29T00:57:19+00:00 perlfoundation what you don't say <blockquote><div><p>"You don't have to explain what you don't say."<br> &nbsp; &nbsp; --Sam Rayburn</p></div></blockquote><p>That seems like possibly the most useful programming advice I've ever gotten from a politician.</p><p>But of course now that I've said that, I'll have to explain it. This might be part of the reason that I haven't taken the time to blog anything since last month. After the whirlwind week around OSCON, I've had quite a few thoughts about software (triggered as much by the hallway track as by the sessions and tutorials), but haven't really had time to write most of them down. Perhaps I should switch gears into poetry.</p><p>In short: I'm getting back to work deleting code, so that quote seemed pertinent. But of course I should not have to say it, except for that thing about forgotten history being repeated. Perhaps today's readers will avoid being the writers of tomorrow's redundancies.</p><p>I suppose it could still use a bit of clarification given that software is supposed to <em>do</em> something, which makes it much more like machinery than oration (sorry r0ml, now we're going to have to dust-off the patent debate or else find some way to prove the uselessness of open source watchmaking.) Thus, what you "say" in software tends to turn into moving parts -- these might be cheaper to create and easier to change than physical moving parts, but the maintenance cost of moving to non-moving parts is probably proportional enough (surely I haven't invented this metaphor of the machine (so there's that history thing again: we've been talking about objects being dogs and ponies for so long that we've forgotten all about gears and shafting?))</p><p>We'll have to revisit this metaphor later to explore ideas like why architects don't design machinery, how engineers are responsible for making sure things actually work, what skilled craftspeople have to do with the quality of execution, and when unskilled labor tends to muck up the entire works (wherein I will have to find some way to elevate the discussion above these "rude mechanicals" lest we lose the notion of software as a liberal art.) For now, I'll just try to end with a quote about not needing to test, debug, comment, and document code you didn't write.</p><blockquote><div><p>"You don't have to oil the parts that don't move.</p></div></blockquote> Eric Wilhelm 2008-08-04T00:42:10+00:00 journal The most important code comment... <p># this code exists because<nobr> <wbr></nobr>...</p><p>I'm seeing code which only exists because the problem was misunderstood or maybe unclear at the outset. But, determining that this is why it exists in the current form (or at all) requires me to read all of it, decipher some convoluted conditionals (some of which are redundant), and speculate about whether some questionable parts are bugs or happy accidents which are required to function properly.</p><p>Namely, this module (which will forever remain nameless because it no longer exists) where the best fix was file deletion. It didn't even have a synopsis. It was a brute-force solution the wrong problem, with a few solutions in the middle to problems which would not exist if the code didn't exist.</p><p>Of course, all of our code problems go away if we have no code. That much should be obvious to even the most inept. But we have a non-code problem to be solved with code -- that's where we usually start. I like to use the Feynman method:</p><p> &nbsp; &nbsp; 1. Write down the problem.<br> &nbsp; &nbsp; 2. Think very hard.<br> &nbsp; &nbsp; 3. Write down the solution.</p><p>Step #1 is "the most important comment". Step #3 is the code. I'll never be privy to what happened in your head during step #2, but if I can see the comment and the code, I can see whether your code solves the problem. If you solved the wrong problem, I can probably save a lot of time reading the code.</p> Eric Wilhelm 2008-07-01T09:08:11+00:00 journal t-shirts <p>If you're going to be at OSCON and think you'll have room in your luggage on the way back, you might be interested in one of our <a href="">zany t-shirts</a> for only $20. We'll hopefully have some available in the TPF booth, but we're trying to print a fairly ambitious quantity (by standards), so pre-orders placed before Monday would be really helpful (and you get to pick the color.) There is also a women's cut available.</p><p>And even if you're not going to OSCON, I can ship it.</p><p>All proceeds go toward the future making of funny shirts for the Portland Perl Mongers.</p> Eric Wilhelm 2008-06-29T05:27:48+00:00 journal List::oo first() fix -- and nobody noticed? <p>I just discovered that L(qw(foo bar baz))-&gt;first(sub {1}) would segfault (in fact, any call to the first() method would segfault) because the code which passes the arguments through to List::Util::first() had been generated with the wrong prototype.</p><p>So, List::oo apparently needs better test coverage. But, it also apparently has only one user, so...</p><p>Ah well, I shipped a new version anyway.</p><p>I know there's a general dislike of phone-homing, but it would be nice to have some inkling of how many people *might* be using which of my modules (breaking something is always a good way to take a rough census, but even then you're only going to hear from the people who were using the feature <em>and</em> noticed the breakage <em>and</em> bothered to report it.) I think what is needed here is some combination between social and technological hacks -- preserving anonymity and achieving just the right level of bug-me-ness. I've often thought that such an approach would also be useful in getting more input to cpan ratings.</p> Eric Wilhelm 2008-06-07T20:25:46+00:00 modules Planet Perl Summer of Code <p>Summer of Code Day 2...</p><p>We have almost all of the students blogging already, and a <a href="">Plagger setup</a> to aggregate it all in one place.</p><p>Stay tuned for a whole summer full of code...</p> Eric Wilhelm 2008-05-28T06:47:34+00:00 journal