rjray's Journal http://use.perl.org/~rjray/journal/ rjray'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:09:54+00:00 pudge pudge@perl.org Technology hourly 1 1970-01-01T00:00+00:00 rjray's Journal http://use.perl.org/images/topics/useperl.gif http://use.perl.org/~rjray/journal/ The Secret of My Success http://use.perl.org/~rjray/journal/35544?from=rss <p> <tt> <a href="http://jobs.perl.org/">jobs.perl.org</a> </tt> has been very good to me over the years. Two of my last three permanent positions (this one happened to come from a headhunter approaching me via <a href="http://www.linkedin.com/profile?viewProfile=&amp;key=17232668">LinkedIn</a>) came from there. In addition, I've gotten three short-term contracts as well. And I've always assumed it was because I was eminently qualified for the positions I aimed for. Now, I know otherwise.</p><p>My company is looking for another Perl programmer, one with strong MySQL as well. The CEO asked me to call upon my vast connections in the Perl community (*snerk*) to see if I could bring in a better calibre of candidate than what we had been getting from headhunters (present company excluded, I suppose). So my first impulse was to <a href="http://jobs.perl.org/job/7778">post the position</a> to <tt>j.p.o</tt>. Heck, I even convinced the CEO to whip out a credit card and pay for front-page placement.</p><p>I've gotten three replies. One was from a recruiter wanting to send us a resume in exchange for a promise of a fee if we hired the person. One was from a person living in India who clearly missed the "on-site" part of the listing. But the one who really amazed was the person who replied "saw your job posting on craigslist" (no, you didn't), didn't provide a resume (even after I asked for it in three separate email messages), asked what the projected total hours were (missing the "full-time" part of the ad) and whether he could telecommute (at least the fellow from India only overlooked this one detail, and had provided a resume). It now looks as though my luck with the jobs site can be boiled down to the simple fact that I can read and follow instructions.</p><p>Perhaps this is just a corollary of what I warned the CEO initially: all the Perl programmers I know who are <i>good</i>, already have jobs. They are rarely unemployed for any period longer than they choose to be. And unfortunately for me, none are (currently) looking for work.</p> rjray 2008-01-31T22:18:34+00:00 journal Twitter-pated http://use.perl.org/~rjray/journal/34518?from=rss <p>I have a (reasonably stable) Twitter-bot up and running. Like the existing "cpan" Twitter, it spools CPAN uploads to Twitter from the RDF that <a href="http://www.cpan.org/">www.cpan.org</a> publishes. Unlike "<a href="http://twitter.com/cpan">cpan</a>" (which was apparently shut-off a little over a month ago anyway), it provides links: The released package itself is linked, and behind the scenes the <tt>MANIFEST</tt> file is scanned for something matching<nobr> <wbr></nobr><tt>/(changes|changelog|changelist)\b/i</tt> and if found is also linked. If no change-file is found, <tt>README</tt> is linked to instead (unless there's no README, in which case you just get the one link instead of two).</p><p>The bot polls the <a href="http://search.cpan.org/uploads.rdf">RDF URL</a> every 15min or so, using an If-Modified-Since header. Any new CPAN uploads are queued up for posting to Twitter, spaced out evenly over the 15min waiting period (i.e., if there are two new CPAN uploads then tweet fires immediately and the second waits roughly 7.5 minutes to fire... fifteen new uploads would fire at roughly one-minute intervals) so that it doesn't suddenly spam your Twitter client.</p><p>This is still largely alpha, though the code itself is reasonably clean (one must love being borderline-OCD). I want to add better local logging, reading of direct messages to interpret them as commands, stats tracking, etc. to it yet. Also, I plan to abstract the overall architecture moreso than it currently is, and CPAN that as a Twitterbot sort of class/mini-framework. For that matter, the structure of the message that gets sent as a tweet is itself vulnerable to change yet, as I'm not 100% happy with it (but as far as I know, I can't use HTML for formatting, so I can't (for example) link the module name to the CPAN page, I can only send the URL in the message body and rely on clients like IM or Twitterific to hot-link the text).</p><p>For now, though, you can get your CPAN addiction fed via Twitter at:</p><blockquote><div><p> <a href="http://twitter.com/cpan_linked">http://twitter.com/cpan_linked</a></p></div> </blockquote><p>(I'm also thinking about changing the name to "cpan_with_links". Alternately, if the current owner of the "cpan" Twitter account wants to talk, feel free to e-mail me.)</p> rjray 2007-09-21T22:46:10+00:00 journal The Potential Ending of a Long Relationship http://use.perl.org/~rjray/journal/32850?from=rss <p>It may be over, this, one of my longest relationships. For nearly 20 years we've been faithful partners, ever since I was first introduced my sophomore year of college. No, I don't mean Perl, because this pre-dates my love of even Perl by several years. No, I fear my relationship with (X)Emacs may be coming to an end.</p><p>It was so wonderful at first, that rush of New Relationship Energy. I was introduced to emacs by a few older CS students I'd befriended, one of whom had left MIT to return to Oklahoma because the student loans were starting to scare him. OU didn't teach Lisp (or Scheme), so he channeled his fondness for these into emacs and emacs evangelism. I was teased mercilessly for my simplistic use of vi, and repeatedly tempted by emacs' many and varied features. Programmability not the least of them. Mind you, we didn't have <a href="http://www.vim.org/">vim</a> then. Heck, <a href="http://elvis.the-little-red-haired-girl.org/">elvis</a> hadn't even <i>entered</i> the building, let alone had time leave. So I was lured in by the promise of excitement and exploration emacs offered.</p><p>For years, I've faithfully used emacs, then XEmacs. I've watched my customizations grow from one meager e-lisp file to a set of six files (not counting the master <tt>~/.xemacs/init.el</tt> file and the generated files like <tt>~/.xemacs/custom.el</tt>). Plus literally dozens of other files I've collected, some of which eventually ended up in the core distribution (like <tt>cperl-mode</tt>). Possibly my favorite of the small and subtle additions would have to be the bindings for &lt;Home&gt; and &lt;End&gt;:</p><blockquote><div><p> <tt>(defun home ()<br>&nbsp; "Home - begin of line, once more - screen, once more - buffer."<br>&nbsp; (interactive nil)<br>&nbsp; (cond<br>&nbsp; &nbsp; ((and (eq last-command 'home) (eq last-last-command 'home))<br>&nbsp; &nbsp; &nbsp;(goto-char (point-min)))<br>&nbsp; &nbsp; ((eq last-command 'home)<br>&nbsp; &nbsp; &nbsp;(move-to-window-line 0))<br>&nbsp; &nbsp; (t (beginning-of-line)))<br>&nbsp; (setq last-last-command last-command)<br>)<br> <br>(defun end ()<br>&nbsp; "End - end of line, once more - screen, once more - buffer."<br>&nbsp; (interactive nil)<br>&nbsp; (cond<br>&nbsp; &nbsp; ((and (eq last-command 'end) (eq last-last-command 'end))<br>&nbsp; &nbsp; &nbsp;(goto-char (point-max))<br>&nbsp; &nbsp; )<br>&nbsp; &nbsp; ((eq last-command 'end)<br>&nbsp; &nbsp; &nbsp;(move-to-window-line -1)<br>&nbsp; &nbsp; &nbsp;(end-of-line)<br>&nbsp; &nbsp; )<br>&nbsp; &nbsp; (t<br>&nbsp; &nbsp; &nbsp;(end-of-line)<br>&nbsp; &nbsp; )<br>&nbsp; )<br>&nbsp; (setq last-last-command last-command)<br>)</tt></p></div> </blockquote><p>They aren't mine, but I happily added them. With these, &lt;Home&gt; will go to the start of a line on the first press, to the top left corner of the buffer on the second, and to the very start of the file on the third. <i>Very</i> handy, much less RSI-worthy than <tt>ESC-&lt;</tt>. And &lt;End&gt; does the same thing, only going end-of-line, bottom-right-corner, end-of-buffer. The thing is, I have literally dozens of these, if not into the hundreds, that I've accumulated over the past 20 years. Some I've written, most I've gotten from newsgroups and the like, as people shared their favorite little hacks.</p><p>But I've grown, matured, and XEmacs has been slow to keep up with the world around us. Even with the MULE package installed, I have a headache trying to type in Cyrillic in a buffer. And when I save it, it usually mangles it. I try to set the encoding for the buffer, but while it has nearly 100 encodings to offer me, none of them are UTF-8. The GUI is clumsy, even in XEmacs which forked from emacs <i>specifically</i> to address GUI issues that the emacs base was not interested in dealing with. Handling of fonts is just plain retarded, refusing to set a face to certain size values even when I know that the font itself is TrueType, and is coming from the Xorg font server as available in pretty much any size you ask for. Even the GTK+ port fails me... it's in worse shape than the older one. It's linked directly to the GTK+ environment (and thus their improved font handling), and the interface is <i>still</i> retarded, especially in the handling of fonts.</p><p>Granted, for such a sizeable application XEmacs' memory footprint is pretty small. But when I look at the other tools available to me-- <a href="http://www.jedit.org/">jEdit</a>, <a href="http://www.eclipse.org/">Eclipse</a>-- it just can't keep up. Mixed-mode editing? Only as a clumsy hack. Integration with your desktop? Not even remotely. Sure, Eclipse is a bloated, monolithic IDE, but I can easily switch to something lighter-weight and have the same basic key-bindings when I have smaller tasks.</p><p>Though it pains me to turn my back on 20 years of friendship, I just don't know how much more time I can waste trying to work around these things. The cases where I have to go to an alternative editor just because XEmacs can't handle the file in question grow almost daily. I think it may be time to put XEmacs on the shelf, alongside the class ring, fraternity jersey and other relics of my college days.</p> rjray 2007-03-30T22:05:19+00:00 journal This Will Be The Next Book I Buy http://use.perl.org/~rjray/journal/32649?from=rss <p>But don't we <i>always</i> need more books?</p><p>Either way, I'm getting <a href="http://www.amazon.com/gp/product/0596510047?ie=UTF8&amp;tag=rjrayorg-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596510047">this noble tome</a> as soon as I can. One thing I take some degree of pride in, is the readability and cleanliness of my code. Being mildly OCD probably has helped over the years, but I'm positive I can learn something from this book.</p><p>More on the title, with a chapter listing, <a href="http://pyre.third-bit.com/blog/archives/863.html">here</a>.</p> rjray 2007-03-11T20:11:28+00:00 journal My First Catalyst Bits http://use.perl.org/~rjray/journal/31446?from=rss <p>I've put up the second release of my first foray into writing add-ons for Catalyst: <a href="http://search.cpan.org/search?dist=Catalyst-Model-ISBNDB">Catalyst::Model::ISBNDB</a>. It uses my <a href="http://search.cpan.org/search?dist=WebService-ISBNDB">WebService::ISBNDB</a> (now at version 0.31) module to provide access to the <a href="http://isbndb.com/">isbndb.com</a> web service as a Catalyst model.</p><p>This release adds a component to work with <tt>Catalyst::Helper</tt>, so that one can use the <tt>*_create.pl</tt> script that <tt>catalyst.pl</tt> generates for you, to auto-create a model component for your app that derives from <tt>Catalyst::Model::ISBNDB</tt>. Since the version number on the main class didn't change, this change won't appear in CPAN for anyone who'd actually installed <tt>C::M::I</tt>.</p> rjray 2006-10-30T09:04:02+00:00 journal Tie-Magic and Inside-Out Objects http://use.perl.org/~rjray/journal/31133?from=rss <p>Anyone rolled these two together? Experiences, positive or otherwise?</p><p>For my <a href="http://search.cpan.org/~rjray/WebService-ISBNDB/"> <tt>WebService::ISBNDB</tt> </a> package, I'm working on implementing a HOP-style iterator to return when the user does a search. Some searches, especially when vague, could return well into the hundreds (if not thousands) of matches. Add to that the fact that the service only returns data in pages of 10, and an iterator that hides all this hassle from the user makes sense.</p><p>What <i>also</i> makes sense, though, is expecting something like that sort of search to return an array, or at least an array reference; one that can be manipulated with <tt>pop</tt>, <tt>shift</tt>, etc. Even <tt>push</tt> and <tt>unshift</tt>, though in this case I would imagine one might not want to allow adding to such an array (you can always copy what you want to a separate array and add in whatever else you need).</p><p>Enter tied arrays. The <tt>TIEARRAY</tt> method doesn't have to return an array reference. Even the <a href="http://perldoc.perl.org/perltie.html"> <tt>perltie</tt> </a> man-page uses a hash-reference for the examples under "Tying Arrays".</p><p>Enter, from the other side of the stage, that new darling of the Perl OO community, the inside-out object. Which I've enjoyed working with in this very project. So why not try getting some of that peanut butter in my chocolate? Obviously <tt>TIEARRAY</tt> can return an IOO. And when you call <tt>tie</tt>, it has an actual return value, the referent that <tt>TIEARRAY</tt> returns (or <tt>TIESCALAR</tt>, <tt>TIEHASH</tt>, etc. as apropos). You could (conceivably) then choose to use the core object with methods like <tt>next</tt>, <tt>first</tt> or <tt>all</tt>. Or you could use the tied array, with the usual array-related operations.</p><p>Of course, there would be issues whether or not you wanted the "array" to be mutable via slicing operations, what to do if the user addresses both the iterator and array interfaces, etc. But it gets me to thinking, and that often comes of no good...</p> rjray 2006-09-27T06:33:16+00:00 journal WebService-ISBNDB 0.20 Uploaded to CPAN http://use.perl.org/~rjray/journal/31112?from=rss <p>I've just uploaded the second "real" release of WebService-ISBNDB, version 0.20, to CPAN. I don't have the auto-post-to-use.perl.org thing working that I used to, because I don't use fetchmail anymore (I leave stuff on my IMAP store or save it to a Thunderbird folder). That means I never announced the first release, or the two previous releases that were named Net-ISBNDB. I changed the name after Adam Kennedy made a good argument for the <tt>WebService::</tt> prefix.</p><p>This package is an object-oriented layer over the actual published API of <a href="http://isbndb.com/">isbndb.com</a>. It presents all five elements (authors, books, categories, publishers and subjects) as classes. Elements that reference other elements (such as the authors, subjects and publisher of a book) are lazy-loaded when first requested through the accessor methods. You'll have to have an API key from them, which is free once you've registered. The catch is that the key is generally good for 500 requests per day, which most of you probably won't find to be an issue. It <i>did</i> become an issue for me, though, when writing the test suite that this release introduces (the first release had some basic tests, but no actual data tests). I quickly ran up 500 requests in less than two hours the other day. As part of addressing this problem, I checked and found that my suite of tests was making 58 requests per complete run. I had created a key that I was going to use for CPAN build/install runs, but it was clear that the key wouldn't work very well; more than eight people installing in a given 24-hour period would tap it out.</p><p>Solving the problem actually proved the robustness of the base communication class, <tt> <a href="http://search.cpan.org/author/RJRAY/WebService-ISBNDB-0.12/lib/WebService/ISBNDB/Agent.pm">WebService::ISBNDB::Agent</a> </tt> (points to the version from the previous release). I was able to create a dummy adapter, overload just one method, and BAM! it would read the XML from local files in the test-suite directory. Even better, I was able to make a run of the suites that actually read from the service, and save all the requests to files, by having the dummy adapter go ahead and call the super-class method and write the data to the filename it would have otherwise read. I then restored the method to the read-data approach, and my hits on the service dropped from 58 to 0.</p><p>This was also my first foray into using <tt> <a href="http://search.cpan.org/~dconway/Class-Std/">Class::Std</a> </tt>. As someone who worries (too much) about people sub-classing my classes and stepping on my keys, this is an interesting approach. I had some weird issues to work around, though. The framework is meant for you to not have to (ever) write your own <tt>new()</tt>. So if you do, you have the issues. I had assumed that I could just use <tt>Class::Std</tt> as my class' base, and it works, but it doesn't seem to be intended for that purpose, at least not on the surface. And in my case, I wanted to provide some syntactic sugar for object creation (i.e., if you are instantiating an object from a known-to-be unique value, you should be able to do so with minimal typing; something like "<tt>$book = WebService::ISBNDB::API::Books-&gt;new($isbn)</tt>"). To make the sugar work, I had to allow <tt>new()</tt> to take something other than a single hash-ref. And to do that, I had to provide my own. When I did, I got warnings about redefining it, since <tt>Class::Std</tt> generates one when you use it. I'm not sure how I'd recommend getting around this... I suppose <tt>Class::Std</tt> could check that you both have an existing <tt>new()</tt> <b>and</b> have <tt>Class::Std</tt> in your inheritance hierarchy.</p><p>The other issue I had to struggle with is that I'm currently very busy with paying work right now. And every hour I squirreled away for this felt like I was stealing it from "more important" work. The amount of change this release delivers kind of defies the ten days or so since the last release. I <i>could</i> have done all of this in a day (maybe two if it was the weekend and I had other distractions). But I've been sick all of this past week, and I've felt kind of bad each time I worked on this instead of the other. Obviously not <i>too</i> bad, I guess, or I wouldn't be releasing a new version.</p><p>This is also the first NEW module I've come up with in what feels like ages, so I'm pretty happy with myself to have broken out of my rut. Now if you don't mind, I have some more hacking (of the phlegmy-lung-variety) and wheezing to attend to.</p> rjray 2006-09-25T03:42:26+00:00 journal RPC::XML 0.59 Uploaded to CPAN http://use.perl.org/~rjray/journal/30113?from=rss <p>I've just uploaded version 0.59 of RPC::XML to CPAN. It's been over a year since the last release(!) and I've made a number of small changes, many of them to test suites so as to have a little better coverage. Some of those (pod testing and pod-coverage testing) let to fixes in other areas. I have to say that the <a href="http://cpants.perl.org/index.html">CPANTS site</a> has proven very helpful to me, by laying out what problems my distributions have. Where the actual CPAN-testing cadre will let me know if my module has build-level or test problems on platforms, CPANTS shows me what can be improved in the distribution itself.</p><p>Nicely done, guys.</p> rjray 2006-06-30T08:12:56+00:00 journal Clearly I Fail to Grasp Bayesian Anti-Spam Filtering http://use.perl.org/~rjray/journal/28251?from=rss <p>I say this, because I would expect that after flagging 50+ copies of the "Remington Ventures" virus-spam, Thunderbird would finally be catching them on my behalf.</p><p>Maybe the message is long-enough to water down the effectiveness of the tell-tale tokens. But I count three or four tokens that I'm pretty sure only appear in these messages.</p> rjray 2006-01-05T21:51:43+00:00 journal Subversion vs. Scatterbrain-ness http://use.perl.org/~rjray/journal/26829?from=rss <p>I've been very interested in switching to <a href="http://subversion.tigris.org/">Subversion</a> for some time now. More to the point, I've been looking hard at <a href="http://svk.elixus.org/">SVK</a>, especially after recently reading this <a href="http://www.bieberlabs.com/wordpress/archives/2004/11/30/using-svk">three</a>-<a href="http://www.bieberlabs.com/wordpress/archives/2004/12/31/svk-distributed-version-control-part-ii">part</a> <a href="http://www.bieberlabs.com/wordpress/archives/2005/01/08/svk-distributed-version-control-part-iii">article</a>. I remember having a long talk with Dr. Walter Tichy, the creator of RCS, back in 1995 at the International Conference on Software Engineering. I had just presented my first-ever published paper, and he had been in the SCM workshop that it was featured in. What I wanted him to do, that he had thus far opposed, was to allow developers to re-engineer RCS as an embeddable library, like <a href="http://www.zlib.net/">Zlib</a>. I wanted a componentized version-control system that languages like Perl could create bindings for. He wouldn't, though. He was working with a company to make a souped-up RCS that was going to have that feature, and he didn't want a free system competing. Of course, CVS has now long-since given up on wrapping RCS and does everything internally. But better yet, we got Subversion instead of a dressed-up RCS.</p><p>Well, there is one thing that still keeps me from switching. A habit I developed, that I suppose now counts as a bad habit. And I'm pretty heavily-invested in it at this stage. It's a trick I picked up from Tim Bunce in his <tt>DBI</tt> module. I know others use it, too, and I'm hoping that someone has already faced down this spectre, and can offer me some advice.</p><p>I let CVS set the <tt>$VERSION</tt> variables for my CPAN modules.</p><p>I do it with this little snippet, variations of which must surely be all over the open source universe, not just CPAN:</p><p> <tt>$VERSION&nbsp;=&nbsp;do&nbsp;{&nbsp;my&nbsp;@r=(q$Revision:&nbsp;1.35&nbsp;$=~/\d+/g);&nbsp;sprintf&nbsp;"%d."."%02d"x$#r,@r<nobr>&nbsp;<wbr></nobr> };</tt> </p><p>Without that, I have to not only go back and manually set all those <tt>$VERSION</tt>s, I have to also start remembering to adjust them each time I am planning a new commit for a given Perl module. And I'm absent-minded. My CVS histories are littered with <tt>Makefile.PL</tt> check-ins where I forgot bump the package version before starting to build a new CPAN release. And I know that Subversion has keyword expansion similar to CVS. But their handling of versions is vastly different. If I commit three files, each of those three will have the same version number at their "head". If I have the keyward in place (and expansion enabled), those files will all get that number, which is an ordinary integer, not a dotted-pair or -quad. Right now, if I don't change, say, <tt>RPC::XML::Parser</tt> for 4 or 5 releases of my RPC-XML package, it just stays at the version it is. But, if I understand Subversion correctly, when I make a clean check-out of a tag in order to build it for CPAN release, the version keywords would all have the same value. And since SVK is based on Subversion, I'm presuming the same issue is going to be present there, as well.</p><p>So, this is what I need to solve before I can start moving my code to SVK, or really even consider starting new projects with SVK/Subversion at all.</p> rjray 2005-09-22T09:02:17+00:00 journal OSCON: D+4, Say Goodnight, Gracie http://use.perl.org/~rjray/journal/26128?from=rss <p>There are still a few lingering blog entries to write, but the show is now winding down. I'm in the closing session, in which they've announced the winners of the <a href="http://photos.linux.hp.com/">HP-sponsored OSCON Photo Competition</a> and gnat has given recognition to the key O'Reilly staff who've made the conference run so smoothly. He also distributed some left-over swag. Generally by throwing it over the seated crowd.</p><p>The closing talk is Miguel de Icaza, talking about the efforts made at Novell to move ~5500 employees to completely-Linux destops. This involves replacing apps where they can, and writing new ones where they have to. The new apps they develop are all built on the <a href="http://www.go-mono.com/">Mono</a> platform, in C#.</p><p>Desktop issues have come up a lot this year at OSCON. There's some "enterprise" work, applications that go beyond the basic things we (currently) expect from a desktop environment. He's talking about something they call "iFolder", which handles smooth synchronization of file-trees between systems that are only occassionally connected. Now he's talking about "Beagle", a search appliance similar what Google and Yahoo! are doing, using Lucene.NET and other elements.</p><p>He's also touching on how the progress of the desktop has been hampered by the lack of a really-good rendering library, until <a href="http://cairographics.org/">Cairo</a> came along. He's also referring to a new implementation of an X server <i>on top of OpenGL</i>. Not X trying to support GL, X11 <b>in</b> it. Combined with Cairo, there's a potential for amazing stuff. Right now, he's demo'ing it: true transparency in windows, 3-D zooming of the desktop, switching virtual desktops by grabbing the bottom edge and <i>flipping</i> it around. He just started a video player, moved it half-way off the edge, then started a flip: the video was wrapper around the edge of the "cube". OpenGL effects are applied at pretty much al levels; moving windows or icons, etc. GNOME 2.12 will feature some or all of this, it wasn't clear how much would be deployed with that release (slated for October). Really stunning, though admittedly it falls more in the "eye-candy" camp.</p><p>It's been a heck of a week. I still have more thoughts to sift into words, so be sure and check back.</p> rjray 2005-08-05T20:31:09+00:00 journal OSCON: D+3, Apr&eacute;s Presentation http://use.perl.org/~rjray/journal/26103?from=rss <p>The talk is done. Alas, I ran over and had to rush my last 4-5 slides. Part of the problem was that there was a slight 'net hiccup that detached the machine in the presentation room from the share that held all the slides. I lost about 5 minutes while we fixed that. Then, there were more questions at places I hadn't expected; good questions that deserved good answers, so it wouldn't have been fair to dismiss them. Still, what matters the most: one person stopped me on the way out, saying that he had been faced with exactly that sort of problem (justifying a choice of SOAP over REST), and I had given him the words he needed to explain to the people that mattered. No doubt, it really makes you feel good to know that someone actually benefits from your efforts.</p><p>I forget, sometimes, how much I enjoy doing this. It's funny, since I'm not that social of a person. But I do like sharing knowledge as much and as often as I can.</p><p>Should probably start working on next year's proposals sooner, as opposed to later.</p> rjray 2005-08-04T21:54:54+00:00 journal OSCON: D+2, Two Signs, No Portents http://use.perl.org/~rjray/journal/26081?from=rss <p>Some interesting signage around the area:</p><p> <a href="http://www.blackperl.com/oregon.jpg">Ummm, I thought we were already <i>in</i> Oregon...?</a> </p><p> <a href="http://www.blackperl.com/ajax2for1.jpg">If only the books were offered under the same deal...</a> </p><p>Of course, by that last jab I'm referring to <a href="http://en.wikipedia.org/wiki/AJAX">AJAX</a>, which is either the wave of the future or the next technology destined to be referred to derisively as a has-been a few years from now...</p> rjray 2005-08-04T03:30:18+00:00 journal OSCON: D+2, The Beachhead Has Been Established http://use.perl.org/~rjray/journal/26070?from=rss <p>After subsiding on minimal sleep and getting up for early tutorials (and the flight out) for three mornings in a row, this morning the flesh was just too weak. I slept past the opening keynotes and the first round of sessions. As I'm still polishing my slides, I've chosen to avoid the second round, as well, and try to finish the last 6-7 pages.</p><p>When the Allies finally took definitive control of the landing beaches at Normandy, it was safe to start bringing in the logistical personnel and set up permanent communications, supply lines, etc. And so it is on the third day of OSCON. Not to compare the first two days of tutorials to the beach assault, but as of today the numbers well and truly swell. Members of the press arrive and get settled in to the press room. The people who are here just for sessions and the trade room emerge, whether they just arrived in Portland or whether they were taking the first few days to sight-see. The bulletin board of messages and job announcements is almost completely covered.</p><p>Later today, the vendor trade room will open. The big draws are usually the tech book publishers who set up mini-stores in their plots, usually offering 10% or more off of cover price. It's hard to compete when OSCON is in Portland, though, because of the impending "field trip" to <a href="http://www.powells.com/">Powell's Books</a>. But there will also be displays from various OS projects to big-name vendors like Red Hat.</p><p>There's also a very interesting social dynamic that is starting to buzz, but I'll write more about that later.</p> rjray 2005-08-03T19:31:29+00:00 journal OSCON: D+1, Tutorials' End and Dressing Funny http://use.perl.org/~rjray/journal/26053?from=rss <p>Finished with tutorials for this year. The Best Practices session taught me a few new things, things that I look forward to trying out later. I've gotten spoiled by Java providing me with a real object model, and I've been frustrated trying to bullet-proof OO code in my day job to minimize the odds of people breaking my interfaces. I recommend people take a look at the new modules <a href="http://search.cpan.org/~dconway/Class-Std/"> <tt>Class::Std</tt> </a> and <a href="http://search.cpan.org/~dconway/Class-Std-Utils/"> <tt>Class::Std::Utils</tt> </a> from Damian. They are designed to prop up his design theory of Perl OO based around what he calls "inside-out" objects.</p><p>Of course, this con (like any other con) draws its share of, err, <i>colorful</i> characters. Like <a href="http://www.blackperl.com/unusual.jpg">this guy</a>, who seems to think that vintage Circus Barker attire is the best way to stand out in the crowd. Speaking as a recovered goth, I understand wanting to not look like everyone else. But this just screams of "Please, please look at me." *shrug*</p> rjray 2005-08-03T03:36:54+00:00 journal OSCON: D+1, ActiveOops! http://use.perl.org/~rjray/journal/26046?from=rss <p> <a href="http://www.rjray.org/blosxom/tech/activeoops.jpg">ActiveX Oops</a> </p><p>Though it isn't too clear (despite climbing up on a railing to get a closer shot), this is an ActiveX error dialog. It's showing up on the announcements screen for the venue of this year's <i>Open Source Conference</i>.</p><p>I'm sure there will be plenty of people offering suggestions to the center's IT department.</p> rjray 2005-08-02T22:32:36+00:00 journal OSCON: D+1, Between Tutorials http://use.perl.org/~rjray/journal/26043?from=rss <p>About to start my second tutorial of the day, and the last for this year. Next up is <a href="http://conferences.oreillynet.com/cs/os2005/view/e_sess/6438">Perl Best Object Oriented Practices</a>, a Damian Conway tutorial.</p><p>Time to sit down and buckle up...</p> rjray 2005-08-02T20:34:39+00:00 journal OSCON: D+1, First Tutorial http://use.perl.org/~rjray/journal/26037?from=rss <p>Started the day by being late to the <a href="http://conferences.oreillynet.com/cs/os2005/view/e_sess/7094">Learning AJAX</a> tutorial. This one is sold out, and it shows. The room is packed, and I'm at the very back with about a dozen other late-comers. The CC staff just came in with a load of extra chairs, or I'd still be sitting on the floor.</p><p> <a href="http://www.google.com/url?sa=U&amp;start=1&amp;q=http://en.wikipedia.org/wiki/AJAX&amp;e=9797">AJAX</a> is an interesting technology. I'm very annoyed with myself for not having noticed it sooner-- it's been out there for some 5-odd years, but I've only been aware of it from about March or so on. A number of projects at my day-job are using it, and I'll almost certainly be using it within the next few weeks myself. And that's not even considering my "personal" (non-day-job) work.</p><p>The speaker, Alex Russell, is good. Sharp, and quick with the real-world code examples to illustrate his points and/or answer questions. He's a lead developer on a JavaScript project called the <a href="http://www.dojotoolkit.org/">Dojo Toolkit</a>. Something worth looking more closely at.</p> rjray 2005-08-02T17:09:28+00:00 journal OSCON: D-Day, Second Tutorial http://use.perl.org/~rjray/journal/26024?from=rss <p>D. Richard Hipp, the creator of <a href="http://www.sqlite.org/">SQLite</a>, knows his stuff. This isn't exactly news, as anyone who's used SQLite knows this. The tool is well-designed and well-written. What's more, it's also pretty well-documented, something that OS projects can't always claim.</p><p>He also gives a good tutorial. He's not as hyper as Damian, but he's engaging and he uses a lot of very applicable, easily-understood examples as he goes along. I don't know that what I'm learning here is going to make my usage of SQLite that much more efficient, but I'll certainly have a better understanding of what is going on under the hood as I code. And some elements may actually lead to better performance in apps using SQLite. Great contrast from the first tutorial of the day.</p><p>Unfortunately (for me), one of my book ideas was to write about this topic, and apparently someone is already working on one. I hope to chat and see what his plans are, especially where coverage of language bindings are concerned. Who knows, he might be interested in having someone contribute...</p> rjray 2005-08-01T23:28:44+00:00 journal OSCON: D-Day, Between Tutorials http://use.perl.org/~rjray/journal/26021?from=rss <p>In between tutorials. Contrary to what I said earlier, I am starting to run into a number of people that I know. Catch is, they aren't sure at first that they know <i>me</i>. Not having made it last year, I completely forgot that I changed my appearance a lot about a year and a half ago. People who are used to seeing <a href="http://www.blackperl.com/me-old.jpg">me</a> (the long beard was an experiment, usually it was much shorter) suddenly don't recognize <a href="http://www.blackperl.com/me-solo.jpg">me</a>.</p><p>Despite this minor setback, I've run into <a href="http://www.babilim.co.uk/blog/">Alisdair Allen</a>, <a href="http://use.perl.org/~gnat/journal/">gnat</a>, <a href="http://conferences.oreillynet.com/cs/os2005/view/e_spkr/66">Larry Wall</a>, and several others I don't have links for. Still plenty of others I hope to run into over the next four days. And of course, in about 15 minutes I'll be on my <a href="http://conferences.oreillynet.com/cs/os2005/view/e_sess/6375">next tutorial</a>, at which I'll get to meet the talented D. Richard Hipp, creater of <a href="http://www.sqlite.org/">SQLite</a>, possibly the mostly subtle and surreptiously-cool piece of DB code ever.</p> rjray 2005-08-01T20:20:49+00:00 journal OSCON: D-Day, First Tutorial http://use.perl.org/~rjray/journal/26016?from=rss <p>Starting the day with the <a href="http://conferences.oreillynet.com/cs/os2005/view/e_sess/6375">XUL tutorial</a>. Alas, not as good as I had hoped. The speaker is flat, and is mostly reading the slides without giving too much additional commentary. With the rise of AJAX and other technology, I think XUL (and Firefox in general) have a lot of growth potential. But it is very telling that, of all the laptop screens I can see from my seat, none (including my own) are displaying anything remotely related to the talk. I would have rather heard design principles, talk of how to move from a {Swing,SWT,Gtk2,...}-oriented GUI mind-set to XUL. What he is currently saying, can be gotten from the slides or the online documentation from the <a href="http://www.mozilla.org/">Mozilla</a> project.</p><p>Next up after this is <a href="http://conferences.oreillynet.com/cs/os2005/view/e_sess/6375">The Inner Workings of SQLite</a>. I'm quite looking forward to this, as I've been a real enthusist for this Db tool for a while now. The pre-printed slide-pack for this is something like 175 slides, so I expect Dr. Hipp to be talking about as fast as Damian Conway does.</p><p>This is painful. I am <i>so</i> not a morning person.</p> rjray 2005-08-01T17:17:18+00:00 journal OSCON 2005: D-2 and Counting http://use.perl.org/~rjray/journal/25985?from=rss <p>In a few hours, I'm on a plane up to Portland for this year's <a href="http://www.oreillynet.com/oscon2005/">Open Source Convention</a>. I'm giving a talk on Thursday, entitled "Don't Drop the SOAP: Why Web Services Require Complexity". It's a subject I feel pretty strongly about, and I have all my thoughts and notes together.</p><p>What I <i>don't</i> have is my presentation/slides done. This is the worst-prepared I've ever been for a talk. My year has been hell, and on top of it I've had some health-related problems the last few months that have taken more out of me than I've been willing to admit. I have no doubt that I will have my shit together by the time I sign-in tomorrow evening. But I'd feel a whole lot better if the shit were already together.</p><p>Anyway, I'll see as many of you as can make it.</p> rjray 2005-07-31T09:07:39+00:00 journal Restless http://use.perl.org/~rjray/journal/25856?from=rss <p>I'm restless.</p><p>I'm restless in three distinct areas of my life. Fortunately, I have three distinct blogs, each covering (more or less) one of those three aspects. So I'm making three entries at (roughly) the same time.</p><p>I'm restless in my profession. I feel almost like I have to go in a drastically-different professional direction, in order to keep any sense of freshness, of learning new things, a regular part of what I do. I don't mean a change of professions-- programming always has been, and surely always will be my passion.</p><p>But I seem to have found myself in a place where the things I do are difficult, are complex, but are not terribly challenging. Part of the problem seems to be Perl itself. Not in shortcomings of the language (per se), but in the fact that the number of places that treat it like a serious, large-scale-software-development language are few and far between. It's almost like the "fast" girl back in high school: it's fun to take out for scripts and even the occassional web-commerce app, but you don't want to be caught writing a full-on IDE like Eclipse in it.</p><p>Maybe Perl 6 will inject some life into it for me. Now, I know there are still a lot of Perl hackers out there who are way ahead of me. But I've never had any interest in obfuscated Perl, or in trying to find the most fiendishly-clever way to do something. I've been content to write clean, readable code that people find easy to use, and I find easy to maintain. It's no surprise that the majority of the open source software I've crafted has taken the form of tools for use by developers. They're generally more appreciative of factors like reliability, maintainability and clarity. More so than the average user, at least. I think there is still a great landscape of good software waiting to be written in Perl. But I'm not going to get to any of it on my current path.</p><p>Whether because of emotional fatigue over the job, or physical fatigue from external sources, I don't get as much time to spend on my OSS projects as I would like. It's probably a combination of the two, but the fact still stands. I'm such a geek, that my fantasy for if I should ever win the lottery involves buying a good home, setting up the rest of the money in funds and investments, then living off of the returns and interest for the rest of my life, writing code for any OSS project that tickles my fancy. I'd love to be contributing to either Perl 6 or Parrot, without having to choose between it and the few hobbies of my own that I try to foster.</p><p>To make matters worse, I've never really had a job that put me in a place to work towards my true passion: language design and compilers. While at Red Hat, I tried to convince them to let me contribute to Perl 6 in a way similar to how they contribute to other non-kernel OSS projects. They have people who do little more than hack on GTK+, GNOME, RPM, etc. It didn't work out, which is just as well as I was pink-slipped within a year or so of that proposal. I find areas like Aspect-Oriented Programming very interesting, and I'd love to have more time to learn about virtual machine programming theory, in particular the Parrot VM and the<nobr> <wbr></nobr>.NET CLR. Very, very few people are lucky-enough to be able to get paid to do these things. And for these sorts of endeavors, I'd be practically an entry-level candidate. I'd have the years of general experience, but not any practical, or directly relevant experience</p><p>Other languages are starting to lure me away, with promises of having a different class of problems to solve. I've recently been re-learning Lisp. I've been on Java for quite a while now. It truly is like programming in a straightjacket, but there's some comfort to be had in that if you look at it right. And <a href="http://www.eclipse.org/">Eclipse</a> is just a dead-sexy environment to work in. There's a prototyping of Perl 6 being done in Haskell, and when I was sharing office space with the ex-Cygnus folks who'd been acquired by Red Hat, they often sang the praises of Standard ML. I even long to write C again, or at least settle for C++. Then there's writing: I want to write more. I have two book ideas, and a handful of article ideas. Again, like the OSS projects that lay gathering dust, I seem to lack the time to spend on them.</p><p>Something will have to change in the near future, I just don't know what or how. And the not-knowing is contributing mightily to the sense of restlessness.</p> rjray 2005-07-23T10:31:30+00:00 journal RPC-XML-0.57.tar.gz uploaded to PAUSE http://use.perl.org/~rjray/journal/22446?from=rss <p>The file <tt>RPC-XML-0.57.tar.gz</tt> has been uploaded to CPAN, and will soon be accessible as <a href="http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.57.tar.gz">http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.57.tar.gz</a>. Mirroring may take up to 24 hours.</p><p><nobr> <wbr></nobr><i>/home/users/rjray/bin/cpan2upj.pl, on behalf of rjray</i> </p> rjray 2004-12-24T11:14:54+00:00 journal RPC-XML-0.56.tar.gz uploaded to PAUSE http://use.perl.org/~rjray/journal/22225?from=rss <p>The file <tt>RPC-XML-0.56.tar.gz</tt> has been uploaded to CPAN, and will soon be accessible as <a href="http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.56.tar.gz">http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.56.tar.gz</a>. Mirroring may take up to 24 hours.</p><p> <i>bin/cpan2upj.pl, on behalf of rjray</i> </p> rjray 2004-12-09T09:34:19+00:00 journal RPC-XML-0.55.tar.gz uploaded to PAUSE http://use.perl.org/~rjray/journal/22065?from=rss <p>The file <tt>RPC-XML-0.55.tar.gz</tt> has been uploaded to CPAN, and will soon be accessible as <a href="http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.55.tar.gz">http://www.cpan.org/authors/id/R/RJ/RJRAY/RPC-XML-0.55.tar.gz</a>. Mirroring may take up to 24 hours.</p><p><nobr> <wbr></nobr><i>/home/users/rjray/bin/cpan2upj.pl, on behalf of rjray</i> </p> rjray 2004-11-30T10:12:29+00:00 journal Forgive Me, Bretheren Monks http://use.perl.org/~rjray/journal/19990?from=rss <p>I have strayed from the True Path of Perl. I have not only taken it upon myself to learn Java, but earlier today I released my first <a href="http://freshmeat.net/projects/skopje/">open-source Java library</a>.</p><p>Though I expect any absolution to be costly and demanding, please at least consider showing mercy towards me on the grounds that the code itself is designed to bring elements of Perl to the impoverished of Java. Indeed, I've even licensed it under the most-revered <a href="http://www.opensource.org/licenses/artistic-license.php">Artistic License</a>. For all I know, this may be the first Java library licensed under Perl-originated terms.</p><p>I'll go about my penance, now.</p> rjray 2004-07-22T07:11:31+00:00 journal Extry Extry: Winer Leaves the RSS Advisory Board http://use.perl.org/~rjray/journal/19512?from=rss <p> <a href="http://archive.scripting.com/2004/06/25#When:1:30:36PM">http://archive.scripting.com/2004/06/25#When:1:30:36PM</a> </p><p>I don't know how much direct influence Dave's even had in the last year or so, but I'm still pleased as punch to see him distance himself from any technology I care about.</p><p>Now, let's have us a little chat about SOAP, and XML-RPC...</p> rjray 2004-06-26T08:24:42+00:00 journal RPC::XML 0.54 Uploaded http://use.perl.org/~rjray/journal/18333?from=rss <p>It seems that the SOAP interface is either not working, or has changed somewhat. My usual module-upload-notification script did not actually post an entry.</p><p>So anyway, I've uploaded a new RPC::XML package to CPAN. I don't really want to think about how long it's been since my last CPAN upload (that's actually a topic for a later, longer entry). But there were a lot of changes that I wanted to get into circulation. I also have a few other patches that I didn't have time to apply just yet. I'm leaving for a short vacation in a few hours, and I wanted this out the door before then.</p> rjray 2004-04-14T13:03:15+00:00 modules The Books of Perl http://use.perl.org/~rjray/journal/14744?from=rss <p>Dear Die-ary,</p><p>Today, I happened across <a href="http://books.perl.org/"> <tt>books.perl.org</tt> </a> and their nifty index of Perl books and rating thereof. But there must not be many people visiting, as so few of the titles have been rated by more than 3-5 readers.</p><p>Perhaps I can help draw attention to this terrible plight and encourage more people to visit.</p> rjray 2003-09-16T22:57:58+00:00 journal