I upset a lot of people with my Perl 5 is Dying post. In fact, that is far and away one of the most heavily cited posts I have. I made people mad at me. I made a lot of people talk. While I'm sorry I made people mad (and I've had some blunt comments directed at me in pubs as a result), I'm very proud of that post. It got a lot of people arguing and thinking and I like to believe it spurred a few people (well, me at least) to do something about it. Here are just a few things which have been happening to turn things around (I am not taking credit for this. Many of these things would have happened any way and I was simply one of many people pointing out the problem).
March 2010 Archives
It appears that there was a touch of confusion and I have been accepted as a speaker at OSCON. I'll be giving the roles talk, but with some adjustments for bits that were a touch confusing. No matter how perfect the example is, using the B:: hierarchy to show multiple inheritance problems just distracts. Not only will this allow me to focus on easier examples, it will also leave more time for questions.
First off, I'd like to thank God (the whole Earth is filled with his glory) for this promotion. I was just a Seraph, doing my normal PR work, but somehow God (holy, holy, holy and all that) noticed me and decided it was time to give me a bit more responsibility. Of course, being untested, he couldn't put me in charge of something as important as the US Senate or something like that, so he gave me Africa. After all, if I screw up there, who's going to notice? Naturally, I screwed up. I saw something wrong and I decided to fix it.
Both of my proposals for OSCON were turned down, so I won't be able to make it this year. The BBC is also feeling the financial crunch, so international conferences are harder to manage. I'm not terribly disappointed, but it would have been nice to see my beloved Portland again. Fortunately, with my wedding in June, a number of my close friends from Portland will be in London. If you can't bring Ovid to Portland, bring Portland to Ovid.
On the plus side, I think this means I'll be able to attend YAPC::EU in Pisa. It will be n…
Here's a crontab entry to run "echo 'Hello World'" every five minutes:
0-59/5 * * * * echo Hello World
Here's the .plist (property list) file you should create in OS X to do the same thing:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.veure.test</string> <key>ProgramArguments</key> <array> <string>echo</string> <string>Hello, World</string> </array> <key>RunAtLoad</key> <true/> <key>StartInterval</key> <integer>300</integer> </dict> </plist>
Apple lists there reasons why this is a good thing, but I confess that it seems more trouble than it's worth.
While my Enterprise Perl cartoon may seem like a joke, it's not. It's a sad fact that for larger codebases, tests can take a long, long time to run. The one I used on the BBC PIPs project took an hour and twenty minutes to run when I left that team. The one I use on the BBC Dynamite project takes just over an hour to run. Adam Kennedy, on the Enterprise Perl post, reported his tests can take a couple of hours to run.
A lot of people wonder what they should name their tests. In fact, Steven Haryanto just asked about this, so I thought I would offer my perspective.
It's very interesting watching people use Test::Class. Usually, it's wrong. This isn't really a fault of Test::Class, though (well, not much), but rather, it's a fault of its documentation. It needs more.
I recently wrote about 100% Test Coverage. I was pointing out that in a personal project, I was working on increasing coverage and everywhere where there wasn't coverage, there were bugs. Here's the flip side: if it's covered, it doesn't mean its bug free. I've talked about this on my old use.perl blog, but it's worth repeating for new readers.
Here's a meeting from a previous company:
- Project manager: we've chosen a new ticketing system.
- Developers: which one?
- PM: I'm not telling you.
- Devs: What? Why not?
- PM: Because you're just going to argue about it.
I can actually understand the business person's frustration, but this was a recipe for disaster. It was a blatant example of what seems to happen all too often: the people who choose software are often not the people who use the software.
OK, you know how it works. Everybody who's really comfortable with testing often offers the following advice:
- Use Devel::Cover
- Don't strive for 100% coverage
This advice is absolutely correct, but misleading. It leaves you with an obvious question: what coverage do I want? This is where the danger lies.
In case you were wondering what Damian been's doing lately (and don't you dare say "Damian Who?" -- unless your name is Damian), he's been writing a series of articles for IBM Developer Works about the Vim editor.
- Scripting the Vim editor, Part 1: Variables, values, and expressions
- Scripting the Vim editor, Part 2: User-defined functions
- Scripting the Vim editor, Part 3: Built-in lists
- Scripting the Vim editor, Part 4: Dictionaries
- Scripting the Vim editor, Part 5: Event-driven scripting and automation
On an unrelated note, one of my brothers is a psychiatric nurse. He often has to deal with patients in the Conway Ward. Coincidence?
In Pre-commit hooks and breaking the build, I wrote a little wrapper around 'svn' to ensure that I could locally alter how it functions. However, I hard-coded the name to the actual executable. I should actually be doing the equivalent of $self->next::method to find the next executable in my path. So I wrote the following bash function to give this a try.
Based on an explanation from Aristotle which has worked for me, here's one way you can make blogs.perl.org work a bit better for you. I've approved these and they seem to be OK.
As you may know, anonymous commenters are getting "Text was entered wrong" errors. This is because of a currently undiagnosed error with ReCaptcha. To work around this:
- Log in
- Click "POST"
- On the next page, select "Comment" from the preferences menu
- At the top, where it says "Immediately approve comments from", make sure that "Trusted commenters only" is selected
- Further down where it says "E-mail Notification", select "On".
- Near the bottom where it says "CAPTCHA Provider", select "None"
- Now select "Registration" from the "Preferences" menu.
- For "Authentication Methods", make sure "Anonymous Comments" is checked.
Whenever someone posts to your blog, you should be emailed notification. If they're "not trusted", you'll have to approve their posts. When you do, you'll have the option to make them a trusted commenter and not have to approve their posts again.
Yeah, it's a little more work to do, but setting it up is a one-shot deal. As you mark more people as trusted, you'll have to approve fewer posts.
As an added bonus, under "Preferences -> Entry", you can select your default format (text formatting). I've just switched mine to Markdown. You can go to "Preferences -> Comment" to allow the same for comments.
One thing I love about git it how you have control over your local environment. Need a pre-commit hook? Just add the damned thing. Need it for Subversion and you're not the admin of the subversion server? Sucks to be you. Fortunately, having a reasonable command line lets you work around this. And I needed to because I broke the build. Twice. In a week. Buying the donuts for this would be slightly less annoying if it weren't for the fact that I get to "enjoy" low-calorie yoghurt bars instead. (Though I'm now below 82 kilos for the first time in a couple of decades).
So no more breaking the build. Right. On my previous team, if I needed a module, I could usually add it. On this team, it's a bit painful, so I just use what I need locally and then break the build when I forget and commit use Test::Most 'die';. So I wrote a little bash scrip to make svn less brain-dead.
I'm just aghast, but it's true. On April 11, 2006, the US Patent Office granted a patent for linked lists. It's mind-boggling.
The only thing conceivably unique? It's triply-linked, thus allowing multiple traversal orders. I'm confused. How is this different from a directed graph?