Notes from a Newbie 13: Create, Edit and Delete Blog Entries

Notes from a Newbie document the creation and deployment of yardbirdfanclub.org with Perl Catalyst on shared hosting. They are intended for a Perl Catalyst Newbie who would like to study the creation and deployment of a simple Perl Catalyst application.

Emacs (c)perl-mode for Python-oriented people?

In the middle of reading the surprisingly rather good blog post on a very old topic (hey, didn't know wordpress.com offers HTTPS URLs, nice), I wonder about whether people would think such a mode (or a minor mode for cperl-mode) would be interesting, or not too silly. (BTW why can't I stop doing parentheses?)

The mode's main task is to reduce visual "clutter" for people who has less tolerance for such.

  • Change the appearance of sigiled variables $foo into foo (that is, a space followed by an italicized/emboldened/underlined/differently-visually-marked foo).
  • Conceal or reduce the visibility of semicolons at the end of lines.
  • Reduce the visibility of block-delimiter braces (some challenge here, remember that braces has over 9 uses).

Adding "tags" to Test::Class::Moose

I've been thinking about the idea of adding optional "tags" to Test::Class::Moose, similar in concept to Mark Morgan's Test::Class::Filter::Tags. Here's an example of what that would look like:

sub test_get_profile : Tags(redis network) {
    ... tests go here
}

What could you do with that? Well, the other day our network went down at work. My test suite blocked because all of the tests which required a network would hang. With the above, I could do this:

Test::Class::Moose->new( exclude => 'network' )->runtests;

And have carried on with my work.

Or maybe you have tests that you know could run in parallel:

sub test_some_unit_test : Tags(parallel) {
    ... tests go here
}

Play Perl is a Startup

Yep.
I'm leaving my daily job at Yandex in 2 months to see how far I can take the concepts behind http://play-perl.org/.

I spent 7 years at Yandex, it's pretty much the only job I ever had.
I never participated in any startups.
I have no idea what I'm doing :)
But I really want to try.

Here are the slides I showed at Moscow.pm meetup today:
(I'm not sure how comprehensible they are without the talk, though.)

What this means for the Play Perl future:

  • Source code stays open (for now; I'm not making any promises, but don't see reasons to close it either.)
  • Service stays free. (I have several ideas about monetization. None of them include ads or require payments for the current functionality. And I promise none of them are evil.)
  • I have a big incentive to take this beyond the Perl community, to the other open source communities, at least. Maybe to non-programmer communities too. I'm planning to do this as soon as possible.

In the meantime, it's been 1.5 months since my last post, so here are some new features Play Perl got:

  • tags!
  • comment likes;
  • reward circle, displaying the number of points you're going to get on quest accomplishment;
  • "quest completed" modal box;
  • lots of frontend optimizations and other minor improvements.

App::Midgen, update notice + some colour

switched output format type from cfile to cpanfile

`midgen -f cpanfile'

thanks for the kick Miyagawa++

nb, if you have written an `.midgenrc' file suggest you either edit it or delete it and start again, opps.

What exactly is going on at Perlmonks?

I went back to Perlmonks for the first time in quite some time, and was greeted with by a poll titled "How many man-hours would you estimate you have invested in learning Perl?" - okay, could have been hours, not enough to make a big deal of, I'm trying not to make every interaction on the site about male privilege...aw, dammit:

None - I refuse to acknowledge the term man hours, you patriarchical pig. But I have many person-hours. And let me tell you...

Oh, COME ON.

This is going from microaggression ("man-hours") straight into pure jackassery. Straw feminists are just as much a stereotype as any other. Making jokes that require me to be complicit with a stereotyped view of the world really gets up my nose.

It sends the message that "we here at Perlmonks think this kind of thing is really funny and we don't care what you think. We especially don't care if you're the kind of person we're enjoying making fun of."

EplSite ETL 1.2 Released

EplSite ETL 1.2 Release Notes

Release date: 02 April 2013

Bug Fixes
- Catalog checking can be done against any fields.

Improvements
- Everything is saved in the sqlite database, from the external scripts until
reports, in this way if you backup or migrate your scripts, you only need to
copy the sqlite database EplSite.sqlite located in folder htdocs/eplsite/Storage/
- Better error handling, now there are logs for xref and catalogs.
- Log reports can use runnumber to display data.
- Better layout maintenance.
- Now you can use the field descriptions to insert the data into another table, see
sample 001.
- Better control panel, the most important scripts edition has been improved.

You can download from here:
https://sourceforge.net/projects/eplsiteetl

Enjoy it =)

Another strike against AUTOLOAD

When you're using Redis, you can issue the select index command to use a different database (think "namespace"). By default Redis provides you with 16 different databases numbered 0 to 15 (you can configure it for more). All keys and values will be separate from any other keys and values in other databases. So how do you know which database you're in? As it turns out, Redis doesn't offer a command for directly querying that information.

App::Midgen, now with cpanfile prereqs

More features

  1. cpanfile output format, prereqs (requires, recommends, on test, on develop)

    midgen -lf cfile

  2. Basic scanning of Dist-Zilla Plugins

here is a sample, with cpanfile and dist-zilla plugins, see wiki for more examples.

Hello World

Saved By Pinto

That title may remind you of a certain song by The Fixx.

Last week a new version of CPAN::Meta was shipped to CPAN. Unfortunately, it caused a test to fail in Module::Build. In turn, that set off a whole chain of downstream failures in hundreds of distributions that depend on Module::Build.

So if you were building up a complete application stack last week (like on Stackato or Heroku) and you were pulling the latest dependencies from CPAN, you were hosed. This sort of thing happens all the time, and when it bites you, it will be at the worst possible time.

Pinto also uses Module::Build. But those who were building it with the installer at http://getpinto.stratopan.com were completely insulated from the failure. This is because the installer pulls dependencies from a private repository. Unlike the public CPAN, that repository is stable and only changes when I decide to upgrade or add a dependency.

Fortunately, the problem with CPAN::Meta was short-lived. Dave Golden had released a fixed version only 23 hours later. But I think this perfectly demonstrates why you should lock down your dependencies with a tool like Carton or Pinto.

Perl and Perl Module Administration in the Modern Era

I recently gave a talk on perlbrew, cpanminus, and local::lib at $work. I've uploaded the talk to Speaker Deck

5 jQuery tutorials for budding Perlmeisters

Click keep reading to, errr, keep reading.

This is because I put the text of the entry in MT's 'Extended', and now I've just added this stuff to 'Body'.

Also, the 5th tut is on Autocomplete.

YAPC::Europe 2013 in Kiev, week minus 19

This week's newsletter

How to involve more Indians in the Perl community?

A few days ago I published some data on the distributions of visitors of the Perl Maven site and the people clicking on the links in Perl Weekly newsletter. (The number of visitors there is not that interesting.)

One intersting part of the data is that the 11.68% of the visitors of the Perl 5 Maven site are from India while they only generate 1.60% of the clicks in the Perl Weekly.

Why is the difference and what can be done with this information?

Is the module list useful?

Is the PAUSE module list (www.cpan.org/modules/00modlist.long.html) useful anymore? Do any cpan clients, or other tools, make use of it?

I've seen many users (via http://www.nntp.perl.org/group/perl.modules) isubmit their module for registration immediately after upload, so there seems to be an impression that it is a necessary step, despite the PAUSE documentation saying it's not (however it is quite vague as to *how* useful this measure actually is).

This list doesn't even seem to be up to date - e.g. I don't see my module Test::LWP::UserAgent in the list, despite registering it many months ago.

Chicago.PM - Dependency Injection (also: Beam::Wire)

At this month's Chicago.PM meeting, I gave a presentation on Dependency Injection and my new module, Beam::Wire.

[EDIT: The presentation doesn't appear to work on mobile devices. I'm trying deck.js, and I'm not sure I like it.]

Role::REST::Client and hash key randomization

Role::REST::Client is a small module to be used as a Moose role. It will enable your module to call REST services in a clean, transparent way. It was originally a part of Catalyst::Model::REST , and I guess that is still the main use case, but it can really be used in any module needing to call a REST service. To use it, all you have to do is

use Moose; 
with 'Role::REST::Client';

and you will be able to use ->get, ->post, and so on with Role::REST::Client handling the encoding, (de)serialization, etc of the call. Thanks to many contributions from Wallace Reis, Matt Phillips and Mark Stosberg it is very configurable and robust.

I've been getting error reports for some time, but a cursory glance through the code showed no faulty use of hashes. I've used all my ressources at $work, so I haven't had time to dig into this problem, until Сергей Романов (sergeyromanov) poked me with a pointy test case. The problem was easy to find, two parameters to ->new relying on their individual order.

Problem is fixed and uploaded to CPAN as Role::REST::Client 0.15

Bringing Old Modules Up To Modern Specification

While working on Pinto, I discovered that a fair number of distributions on CPAN have invalid or incomplete metadata. This makes it hard for the toolchain (Pinto especially) to fully utilize them.

Usually the offenses are pretty minor -- misspelled or missing keys in the META files, or a non-parsable version number. Some of us have probably made local patches of these distributions to fix those problems. But there's no reason everyone should have to do it.

So I had an idea -- what if there was a secondary public CPAN where folks could contribute patched versions of these older distributions? Read the rest of the story here:

https://github.com/Stratopan/Patchpan/blob/master/README.md

What does this PHP print?

Via this blog entry which I'm sure some of you have seen before, the following PHP prints "horse".

<?php
  $arg = 'T';                                                                                                                
  $vehicle = ( ( $arg == 'B' ) ? 'bus' :
               ( $arg == 'A' ) ? 'airplane' :
               ( $arg == 'T' ) ? 'train' :
               ( $arg == 'C' ) ? 'car' :
               ( $arg == 'H' ) ? 'horse' :
               'feet' );
  echo $vehicle;
?>

No fun shooting fish (or a horse) in a barrel, but wow. Just wow.

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.