Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Purdy (2383)

  reversethis-{ofni.ydrup} {ta} {nosaj}
AOL IM: EmeraldWarp (Add Buddy, Send Message)
Yahoo! ID: jpurdy2 (Add User, Send Message)

Bleh - not feeling creative right now. You can check me out on PerlMonks [].

Journal of Purdy (2383)

Thursday May 04, 2006
08:25 AM

Competition & AJAX

So I was playing around with the Discussion2 stuff, which is pretty neat, but it got me thinking about the whole AJAX stuff and competition in general.


Slashdot (and Slashcode) seems to be really evolving lately, with tagging, CSS and improved commenting system. I don't know this for sure, but I gotta think that it's because Digg has put on some competitive pressure.

I always thought Slashdot was the 2-ton gorilla in the room that no one could mess with, but it goes to show that there's always a way to topple the giant.

I'm not saying that Slashdot is dead - there's a place for editorial control (save for April 1st), but they've certainly lost a lot of power to Digg, at least IMHO.

AJAX Thoughts

Some people refer to the onslaught of AJAX as AJAXturbation, which is crude, but seems to really get at the heart of current approaches.

Opening up your web application to AJAX techniques dramatically (and exponentially) increases the amount of traffic between the user and your server(s). So while we've saved bandwidth by converting from tables to CSS, we're going back with these little bursts of requests and responses as the user is on one page.

Another random thought is web analytics and statistics - do these AJAX requests/responses affect the stats ... should they? i.e. Does Digg tell their advertisers that a person landing on their homepage and digging two stories is 1 page view or 3?

Also, while AJAX is way cool to work with and that alone is a factor for so much of it out there, how will this affect JavaScript's presence and dependence and are developers really thinking out the logic of using it?

For example (and this is probably not the best example), pudge mentioned you can click on the 'read further' link and viola! AJAX will bring the rest of the comment into view without the fuss of going through a page refresh. My point is that this will lead to a user playing around with it more and thinking less of the "cost" of clicking those links. So I (the user) play around with hiding/showing comments with less concern, devaluing the content and at the same time, hammering the server with these tiny requests.

Probably a better example would be the Wall St. Journal's recent right-click search. That will add to a lot of playing around and at the same time, it's annoying to have two right-click context menus.

Let's hope with all these requests flying all over the place that the Net Neutrality Bill passes (and that the DRM/Broadcast Flag people don't try to slip in some of their wishes).

But maybe that's the way the Web (2.0!) has to go, in order to become the next OS... what do you think?



Tuesday March 28, 2006
03:29 PM

FF Extension & V

It's been quite a while since my last posting. Wanted to write about two different things and save catching up with the other stuff until later.

Firefox Extension

Back in January, I had an itch to scratch where I thought it would be cool to have some sort of statistical monitor of Firefox's cache in the statusbar. So I dived into extension development and with the help of docs & the #extdev IRC channel, cranked out the Cache Status extension.

Firefox extensions are merely XML and JavaScript (oh, and a manifest file). They could interface with webapps (written in Perl, of course) to pull down information from the Web somewhere.

I will tell you that writing an extension is not for the faint of heart. There are lots of little gotchas in the development cycle. You also get wrapped up into how cool it is and then come the negative people with their own baggage, dissing your work. This gives me insight into what it means to be an open source developer – it's not all roses; the heckles & negativity can seem to outweigh any praise you may garner. Have you appreciated your open source developer today?

Perhaps we should establish a new (inter)national holiday: “Open Source Developer Appreciation Day.” I'm not saying this for me; before this experience and other maturation aspects, I, too, was guilty of heaping on the negativity. Either learn the lesson or walk a mile (1k lines of code should qualify) in OS shoes and you'll be appreciating OSD's out there everywhere, especially for those projects you use.

One neat aspect of doing this type of project is that your work is readily translated. I have 10 different languages already along with submitted work for a few more, when I get around to it. That's pretty cool!

V for Vendetta

We just came back from NYC and since we were sans-Meredith (staying with the grandparents), we opted to see “V for Vendetta” at a movie theater on opening day! I don't know when the last time we did something like that as parents, so temper my rating with the excitement of actually going to a movie. We both thought it was a great movie.

It also got me to thinking about our government in the US and how scary the current situation is. The movie paints a picture of where things lie at the end of the slippery slope that we seem to be on.

Where will the US be in 50 years? With the Patriot Act and current government infractions of civil liberties as well as other bills in the pipes that threaten other freedoms, it's too easy to glimpse reality from V's fictional future.

I don't have a solution – I know what would be ideal, but I believe we're just too fat & lazy (figuratively) to get involved unless we face a major threat (and yeah, I include myself in that).



Tuesday September 27, 2005
03:47 PM

Goal Update - New CPAN Module

Got four more books down:

I'm in the middle of two more books (Big Bad Wolf on audio CD for my daily commute and a signed first edition copy of the Trudeau Vector). I'm currently at 13 books (and I'll be at 15 prolly next week) and I will make my goal of 20.

Looking back at those goals, I've nailed the weight (still @ 202) and books. I've given up the MythTV boxen - just don't have that type of disposable income lying around.

I've also unveiled my most weighty CPAN module to date: CGI::Application::Plugin::MessageStack. This module/plugin works with cgiapp and gives you a place to push error or informational messages, which will then be automatically inserted into your runmodes.

It has over 60 tests and I developed it using a test-driven methodology (I have a testplan.txt in my 't' dir). Wrote an RFC, the docs through a Wiki, the tests and then the code. It was a really neat process.

I've also been polishing my other modules with a motivation towards improving my Kwalitee. There's just that pesky CGI::MxScreen I adopted that would require a lot of work to improve and I'm not convinced it would be worth it. I guess it will always be my albatross.

I've also been working on a freelance project to address one of my other goals (publishing tools) - taking the code and making it work for other publishers. With this example, I took our OneSource application code and extended it such that the Duke TIP EOG program can allow their listings to be collected online from their advertisers directly. It's coming along nicely and I've learned a few things along the way (CSS, client management, sans-serif vs. serif come to mind). Good lessons and formulative experience to apply when I strike out on my own.



Wednesday September 07, 2005
08:24 AM

IRC Hacking

So I was on #cgiapp ( and Cees Hek taught me a few things, one involving lists, arrays and scalars.

Have you ever tried this?
@a=('one','two','three'); $b = @a; print $b;

So what's the output? '3' ... I knew that and my world was safe & sheltered. Then Cees threw this one at me:
$b = ('one','two','three');print $b;

What's that output? '3'? ... Nope, it's 'three', the last element of the list.

insert sound of head exploding

Before moving on, I think this is a good example of how such a truth of life can really alter your worldview. Not just in Perl, but when you learn something new like that, it really breaks your grip on "reality" and takes a moment (or two) to readjust and get a new grip. I encourage a good shake-up every once in a while.

Ok, so then I was head-coding while playing with Meredith (she's so cute), getting around a CSV file that I will need to import into a database and it has rows with ID #'s and then a column in a row for other ID #'s that are the same 'entity'. So I plan on consolidating them into my shiny new relational db. So I'll need something to determine if the ID # is the minimal # of the set - if so, it's a new 'entity' record. Otherwise, associate the new record w/ the minimal number.

So I'll have the ID # and a list of other ID #'s and I need to know if it's the smallest.

So then I said to myself ... what if I used that concept that Cees taught me w/ a reverse sort? Like:
if ( $id_number == reverse sort @ids )

There are some context issues there that I couldn't (and still don't all that well) understand. Cees nailed it, though:
if ( $id_number == @{[reverse sort @ids]}[0..$#ids] )

Pretty cool, huh? I call it the Hek-Purdy min(). Or maybe "a Hek of a Purdy-good min() function" (helps if you say that in a Southern accent ;)).

Now this is not very readable or maintainable, so I don't plan on world-wide deployment - just my import script ... for now. ;)



Friday September 02, 2005
04:13 PM

Please donate

When I first heard the news of Katrina, I really didn't appreciate the level of disaster. After all, I live in NC and have been through a few hurricanes and didn't really see what all the fuss was about.

But seeing the pictures, the news videos, the breakdown of society ... we also asked our subscribers in those states how they were doing and the response was very touching. Reading that really opened my eyes and called me into action.

My Uncle sent an email saying that for Christmas presents this year, he was making a donation to the relief efforts. This is a great idea and makes for a more meaningful and special family event.

So, however cynical you are ... whatever you belief ... whatever your political affiliation ... people in those affected areas need your help!

Think about donating and asking your family and friends to see if they'd rather their present money be redirected to a donation in their honor.



Friday August 26, 2005
08:45 AM

ApacheCon & Books


Wow, I haven't posted in a while. I went to ApacheCon in Stuttgart, Germany - thanks to the conference for sponsoring me through my talks. The conference itself was ok... definitely not a Perl conference. My talks were the only Perl ones and they were not very well attended (10-15).

My flight over to Germany was one of my worst travel experiences. 24 hours of travelling and 4 legs of flights and no exit row/bulkhead seats (I'm 6'7" with long legs, so regular seating is crammed, to say the least). We were held up in JFK for 1.5 hours just taxi'ing, due to bad weather, and this made me miss the Stuttgart connection, so two more flights!

Another lovely encounter (this should have been quite a piece of foreshadowing): there was a fellow traveller who also missed the Stuttgart connection and he was wearing an Apache hat, so the guy I was sitting next to, that I told I was going to a software conference, said, "Hey, I bet he's going to the same conference." I shoulda said "No." Anyway, after some conversation, he asks what I'm going to be talking on and I say "Perl." He goes "Oh. ... Well, I guess you could develop web applications with that."

resisting further comments here

I took over 200 pictures while I was there - including my trip to Wilhelma (a pretty nice zoo) and the Mercedes-Benz museum.

Stuttgart itself was a pretty nice city, but not very English-friendly. My German lessons handled being able to talk and understand very basic things, but when people were talking to me ... well, that was a whole other situation. So it was an ordeal to go out & about.

Probably the best example was that my wife wanted to pick up some Birkenstocks. This involved several trips throughout the city. Also, the way that people shopped for these shoes was very different - they would go in and try a general shoe and then order their specific need and 4-5 days later, they'd pick it up. My wife had specific needs, which didn't lend itself to the general stock. It wasn't until my last store that I got lucky ... well, sort of. No English, so shopping was fun ... "Do you have Birkenstocks?" "Blue?" "Leather?" "38?" "Uh, I need to go get more cash." (that last one I said in English)

Bottom-line: I gained a new appreciation for foreigners who struggle with English when in America.

Bottom-line #2: I don't think I will go on those type of trips without my wife, anymore. It'd be nice to share these type of experiences (at least the good ones ;)), plus she's a great supporter for the bad ones.


Been reading up a storm:



Saturday July 09, 2005
10:09 PM

YAPC::NA, BREAD and Books


In my last journal entry, I mentioned how great YAPC::NA's Day 1 was. Well, Day 2 & 3 were more of the same, if not better.

One of the great things I learned at the conference was testing in general as well as an awesome networking opportunity for the rest of the cgiapp gang.

I posted minutes from our BOF session and the list has been quite abuzz lately, including my next point...


The BREAD project has reached an alpha milestone, released on CPAN early this morning and has already gone through two more revisions, thanks to Mark Stosberg (who is quite a machine).

Anyway, what's cool about this is that once you have all the modules in place, you can put together a simple CGI::Application like this:

package MyBREADApp;
use base 'CGI::Application';
use CGI::Application::Plugin::BREAD;
sub setup
  $self = shift;
  my $loader = Class::DBI::Loader->new(
      dsn                => "dbi:mysql:mysql",
      user               => "webuser",
      password           => "webpass",
      namespace          => "WHATEVER",
      relationships      => 1,
      additional_classes => [ 'Class::DBI::FormBuilder' ],
  $self->bread_db( $loader );

And then it will give you a complete db management application.

Give it a shot and let me know what you think. The best part of this project is that it has exposed me to better coding (again, thanks to Mark) and some really cool CPAN modules (FormBuilder is way cool).


Well, I haven't been keeping up with the books I've gone through like I promised earlier. I've actually taken a hiatus, thanks to the Daily Sudoku site. I've weaned myself off of those last month and have whirled through a few books:

I'm currently going through two more books on my nightstand table: 1776 and The Historian. I also had to bail on another book - Jonathan Strange and Mr. Norrell - I just didn't get hooked after 100-some odd pages and the book has WAY too many footnotes.


[1]: Pendergast is an enigmatic character of Child/Preston that defies anything I could write here -- best to experience it yourself.

Tuesday June 28, 2005
06:54 AM

YAPC::NA - Day 1

good talks

Went to a lot of testing talks, so my head is spinning on that front. One neat concept I picked up from statico & chromatic's talk is MockObject. With that, I could mock MIME::Lite and override the email sending to not send, but test the email body to see if it matches expected customization.

great food

Toronto has some of the greatest restaurants. I always find myself exploring the food options whenever I travel - I like to find places that are local-flavor.

Had a great Thai meal in some hole-in-the-wall place right around the corner from the conference. It was so good, I might have to go back again today for lunch...

I was overthrown for the dinner choice (Bow & Arrow). It was said it would take too long to get there ... took us two shots at a replacement (first restaurant was already full) along with a 20 minute walk. I'm not sure we saved time, but a good time was still had by all.

awesome cgiapp meeting

We had a CgiAppBOF later, which was awesome - it included a lot of the folks from the mailing list and some new folks as well. We talked about marketing efforts (always amusing to dabble in the dark side) to create more awareness of cgiapp's capabilities. We also talked about the CAF project, a BREAD project and cgi-session.

Sorry for the lapse of links -- rushing this out to go get ready for Day 2.



Monday June 20, 2005
02:49 PM

Going to YAPC::NA

Just got the approval to go and finished my reservations, so I'm heading to YAPC::NA this Sunday ... I look forward to seeing most of you there and learning a lot! :)



Wednesday June 15, 2005
10:05 AM

Two Projects Out...

This may sound like a perlvertisement by the time I'm done ... whatever. ;)

Two Perl projects have been finally unveiled, after many months of work. The first one is really cool (well, they're both cool). If you go to our site, you'll see some text ads at the top. Those are NOT Google AdSense/AdWords ads. Those are homebrew ads... meaning, we developed our own system. We played around w/ the AdSense stuff and while we made some money off of it, we were annoyed about how little we actually made. So instead, we developed our own system and now we get to keep all of the money. And we don't have to worry too much about pesky things like fraudulent clicks, b/c we don't syndicate our system outside of our own site. 99.9% Perl, too (the home page was already in PHP, so I hacked the display of ads in that).

The next system isn't as cool - it's a refresher of our business directory that we did last year. We did some integration w/ the previous project, such that advertisers there can at the same time, setup an account.

So, if you want to hear more about these type of projects, sign up for my half-day tutorial (T15) at ApacheCon. Looks like it's in danger of being cancelled again.