rjray's Journal
http://use.perl.org/~rjray/journal/
rjray's use Perl Journalen-ususe Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners.2012-01-25T02:09:54+00:00pudgepudge@perl.orgTechnologyhourly11970-01-01T00:00+00:00rjray's Journalhttp://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=&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>rjray2008-01-31T22:18:34+00:00journalTwitter-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>rjray2007-09-21T22:46:10+00:00journalThe 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 <Home> and <End>:</p><blockquote><div><p> <tt>(defun home ()<br> "Home - begin of line, once more - screen, once more - buffer."<br> (interactive nil)<br> (cond<br> ((and (eq last-command 'home) (eq last-last-command 'home))<br> (goto-char (point-min)))<br> ((eq last-command 'home)<br> (move-to-window-line 0))<br> (t (beginning-of-line)))<br> (setq last-last-command last-command)<br>)<br> <br>(defun end ()<br> "End - end of line, once more - screen, once more - buffer."<br> (interactive nil)<br> (cond<br> ((and (eq last-command 'end) (eq last-last-command 'end))<br> (goto-char (point-max))<br> )<br> ((eq last-command 'end)<br> (move-to-window-line -1)<br> (end-of-line)<br> )<br> (t<br> (end-of-line)<br> )<br> )<br> (setq last-last-command last-command)<br>)</tt></p></div> </blockquote><p>They aren't mine, but I happily added them. With these, <Home> 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-<</tt>. And <End> 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>rjray2007-03-30T22:05:19+00:00journalThis 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&tag=rjrayorg-20&linkCode=as2&camp=1789&creative=9325&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>rjray2007-03-11T20:11:28+00:00journalMy 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>rjray2006-10-30T09:04:02+00:00journalTie-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>rjray2006-09-27T06:33:16+00:00journalWebService-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->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>rjray2006-09-25T03:42:26+00:00journalRPC::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>rjray2006-06-30T08:12:56+00:00journalClearly 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>rjray2006-01-05T21:51:43+00:00journalSubversion 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 = do { my @r=(q$Revision: 1.35 $=~/\d+/g); sprintf "%d."."%02d"x$#r,@r<nobr> <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>rjray2005-09-22T09:02:17+00:00journalOSCON: 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>rjray2005-08-05T20:31:09+00:00journalOSCON: D+3, Apré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>rjray2005-08-04T21:54:54+00:00journalOSCON: 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>rjray2005-08-04T03:30:18+00:00journalOSCON: 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>rjray2005-08-03T19:31:29+00:00journalOSCON: 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>rjray2005-08-03T03:36:54+00:00journalOSCON: 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>rjray2005-08-02T22:32:36+00:00journalOSCON: 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>rjray2005-08-02T20:34:39+00:00journalOSCON: 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&start=1&q=http://en.wikipedia.org/wiki/AJAX&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>rjray2005-08-02T17:09:28+00:00journalOSCON: 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>rjray2005-08-01T23:28:44+00:00journalOSCON: 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>rjray2005-08-01T20:20:49+00:00journalOSCON: 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>rjray2005-08-01T17:17:18+00:00journalOSCON 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>rjray2005-07-31T09:07:39+00:00journalRestless
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>rjray2005-07-23T10:31:30+00:00journalRPC-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>rjray2004-12-24T11:14:54+00:00journalRPC-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>rjray2004-12-09T09:34:19+00:00journalRPC-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>rjray2004-11-30T10:12:29+00:00journalForgive 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>rjray2004-07-22T07:11:31+00:00journalExtry 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>rjray2004-06-26T08:24:42+00:00journalRPC::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>rjray2004-04-14T13:03:15+00:00modulesThe 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>rjray2003-09-16T22:57:58+00:00journal