pjf.id.au ATOM enabled

pjf.id.au ATOM enabled
In an attempt to make technorati hate my blog less, I've added an ATOM feed to pjf.id.au. This was reasonably easy using XML::Atom::SimpleFeed once I realised that despite the fact that lots the fields in ATOM are optional, most readers really want them to be there.

The ATOM feed is also allegedly exporting tags, although I haven't seen any reader currently pick up on them. Either I'm using the wrong readers, or I'm doing something wrong in the export. I don't know yet.

The ironic thing is that despite this making my blog extra swishy in every other reader, technorati still seems to think it has only one post, and links that to the wrong page. I'm hoping that the posting of new content (and a ping) will help it realise things are different now.

(read more...)

Open Source Developers Club

Open Source Developers Club
Last night we had another Open Source Developers Club (OSDClub) meeting. I had volunteered my talk on An Illustrated History of Failure, and Simon Hildebrant had volunteered a talk on Selenium.

The night seemed to go well, but I can't help but be disappointed with my performance. I've been teaching all this week, and this is extremely time consuming. Waking up very early and then standing in front of a class for eight hours can sure be tiring, but that's not the real problem. After a full day of teaching, the last thing I want to be doing is spending an hour or more rehearsing my talk. I'd much rather be playing Pikmin (thanks Ian!), or mucking with technorati, or even watching commercial TV. This is especially the case when I've been teaching roughly every second week for the last two months.

I hold myself to a particularly high standard when it comes to presentations. Presenting is my job, and if I flub my lines or forget my slide order, then I'm extremely unhappy. For anyone who noticed my errors last night, I apologise. For anyone who didn't notice, thank-you. You're a great audience.

Simon's presentation last night was on testing the web with Selenium, which is an awesome tool, and which has lots of ways to plug into TAP and other testing frameworks. There were some interesting ideas being thrown around about how one can use Selenium to provide repeatable test cases for web applications, the same way that one would provide test cases when submitting a bug report for a traditional application.

The discussion got me thinking more about what if one finds a bug, but can't get it fixed. It's a good introduction to my next talk, which is Fixing the web with Greasemonkey.

(read more...)

SAGE-AU 2007

SAGE-AU 2007
Last week was the Fifteenth Annual Australian System Administration Conference, aka SAGE-AU 2007.

Before I say more about the conference, let me mention the conference dinner. SAGE-AU conference dinners come with an open bar; and not just beer and wine, either. If you're willing to go to the effort of walking to the bar you can get some quite snazzy (and strong) drinks. As you can imagine, there's a tendency for the conference delegates to get quite happy as part of the evening festivities. The reason why this is important is due to my role in the conference each year.

Each year, for the last three years, I have been given the first talk after the conference dinner. Out of all the talks at the conference, mine is the one conference delegates are most looking for an excuse to miss. I need to have a talk that a room filled with hung-over sysadmins can grasp and find entertaining.

This by itself is not a great challenge. Where things become really tough is that I'm invariably presenting the talk with a hangover myself. As can be seen from the conference photographs, I've never got the habit of leaving the dinner early. It doesn't help that I feel compelled to rise before the sun to do dry runs of my talk, either.

Despite all this, I'm very happy with the arrangement. Not because of the honour of being deemed worthy of dragging the conference out of bed. Not because of the invariable praise and invitations that comes from a successful presentation. Not because of the perks that come with being a speaker, or the feeling that I've imparted valuable knowledge to the audience.

No. The thing that really, really makes me feel wonderful is watching the pain and anguish suffered by the delegates who slept in and missed the talk, and then are repeatedly told by their colleagues how good it was. There's something about getting up before the sun with a hangover that really improves one's appreciation of schadenfreude.

(read more...)

PerlNet and The Perl 5 Wiki

PerlNet and The Perl 5 Wiki
A couple of days ago Schwern posted an announcement unveiling The Perl 5 Wiki. There's been a lot of discussions regarding this, including on mailing lists, use.perl and IRC. Throughout the discussions PerlNet is mentioned regularly. As PerlNet was my initial creation, I'm sure that some of you may be wondering what my thoughts are about all this. To be honest, so have I. ;)

PerlNet was founded in the spirit of openness and sharing. I wanted a place where members of the Perl community, in particular the Australia/New Zealand (ANZ) Perl community, could interact. I wanted businesses to show off what they were doing with Perl. I wanted individuals to talk about what they were creating. I wanted those just taking their first steps into Perl to able to find people they could ask for help, communities they could feel comfortable entering. Fundamentally, I wanted, and still want, the ANZ Perl community to grow.

In this regard, I feel that PerlNet has been a modest success. We host the content for Sydney.pm, and much of the content for Melbourne.pm. We've got a short list of businesses that offer Perl services, although it's not as big as the list of businesses who I know are using Perl. We get bunch of contributions after most Melb/Syd.pm meetings, depending upon the eagerness of the individuals present to do summaries and take notes.

PerlNet has also been successful in developing content on other topics. We've got a great page on Catalyst, an excellent page on testing, and a a list of IDEs and editors. I refer to these all the time, and refer my students to them as well.

Unfortunately, these pages aren't seeing much activity anymore. There still many stubs that have never grown, and are unlikely to do so any time soon. Having a wiki is about having a community, and about the creation of content. I think that PerlNet is still doing well with the creation of ANZ content, but it's stalled for material beyond that.

As such, I welcome the new Perl 5 Wiki. It's a chance to develop content that PerlNet's not been successful in creating, and a chance of taking existing good content and turn it into something really great. PerlNet was founded in the spirit of sharing, and sharing with The Perl 5 Wiki is a logical and natural continuation of PerlNet's ideals.

Schwern has given me enough reasons to believe that The Perl 5 Wiki will succeed, and I know from many years of working on wikis that the initial growth phase is critically important. I've had discussions with many of the more active contributors, and there seems to be almost universal support in the relocation of non-ANZ content to The Perl 5 Wiki where appropriate.

Our last real stumbling block actually deals with licensing. PerlNet and The Perl 5 Wiki solicit contributions under different conditions, and there are some incompatibilities between the two. We've got some good people working on the best way to overcome this, and I hope to soon have a way that PerlNet contributors can easily mark their content as Perl 5 Wiki friendly.

If anybody does wish to discuss this matter with me further, then I invite you to do so by getting in touch with me at pjf@cpan.org or catching me (pfenwick) on irc.freenode.net #PerlNet.

(read more...)

$?, system() and win32

$?, system() and win32
Warning: Technical post ahead.

I've been working on improvements to IPC::System::Simple, and discovered a tricky problem while writing more test cases. Put very simply, when using system() under Windows I'm unable to tell the difference between a command that we can't find, and one that we can find, but returns an exit value of 1.

The problem is two-fold. Firstly, whenever we invoke a shell to spawn a process, we can't ever tell the difference between the shell returning a "can't start" value, and a command that runs successfully and returns the same value. This isn't a problem that's unique to Windows; the "can't start" value is 1 under Windows, and 127 under Unix.

The second problem is Windows-Perl specific. If it fails to start the command successfully, it tries to invoke it using the shell, even if the multi-argument version of system() is used. This means that under Windows we can never tell the difference between a failed command and a completed command returning -1.

I suspect that Perl invoking the shell when using a multi-arg system call is a bug. If not, then it needs to be explicitly documented. Time for me to fire up perlbug again.

In the meantime, I can get around most of these things problems in IPC::System::Simple by falling back on the Win32::Process module. This is almost certainly the correct solution regardless of what happens with Windows system(), since it allows us to access the full 16-bit return value, something that system() will never do. Unfortunately it means that I need to do a lot of the work by hand that would normally be handled in Perl's win32.c, and I'm not really looking forward to that.

For further reading, see $? set to strange values under Win32.

(read more...)

Bitcoin QR code This site is ad-free, and all text, style, and code may be re-used under a Creative Commons Attribution 3.0 license. If like what I do, please consider supporting me on Patreon, or donating via Bitcoin (1P9iGHMiQwRrnZuA6USp5PNSuJrEcH411f).