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.
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!
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.
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.
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
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.
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.
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
rather than being shuffled over way in the back with the Dutch
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.
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.
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.
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 :)
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:
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?
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.
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 (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.
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?
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: