Posting to blogger?

Some days are just big buckets of fail. So far I've not been able to get any code to successfully publish anything to blogger.com. I've failed with both Net::Blogger and Atompub and am seriously tempted to just create a bunch of damned HEREDOCs and push them straight to the Google Blogger API.

Didn't we use to own the Web? Or maybe I'm just having a really off day. I've successfully written a custom CMS in just a few hours and I'm stuck on one last, little stumbling block.

Anyone have working code they care to share? I mean real, live working code, not examples. I've seen more failed examples than I care to admit :)

What I would change about Test::SFTP

I've been noticing more and more attention being given to environment testing. That is, part of your testing would be to check the environment you're on. Many Perl developers would probably hear this and say "yeah, well, that makes sense" - that is because many Perl developers already do it. Apparently the other developers are starting to catch on. :)

Test::SFTP was written to make sure my environment is okay. By "okay", I mean "consistent." Also, I really wanted to write a test module.

Originally I wrote Test::SFTP when Net::SFTP::Foreign either didn't exist or was in its very very early days. Point is, I didn't know it. I used Net::SFTP which uses in turn Net::SSH::Perl which - for those that do not know it - is a pure-Perl implementation of the SSH protocol. It's actually a pretty cool thing, except that the dependency is a complete nightmare (including GMP and half of Crypt::* namespace) and it's rather slow.

What my experienced business manager would ask about Perl

  • Can it be compared with J2EE?
  • CGI? That's even older than ASP, you cannot write my webapp in it!
  • Does Perl support session?
  • I can let you try to code at most 20% of my webapp(you can't code the whole site with Perl, apparently), but make sure it can share session with ASP.NET.
  • What's needed to run your Perl?
  • Is there anything Perl can do better than Java?
  • Does Perl have business value?

Like Damian said in this interview: "Selling Perl to your manager is about explaining Perl in terms that your manager cares about: stable, reliable, powerful, efficient, cheap, maintainable, well-supported, and future-proof."

Are we sharing the same situation here?

Trying out Method::Signatures::Simple

I previously wrote about trying out MooseX::Method::Signatures. That module is neat, but incurs a significant runtime penalty per subroutine call.

Now I've tested out Method::Signatures::Simple. It's powered by Devel::Declare and doesn't seem to incur a any runtime penalty. However, since it needs to do some work when the subroutines are compiled, there's a 3-4% compilation hit for my tests:

But on runtime there's no hit at all:

Here's what I needed to do to convert Hailo to it. Unfortunately using it breaks interaction with Devel::NYTProf. When I generate profiling output with nytprofhtml what were previously links to my subroutines aren't links at all.

That's a big price to pay for just turning this:

Into this:

So unless I can figure out a workaround for that I won't be merging that branch.

Dates in Latin

I'm getting married on June 20th. Leïla and I chose this date because it's my birthday. It's my birthday because I was born on Dies Martis xx Junius MCMLXVII, as calculated by:

What I would change about App::Genpass

If there is one thing that is more abundant than Hello World programs, it is password generators. Yet, one of the things I could never get right when working on my system administration job (all of them) was comfortable password generation.

There were various methods I've learned from people:

Almost Reinventing XPath for YAML

I think I started to reinvent XPath. I hate when that happens.

It started simply enough. I had a directory with 12,000 YAML files in it. I wanted to grep them, but I can't do that from the command line:

 -bash: /usr/bin/grep: Argument list too long

Although slightly annoying this isn't a big deal. I can write a Perl script to do the job and get the files through opendir. I hardcoded the bits that I wanted to get out, and when I needed something else, I just changed the source.

I made a couple of these quick scripts before I realized I was going to be doing this a lot. I refactored it so I could specify on the command line the path to the YAML thingy I wanted, and called it, well, it was called extract, but I renamed it ypath to put it on Github.

 % ypath dist_info/dist_file *.yml

I could do it for multiple values:

Missing In Action

For some time now I have been promising to publish the list of CPAN Authors who for one reason or another, appear to be uncontactable. These are authors, who when using their PAUSEID @ cpan.org address, generates a rejection of some form. Typically this appears to be for addresses which are set up to be used in redirection, which have since been made obsolete (perhaps from changing jobs or personal domain), but there are a few that are just not setup to receive emails.

I have now created a Missing In Action page, which I will keep updated as I receive bounce backs from the CPAN Testers daily summaries. In some cases bounce backs require verification from a real person, and I do eventually get round to those, but the ones listed are specifically for emails that are outright rejected. If you have not been receiving any CPAN Testers summaries or reports and have been expecting some, please first check this list to ensure that you haven't had your preferences disabled.

If you are on the list, please read the instruction on the page, to learn how to enable your PAUSE email, and to get your CPAN Tester preferences re-enabled.

Cross-posted from the CPAN Testers Blog.

Making Test::Harness output a progress bar

I really haven't done a huge amount of work on Test::Harness since it was released as core, so I decided to take a look at how it is now. I was reading a blog post where someone commented that Perl's Test::Class doesn't offer a progress bar and I thought, that should be easy to hack into prove.

Perl Survey Week 2

First, a very very big thank you to people who have filled in the survey and spread the word. After a little less than a week, we have 2500 responses. For this kind of survey, that kind of response is incredible, and many researchers will be envious of obtaining a sample that large, that easily.

The rate of responses is about double that of the 2007 survey which stayed open for about two months to obtain 4000 completed questionnaires. In all likelihood I'll close this survey down at the end of the first week of June (after 2.5 weeks), so to get more interesting data I'd like your help.

Please can you pass on details about the survey to less committed Perl programmers that you know - we don't just want to know about the core of the community, but also more casual users. This group are clearly more difficult to reach, so it's important to spread the word. Just point them to the link http://survey.perlfoundation.org and let them know that the work is sponsored by The Perl Foundation.

Birmingham.pm Technical Meeting - Wednesday 26th May 2010

Event:   Birmingham.pm Technical Meeting
Date:    Wednesday 26th May 2010
Times:   from 7pm onwards (see below)
Venue:   The Victoria, 48 John Bright Street, Birmingham, B1 1BN.
Details: http://birmingham.pm.org/tech/next

Talks:

  • Accelerated web development with Catalyst [Richard Wallman]
  • CPAN Testers 2.0 - "I love it when a plan comes together" [Barbie]

Details

This month we welcome a returning guest speaker, Richard Wallman, who will be taking a look at how Catalyst has eased the development lifcycle of websites, from his own experiences. In addition I'll be looking at the progress of the CPAN Testers 2.0, and looking at some of the near future plans for CPAN Testers.

Portuguese Perl Workshop 2010 Last Call

We are a few days away from the Portuguese Perl Workshop. We still have some spots left for the training sessions and are still accepting presentations submissions. Workshop official website here.

Looking for work in London?

Just a quick note: if you can legally work in the UK and you're near London, drop me a line every once in a while if you're looking for work. I'll treat it with confidence. I keep getting contacted by recruiters and sometimes I want to pass leads on to others.

Actually, if you need to be sponsored for a work permit and you're really good at what you do, still let me know. Sometimes the recruiters tell me their company will sponsor permits.

Please do what I think you should do

Last Sunday, my brother and I had a discussion about Israel not allowing Noam Chomsky to enter the country because he is "a satanist nazi demon out to get Israel wiped off the map". It was mostly absurd but one point is worth mentioning: my brother claimed that Chomsky is doing a disservice to his goal of further expanding people's understanding of politics by lecturing where people already know oppression (Palestine) instead of where people are relatively oblivious to it (Israel).

While I know this is a touchy subject for most people, it still resounds in my head as the "I think you're wrong because you're not doing what I think you should do" claim which we're so used to in open source.

CPAN Milestones

Recently Leo Lapworth updated several of the perl.org sites he's been working on to list the current stats for CPAN, as was previously seen in the footer of each search.cpan.org page. It's good to remind people (even subconsciously) just how big CPAN is. In his post Leo also wondered what the 20,000th distribution was. With the CPAN Testers database holding lots of stats about CPAN, as well as the CPAN Testers reports, it was fairly straightforward to extract some numbers. In fact it proved so straightforward I promised to include it in the CPAN Testers Statistics website.

I'm pleased to say I finally found some time to do just that, and have revamped the CPAN Statistics page to include the CPAN Milestones. Now you can keep up to date with what distributions are hitting some significant milestones.

Cross-posted from the CPAN Testers Blog.

Measure Twice, Cut Once

Good advice for both building a house and performing a database update.

Stripping color codes in irssi scripts

So you're writing an IRC script for irssi and you want to strip formatting codes (including colors, bold, underline, etc) from some variable. This is possible with s///, and google will show many (usually not very readable) examples.

But there's an easier way: irssi has an undocumented function called Irssi::strip_codes that does all the work for you. And since irssi exports all functions into your script's namespace unconditionally, you don't even need to type the Irssi:: part:

my $clean = strip_codes($dirrrty);

This will remove so-called “mIRC colors”, irssi's internal formatting codes, and ANSI color sequences.

Emacs cperl-mode Perl6+MX::Declare news

I recently invested some tuits to rebase my Perl6 enhancements in Emacs cperl-mode to the latest version 6.2 that Ilya Zakharevich provides on his homepage.

After wading through tears and blood (well, it was more about different levels of fatigue) I felt strong enough to also finally merge "the other big branch"(tm) that Jonathan Rockway maintains for MooseX::Declare syntax enhancements.

The result is yet another branch mxd-perl6-merge on github. The leading version is ilyaz' (including useless whitespace left as is), then Perl6 adaptions, then MX::Declare which in turn also made some things more clever for the Perl6 changes.

If you ever tried one of the cperl-mode hacks for Perl6 or MooseX::Declare, please switch to this merge. It should work the same or even better for you. If not, report it to me.

Objects are experts

Note: this is part of an occasional series of posts aimed at newer programmers, or newer Perl programmers. I'm going to talk about what objects are, but even programmers who think they know the answer might benefit from some of this. That includes myself. You might take exception to some of what I write, so feel free to chime in with counter-arguments.

For many older programmers such as myself (I'm 42 as of this writing), their first computer program is often a variant of the following BASIC program:

10 INPUT "What's your name? ", N$
20 PRINT "Hello, "; N$
30 GOTO 10

That's already pretty interesting. In just three lines of code we have some idea about:

  • I/O (input/output)
  • Variables (N$)
  • Data types (the '$' indicates a string variable)
  • Flow control (the GOTO)

Starting Over from Scratch

From Lee Harris's circuitous polemic Civilization and Its Enemies: The Next Stage of History :
The error of abstract reason is, in short, forgetfulness. It forgets that its abstractions are designed to try to capture the infinitely elusive real. It begins to use these same abstractions as yardsticks by which to judge the real.
Harris was summarizing a lengthy criticism of Enlightenment-era political thought, and the failure of the various radical philosophies that attempted to wipe away and reconstruct society from the ground up. I find the same lesson applies to good software: it's often imperfect, but those imperfections are there because reality demands them, and scrapping a working, if imperfect solution in favor of building a new one inspired by a new abstraction is a project often doomed to failure.

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.