Enter MooseX, III Now Lets see whats up.

So I have the latest Kwalitee results from my latest changes and I have improved a little now at 96.88 up from my 84.83 and only one Core fail

package version matches dist version

Still haven't got that right but at leas my README.pod is acceptable to CPANTS.

So a quick look and yikes I guess I fixed the Dist::Zilla ini file

name = MooseX-AuthorizedMethodRoles
version = 0.00.02
author = John Scoles
license = GPL_1


but did not fix the main module

The Captain Is Dead

Last year at YAPC::NA a few dozen of you helped me play test a new board game I was working on called The Captain Is Dead. Well actually back then it was still called Bridge Command. Almost universally you asked me to let you know when the game was ready so you could buy a copy. I'm here to let you know that the game has officially launched on Kickstarter.

tcid-300x500.jpg

I'd also like to give a shout out to Tony Cook, the maintainer of Imager. Nearly all of the graphic design work done in the game was rendered using Perl and Imager. It made running the hundreds of variations of the game over the past year a snap. Thank you Tony!

Google misleads users

RT #96394 in a nuthsell:
user searched for Perl CPAN PayPal, Google led to
Business-PayPal-0.03 on search.cpan.org which pointed the user
to "Latest Release: Business-PayPal-0.04" which he missed and thus opened the ticket.

In fact, as of this writing, the latest release is is 0.13, but who cares if you make sure only the stable, version-independent link is indexable by Google.

Automating Stratopan Releases with Dist::Zilla

I recently started using Jeffrey Thalhammer's excellent Stratopan to manage CPAN dependencies for a new Perl project. I had played a little with Stratopan before, but now that I'm starting to get some use out of it, I am even more impressed with Jeffrey's work.

Stratopan allows you to create your own CPAN-like site in the cloud, which you can use to maintain a stable basket of dependencies for your project. You won't have to worry about new versions of distributions sneaking onto your private CPAN and breaking your stuff. Even better, you can upload your own, private CPAN-like distributions, and now you have the entire CPAN toolchain available to manage your internal codebase.

Read more at my blog: Automating Stratopan Releases with Perl's Dist::Zilla

Enter MooseX, II Now Lets Clean Things Up.

Well after my excitement of the release this week after fixing a few obvious pod bugs and cleaning up the repository, I was going to take a look at the Kwalitee page and clean what it tells me.

So the first thing to look at is the Core Metrics and the first on my hit list is

has readme

So I guess my Dist::Zilla did not pick up that file as I do remeber creating a bad one but I will create a better on just in case. Now what I have seen in the past is to just use to POD as the readme so I will do that and to make it complete I will add in a a little install section into the pod.

However before I go and do that I think I will look at the section lower down

no pod errors

Sick of being mocked by unit tests

Back in 2002, the company I worked for had a valuable client with a terrible problem: seems the developer of their POS (point of sale, or "cash register") system sent them a bill for their license: five year's worth. The company disputed the bill and the developer informed them that their POS system would be remotely disabled in 23 days. So our client contacted us and the owner informed a colleague and myself that we had just over three weeks to develop a POS for the client. Never mind that neither of us had any experience with swiped credit cards, or bar code readers, or cash registers, or, or, or ...

This is the story of how I learned to loathe unit tests.

search.cpan.org

Where oh where can my search.cpan.org be?

Dynamic Web-Based Student Management (thesis abstract)

For a post-graduate project in university, I developed a prototype web-based student information exchange system using Linux, Perl, it's associated modules, Ajax and SQLite. At my university, there was a bit of inefficiency in the exchange of student information which I set out to prove could be alleviated with a tailored minimalist web application written in Perl. This was achieved using the Catalyst framework and it's AutoCRUD plugin, written by Oliver Gorwits, for performing CRUD (create, read, update, delete) functions on most modern databases. I'd also like to thank Mr. Gorwits and Dr. Damian Conway for taking time to review the thesis.

The following is an abstract of the final thesis. Following posts will describe the steps followed in developing the prototype as well as code snippets.

ABSTRACT

Enter MooseX, The First, I made it

Well I am happy to say my first MooseX module MooseX::AuthorizedMethodRoles is now happily up on CPAN and awaiting global usage by the entire Nation of Perl.

Well maybe not, I have found a use for it and maybe some one else will someday we will see what comes of it,

Now that I am a proud MooseX authour I wonder if I get to wear a funny hat of special badge or maybe at the next YAPC EU conference at the big dinner I will be asked to sit at the cool kids table

Draughtsman Meal.jpg

rather than being shuffled over way in the back with the Dutch

dsc_7923.jpg

Anyway I digress from today's task that is to see it there is anything wrong with my MooseX that I or Dist::Zilla did not pick up.

Catalyst Development Summary

Hey All,

I've recently blogged about things we're doing with Catalyst. IF you are a Catalyst developer or just interested here's the post: http://jjnapiorkowski.typepad.com/modern-perl/2014/06/catalyst-development-and-stable-releases-current-summary.html

Looking for BTROTT

Benjamin Trott has 20 modules published on CPAN right now. Sadly, none of them saw a release in past 3 years. Following Neil's crusade to a better CPAN, I decided to adopt one module (for a start). As part of the process I need to articulate this intention in some high traffic place, as suggested by brian d foy (one of many PAUSE admins). Hence this post. Maybe it will find Ben.

PS: you can watch (and like!) this little endeavor of mine on Questhub.

UPD: Ben had responded to this call and now I'm a co-maintainer of Crypt::OpenPGP.

Pagination done the PostgreSQL way done the DBIx::Class way

Recently, I read Pagination Done the Postgresql Way. The premise is that offset/limit combined with a date index gets slower as you page, but if you page in a way where you are always selecting by date then you will be using the index properly.

A simple example would be a table with an entry per day and a date index. Asking for Tuesday would use the date index more effectively than asking for the 3rd entry of the table sorted ascending, so you could page by just asking for an entry with a date greater than the previous one you pulled limit 1.

Example in perl using DBIx::Class: ( gist )

Entering MooseX, XXVIII Its on its way!

Well I am finally there after what almost a month of plucking away at it I am going to do the release.

Well I did go with Dist::Zilla and after a quick 'dzil smoke' I did a 'dzil build' and I am ready to send it off.

Well after the usual looking for my Pause password and having it reset yet again (I must hold a record for that) I was finally able to send my MooseX up to PAUSE


Add a file for BYTEROCK
File successfully copied to '/home/ftp/incoming/MooseX-AuthorizedMethodRoles-0.001.tar.gz'

So now I just have to hang around and see how many bugs are reported :)

git blame across the entire codebase

A few years ago, a script showed up on the git mailing list that would effectively run "git blame" across the entire tree, and aggregate the line counts by author. Here's the first 50 authors as of commit 86714aaae213175ea8c716ad22c1e10300d5bf61:

playing with Cairo

I was recently reading a brilliant post A first-person engine in 265 lines by Hunter Loftis, and instantly wanted to port it to Perl. After doing half of work, though, I figured out that the original code uses alpha blending technique to achieve wall shading, rain, and drawing images with 8-bit transparency channel.

I've used Prima to write the port, even though it doesn't support alpha channel, because native x11 API doesn't do that. Googling led me to XRender that can do the stuff, but that sounded too heavy. However Cairo (which is also used by firefox to implement Canvas rendering) is exactly the tool for the job. So I needed to spend some days creating a bridge between Prima and Cairo, and here it is on github.

The programming itself went unexpectedly smooth, because of the Cairo's API design quality .. Unfortunately the perl demo resulted to be very slow, because perl's own speed - profiling shows that pure-perl calculations eat the biggest part of speed. The next biggest CPU eater is a set of calls to Cairo that draw rain drops - each drop requires two calls, $cairo->rectangle(..) and $cairo->fill and that is also expensive.

So I wonder if there can be done something to it. Any ideas?

Granada Perl Workshop

Less than three weeks remain for the Granada Perl Workshop that will take place on the Friday 27th of June in Granada (Spain).

The good news is that, thanks to our sponsors, finally, the event will be completely free.

Even if the workshop is a one-day event, most of the attendes are going to stay there for the full week-end in order to visit the beautiful city, socialize, and have long conversations about Perl, and well, probably anything.

So, you are still on time to get a sit on one of those cheap flights leaving from almost any european airport to the beach destinations in the south of Spain and be our guest. Also, in case you would like to give a talk, the call for speakers will still be open until thursday.

Entering MooseX, XXVII It is all in the Git

Well actually my blog tonight is not on MooseX, Moose or even Perl but it is part of this little project of mine and I figure it is good for a single post.

Well today I started to play with the latest and greatest version of the Github for Windows so those of you who don't care about such things you can go back to you linux command line and not bother to read any further.

Well I have used GitHub (painfully) for a few years now, started with a few command line stuff but never worked quite right for me but things improved when I installed tortoisegit as I was familiar with the original tortoisesvn so the transition over was not that painful.

So I did become some-what more productive but when Github started to do inline editing I found I was doing most of my work inline.

Dezi 0.3.0 released

Dezi 0.3.0 (the Moose release) was just pushed to CPAN, along with its dependencies:

  • Search::OpenSearch 0.400
  • Search::OpenSearch::Engine::Lucy 0.300
  • Search::OpenSearch::Server 0.300

Many thanks to all the testers and to those who have encouraged me on this rewrite. I've enjoyed using and learning all the Moose and Moo and Type::Tiny libraries involved.

Etsy's skyline port to perl

First, skyline is an anomaly detection tool published by Etsy. It use numpy/scipy to implement 9 detection algorithms. You can find it at http://github.com/etsy/skyline.git

I have heard PDL for a long time, and then I thought: maybe I can re-implement those algorithms using PDL? This must be the best way to learn PDL!

Now, I got it done.

I should say that PDL is not so easy to write as numpy. For example: you must write '$p->index($p->nelem - 1)' to just get the last one of an array! In numpy, the numpy object has methods almost totally like original object. But in PDL, we didn't get these easily things...you can't write '$p->[-1]' or even '$p->index(-1)'!tks, I change this to '$p->at(-1)' now.

BTW, I didn't find any K-S test implement at CPAN(well, except Statisic::R),so I use S-W test instead. S-W test is better when the length of array is less than 5000. I think the check values in latest one hour should be less than this, yes?

Cleaning up your DarkPAN

In a previous entry I blogged about creating your own DarkPAN. This is convenient when you're offline as you can still use 'cpanm' to install your modules and dependencies.

Now of course, if you're a diligent CPAN author (or a lazy worker finding ways to goof off and do busy work by writing and releasing CPAN modules), your DarkPAN will add up and need cleaning from time to time.

To delete older releases, I use this script. Just give it the path to your DarkPAN as an argument. After that you'll need to reindex your DarkPAN (I use orepan_index.pl from OrePAN, OrePAN2 is much slower).

To find distributions that have been deleted from CPAN but still linger in my DarkPAN, I cobbled up something like this:

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.