Just Call Me Lucky

It seems I lucked out big time with my last post it turns out I was a little mistaken on how 'MooseX::AuthorizedMethods' works.

As you see I ran into this problem today

 

Can't locate object method "user" via package 'Product::Move at C:/Dwimperl/perl/site/lib/MooseX/Meta/Method/Authorized/CheckRoles.pm line 13.
...

That is very odd I thought as it was the same sort of code I used the other day

The Hidden Benefit of Data-Driven Programming

Often we hear people talk about making your programming more "data-driven". When you can convert procedural code to a data structure (generally with a small procedural driver), instead of replicating procedural code, you just add another entry to your data structure. This is great with dispatch tables, repetitive chunks of code and state machines. However, there is a hidden benefit of it which will not only make you a better programmer, but it will make later maintenance programmers fail to notice a common flaw that your code lacks. They'll curse you if you have the flaw, but if you don't have it, they'll find that data-driven sections of your code are so easy to work with that they won't even think about it.

Grants Committee May Schedule

May round schedule will be similar to the March round, with several changes as below.

  • Longer period to solicit community feedback
  • Longer voting period
  • Shorter CFP period

In the long run, CFP period should be shortened further as every round will look the same and preparation can be done beforehand. Or even easier, we may always keep the CFP open and evaluate the applications every two months.

Here is the May schedule:

  • May 1: CFP opens
  • May 10: CFP closes
  • May 11: Solicit public feedback
  • May 22: Voting
  • May 31: Announcement of the results

CFP will be posted at news.perlfoundation.org.

Statistics for perl hash tables

The following data is from a 64bit perl-5.19.10 (i.e. 32 bit jenkins - corrected from 64 bit siphash - which randomly shuffles the 2 first entries of collisions), running the core test suite with -DH.

number of hash keys:

You Can't Get there From Here

My last few posts you may of noticed I have been using Moose with a more professional end in mind rather than my usual playing about with AD&D so I figured I might as well keep going on with it a bit as these are real world (well at least my world) situations rather than contrived gaming stuff. As well my latest round of work is a great source of posts.

Well on the platter today is 'MooseX::AuthorizedMethods' char broiled au jus with in season mixed vegetables with Gorau Glas served on the side.

So this module really doesn't do a whole lot it simply add a little more sugar to your Moose stew, by exporting the "authorized" declarator so now you can stop the invocation of a method if the invoker does not have a specific role.

Announcing App::Midgen v0.32

So what’s new?

  • Follow the meta-2 phase-requirements naming.
  • The ablity to recast phase-requirements.

Plus theres more

  • App::Midgen v0.30 which was a refactor to support Perl 5.8.x

A Couple of other blogs that now make sense to share with you

for the rest of the blog go here

Any comments leave them here.

Perl Encryption Primer: Presentation for Madison Perl Mongers, 2014/04/08

Some ideas for improving the community - The ANA initiative

The following is posted on behalf of Roman Filippov and Al Newkirk, kindly share your thoughts on the mentioned points.

I would like to propose the following items for discussion, in no particular order. This is just a brain dump of the ideas I have been thinking for a while now.

A Little Moose Help

Well I was busily writing some tests for a large processor interface where you would pass an object too it and it will merrily process away on it. Well all of the object I was passing into it are written in Moose and I did not need to test the 'State' or 'values' of these object, what I needed to tests where some of the lower-level admin functions in the interface, that really had nothing to do with the objects themselves more about reading config files connecting and alike.

The problem I was having was to test the 'Interface' I had to give it a valid 'object' as that was a 'required' attribute. That I could live with it was all the objects I was was going to pass into it needed to be instancates and they all had a large number of 'required' attributes as well.

Why Companies Turn Me Down For Contracts

My current contract is lovely. I'm having a lot of fun and the environment is awesome. However, it's a short contract. I took it, in part, because it was a problem space I wanted to do more work in. Because it's a short contract I'm already working on negotiating my next contract (a perpetual hobby for freelancers), but I thought I'd experiment with a different approach: asking you to reach out to me. If you think I can help your company and you're not in a position to hire me directly, go to those who are and talk to them. If you want to hire me or one of the talented developers who works with me, drop me a line (I can't guarantee that I'm available, but you never know). If this approach works, I can do more work on open source or Veure instead of spending all of my "between" time negotiating contracts.

That being said, I don't always get contracts I negotiate for and sometimes I turn them down. However, if you're an individual considering freelancing, I thought it worth discussing some of the obstacles I've faced.

Dear Perl lazyweb: how to construct read-only data objects out of JSON?

I recently updated a client called WebService::Geocodio for the Geocod.io geocoding service. Traditionally, geocoding means turning a mailing address into latitude/longitude coordinates (or the reverse operation, turning latitude/longitude into a mailing address.)

In a recent update of the upstream service they included the ability to fetch additional data fields including timezone, congressional district, school district and so forth. Is there a good CPAN module (or a recommendation) to take a Perl data structure like a hash and turn it into a Moo(::Lax) object "automagically?" I had a look but I didn't find anything especially suitable.

These data structures are purely informational in nature and just have getters for their attribute names. This would be less difficult to accomplish using Moose (obviously) but I'm wondering if there are any suggestions for something that installs getters for hash keys dynamically and is Moo-friendly.

Thanks!

\r, \n, and ... \R ?

It's common knowledge that on Windows, a line of text generally ends with a \r\n characters sequence, and on a POSIX system a line of text will end with \n.

Less well known is Perl's support for the escape sequence '\R'.

What's \R?

It's definitely not the inverse of \r.

It's a pattern (so for now its only useful in regexes) that matches Unicode's TR-13, The Unicode Consortium's guidelines for what counts as a newline. It's useful in a regular expression to match \r, \n, \r\n, or a few other character sequences that are used to represent newlines, so you don't have to remember them. It's worth noting that it is a character sequence, not a character, so it doesn't really make sense in a bracketed character class.

Over Stuffed Moose

Sometimes being both newbie and a keener can be a dangerous combination. Well today I sort of fell into that trap.

Well I started doing the first refactoring of my Moose classes (not for AD&D this time this is some real world code) I was working with. So I wanted to move all the common bits into a single role then create a few 'base' classes that comsume that base roles and add some other sutff. Finally I was going to 'extend' these classes with some default values and then polish them by adding a few roles to customize the end product.

So like this

Custom DBIx::Class ResultSets

On my personal blog I wrote about Veure, an MMORPG that I'm writing in Perl. I followed that up with a post about the roadmap to an invite-only alpha. It's a lot of work, but my company has now decided to commit to it and figure out how to finance the work. This browser game is huge in intended scope, but fortunately, Perl has given me the power to get much of it done quickly. In fact, according to my private Veure github repo, I now have 17% of the ALPHA tasks done. That's up from 0% when I posted the roadmap a little over a week ago. In short, progress is fast.

Currently I'm working on character combat and that's where custom DBIx::Class resultsets have made my life easier.

List of Running Grants

We maintain a list of the running/completed grants at www.perlfoundation.org.

Looking at the running grants list, there's one thing I can clearly say: We need more grants!

In the next few blog entries, I'd like to discuss the efforts we made and we will make so that the grants program is more useful for the community.

Help needed fixing links leading to CPAN

Do you have a few minutes? Please help fixing links leading to CPAN.

Omnia illa, Quae Exspectant

Or to put in other words if you hang around long enough things will change. Well I actually did not have to wait very long at all about a month only. You may remember this post where I was recursively digging in to a directory of code to pre-load a number of Moose classes.

Well I had a solution to fix this problem


Can't locate object method "new_object" via package "Moose::Meta::Role" at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/Moose/Object.pm line 27.

when I was trying to invoke 'new' on a role. My rather quick and dirty solution;


  	return
		unless($a_class->can('blessed') and $a_class->can('new') );	

Carrying (mini)CPAN

Thanks to minicpan, I keep a local copy of the latest versions hosted on CPAN. Running minicpan weekly, I keep it up to date. My .minicpanrc file:
local: /home/netbook/minicpan/miniCPAN_20140405/
remote: http://your.favorite.cpan.mirror/
also_mirror: indices/ls-lR.gz
Now, I want to carry my local minicpan keeping it on a memory stick. Changing .minicpanrc to:
local: /media/USB16GB/miniCPAN_20140405/
remote: file://home/netbook/minicpan/miniCPAN_20140405/
also_mirror: indices/ls-lR.gz

GitPrep 1.6 is released - Time zone support, Charset support, and improvement of markdown

I released GitPrep 1.6. You can install portable GitHub system into Unix / Linux easily. It is second major release.

Because you can install GitPrep into your own server, you can create users and repositories without limit. You can use GitPrep freely because GitPrep is free software. You can also install GitPrep into shared rental server.

GitPrep (Document and Repository)

Features added in 1.6 are:

-Time zone support
-Charset support
-Improvement of markdown

1.6 support time zone. You can specify time zone in config file. and support multiple charset. If you specify charset suspecting order in config file, you can see files which contains multiple charsets. Markdown syntax is improved, and support fence code syntax.

Let's use usufully.

Example

You can try GitPrep example.

GitPrep Example

Download

Download

Document

GitPrep Document and Repositry

Grant votes: New announcement format

The Grants Committee has completed the first round of this year. It was my first one as the committee Secretary too. I learned a number of lessons but overall it was smooth thanks to the help from the committee and the community.

As you may have noticed, we have disclosed the voting results in a more detailed way. The motivation is to add more transparency in the process. I hope this will add clarity on what we want to support and what we don't want to use the community resources on.

The voting result of this round consists of the two factors:

  • The number of Yes/No votes
  • The total score given to Yes votes

For each grant proposal, the committee members are required to say:

  • Yes, No, or Abstain
  • Score from 1 (lowest) to 5 (highest) if they vote Yes

Here is the actual statement from our rules:

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.