Null Moose
It is operator carry on day in the Moose-Pen
Just a quick postette on adding in another operator to Driver::DBI. Today I am adding the 'Is Null' operator. First of course a set of tests to add into '32_where_operators.t' along this vain;It is operator carry on day in the Moose-Pen
Just a quick postette on adding in another operator to Driver::DBI. Today I am adding the 'Is Null' operator. First of course a set of tests to add into '32_where_operators.t' along this vain;Meta::Hack is about getting the core MetaCPAN team together for a few days to work on improving... well as much as possible! Last year we focused on deploying to a new infrastructure, with new version of Elasticsearch. This year was a much more varied set of things we wanted to achieve.
Whilst Olaf couldn't attend in person, we had him up on the big screen in
the ServerCentral (who kindly hosted us and bought us lunch) offices so it
was almost as good as him being physically there. Having us together meant
we could really support each other as questions arose.. a fun one was tracking
down that the string JSON::PP::Boolean, incorrectly identifies as is_bool
in JSON::PP - there is a pull request - though
that's not released yet. We also found bugs in our own code!

Why am I asking this? If you are not aware then I must tell you the much awaited London Perl Workshop is happening next Saturday, 25th Nov 2017. I am looking forward to the event. There are plenty of interesting talks arranged this time. Take a look at the list of talks. If you are planning to attend any particular talk, please register your interest as well. This will help the organiser in scheduling it.
There is one more reason I am excited about the event. I am giving my second talk at London Perl Workshop this year. I feel humbled to see so many people showing interest in my talk. The topic of my talk is "Create tube map in 20 minutes using Map::Tube". I will be taking the audience through various steps in creating a tube map. I promise at the end of talk, everyone in audience would be able create their own little map in no time.
As mentioned in the LPW "trailer" for shiny new toys, I will be giving a talk on graphql-perl. I promised to talk about introspecting a DBIx::Class schema to make a GraphQL interface. This is how!
The API for a "convert plugin" for graphql-perl is simple: implement a to_graphql, and optionally a from_graphql method. The to_graphql returns a hash-ref with three keys:
These are all the entities, apart from the specifics of an individual query/request, needed for GraphQL's execute to operate. The Mojolicious and Dancer2 plugins need only to be given which plugin to call, and any necessary arguments (e.g. a DBIx::Class::Schema object) and they can now create a GraphQL endpoint from that.
The newly-released v0.03 of GraphQL::Plugin::Convert::DBIC is the first functioning plugin. It implements generic CRUD for the given DBIC schema: it creates two types of Read (primary key, and "search" on fields), and Create, Update and Delete mutations.
It extend test helper day here in the Moose-pen.
Yesterday I managed to get the 'Between' operator to work but there was one little thing that was bugging my and that was I had some 40 lines of new code and only three new tests for the possible exception the 'Between' operator might generate. To boot the three new tests where an anti-pattern.
Now there is no problem with having anti-patterns in test code you just end up with many more lines in your than you need and they may be problematic to fix if they ever go wrong. Normally I would not bother to re-factor just three tests but I can see myself making many more 'Exception' tests for the other operators like 'IsNull' or 'In'. Thus, in this case I will fix that.
So given the basic test;Following a brain fart, I've had a dig around for AI related stuff in perl. I haven't found much currently active, except an interface library for an Apache project (which looks good). I've found very little in the sentiment analysis sphere. This is what I've found so far:
AI::Categorizer Not touched since 2007
AI::NeuralNet::Simple Not touched since 2005
AI::FANN Not touched since 2009
http://www.lwebzem.com/cgi-bin/courses/course_view.cgi?m=c1_m3_s3.html&uid=web Old!
AI::NeuralNet::BackProp Not touched since 2000
AI::Perceptron Not touched since 2003
And the live one:
AI::MXNet Live!
Interfaces to https://mxnet.incubator.apache.org/
Am I missing anything obvious?
One of the strengths of both Perl -- and our talk schedule -- is a diversity of ideas. We see this in the rich depth of Perl libraries on the CPAN, in the large variety of places Perl is deployed, and in the many ways people use Perl to make their lives easier.
This summary is brought to you by our Platinum Sponsor: Eligo. Eligo are a niche recruitment agency with a team of dedicated Perl Consultants, who specialise in and have experience in recruiting Perl Specialists across a wide range of sectors and roles in the UK and beyond.
Perl and the Operating System
Lacey Powers -- better known as Perl's resident Postgres badass -- gives us a tour of "Debian Tips and Tricks", showing us that Debian is a fantastic platform for running your applications, Perl or otherwise, on. The talk will cover some of her favorite tips and tricks to make your life using and administering Debian easier. Debian goodies, unattended upgrades, molly guard, useful non-Debian project repositories, and many others will be covered.
Hey everyone,
Following is the p5p (Perl 5 Porters) mailing list summary for the past week and a half.
Enjoy!
Its advance my code day here in the Moose-Pen.
Seems I have hit a milestone in the Database::Accessor/Driver::DBI project I have completed all the easy stuff and I am moving over to the more complicated or at least ignored till now parts.
I decided to work on some of the more advance operators found in conditional statements namely 'Between', 'In', 'Not In', 'Like', 'Is Null' and 'Is Not Null'. Now one problem with these six operators is they are very SQLish, epically the 'Like' operator, and despite me trying to come up with a more generic set of operator names just looked too MongoDB specific. I wonder if one of the devlopers of MongoDB had the same problem to solve?
To start off I created a new test case '32_where_operators.t' that is basically a clone of '30_where_basic.t' but I stripped out all the tests and to start I will try this one;Hello all,
With micro-services and cloud being a buzzwords of the day it's no surprise that a market for messaging systems is pretty busy at the moment.
One such system (NATS and persistent version NATS Streaming) seems to be a leader among relatively new arrivals. If interested please read more on it at its official page nats.io.
There's a lot of clients for original NATS already exist on the market, including one for Perl,
Net::NATS::Client, though without support for recently added NATS Streaming. I did not think that was optimal and wrote one.
The purpose of this blog post is the announcement of new Perl Client for NATS streaming I just uploaded to CPAN and github Net::NATS::Streaming::Client.
From the README.
Net::NATS::Streaming::Client - A Perl client for the NATS Streaming messaging system.
If you publish code to CPAN, you've probably noticed the steady improvement in its entire ecosystem over the last couple of years. ++Neil Bowers and ++the meta::cpan core hackers in particular have laboured tirelessly to improve the release process for authors and the user experience for consumers of CPAN code.
One of the things that's most useful as an author is the CPANTS Kwalitee ratings generated for any release to CPAN. The Kwalitee ranking markers are continuously being improved and added to, and I recently updated my build config to follow some recommendations the system gave me.
I use Dist::Zilla for publishing to CPAN, and I was able to address all the recommendations using Dist::Zilla plugins. Here are the newly added configs in my dist.ini:
I am now going to talk about my perl 5 code repository, it is located at http://github.com/theholyghost
There is a module HollyGame which is about the fastest game kit for adventures/RPGs and so on by using everything in lists, e.g. enemies, sprites lists which are updated every game loop and a image resource indexer which gets you the next image also from a list of images. It was primarily developed on FreeBSD, which is why they didn't include it in CPAN.
If you like Linux more then there is a HollyGameRPGAI which uses a Gauss formula of the Gauss Support Vector Machine to wander around enemies or other non-player characters.
To show the "power" of HollyGame there are examples in that same directory which use it with an SDL 1.2 layer (SDL on CPAN), there is also a Wycadia and Ultima 8 perl game start which I am further working on. The Ultima 8 program has a system for walking around in low levels of platforms inside the OctTree.pm file. Each hashed level contains intersected objects with that width, height and depth instead of a usual octtree using contained items.
Enjoy!
It is more order code day here in the Moose-Pen
Yesterday I left off with the choice of either a change to do to my tests or a change to my code to solve this error;
# Expected SQL-> ORDER BY people.last_name, people.first_name
# Generated SQL-> ORDER BY people.last_name ASC, people.first_name ASC
Now this comes from how how I define the 'order' attribute in the 'Database::Accessor::Roles::Element' role;
has order => (
is => 'rw',
isa => 'SQLOrder',
default => Database::Accessor::Constants::ASC,
);
You may not have noticed, but the London Perl Workshop is happening later this month (Saturday 25th November). It's a free-to-attend community event: organised by members of the community, for the community, and made possible by sponsorship from companies in our community.
Reinforcing the community theme, we're trying an experiment this year: crowd-sourcing bakes from attendees for one of the coffee breaks. If you're an experienced baker, an occasional dabbler (like myself), or even a complete neophyte looking for a reason to start, why not give it a go?
Who doesn't like shiny things? I love shiny things. The London Perl Workshop loves shiny things. CV-Library, this post's sponsor, loves shiny things. So if you come to the London Perl Workshop, Nov 25th, you'll learn about some shiny things.
![]()
This summary is brought to you by one of our sponsors: CV-Library. CV-Library is the UK's leading independent job board, developed in Perl and is hiring developers in its London and Fleet offices. CV-Library's technical director is also one of this year's organisers!
Shiny New Toys
The inimitable Ed J (mohawk) will be talking about his sterling progress in developing "GraphQL in Perl: The Story So Far". GraphQL is the Next Big Thing in implementing APIs, maybe even a successor to REST. Ed has ported the JavaScript reference implementation to Perl, plus written plugins for Dancer 2 and Mojolicious to make it trivial to add a GraphQL endpoint to your web application. He'll also talking about exposing DBIx::Class schemas -- and, more generally, Moose classes -- via GraphQL using introspection.
It take back my words day here in the Moose-Pen
I have to adjust how the SQL is produced yet again. Today I was playing about with the '60_order_by.t' tast case of Driver::DBI and had it all nicely set up and on my first run I was getting errors like this;
# Expected SQL--> INSERT INTO people ( first_name, last_name ) VALUES( ?, ? )
# Generated SQL-> INSERT INTO people ( first_name, last_name ) VALUES( ?, ? )
ORDER BY people.last_name, people.first_name
and even this
# Expected SQL--> DELETE FROM people
# Generated SQL-> DELETE FROM people
ORDER BY people.last_name, people.first_name
This all stems from this
postI would like to announce the first release of Inline::F2003. The project features the program "matopmul.pl", which performs a matrix multiplication calculation, to showcase the use of Inline::F2003.
The project's URL is: https://sourceforge.net/projects/inline-f2003/
Inline::F2003 is a Perl extension module that allows program units written in modern FORTRAN to be added into the "__DATA__" section of a Perl program. The term "program units" is a collective FORTRAN term that refers to subroutines, functions, and module procedures. The module reads the FORTRAN source code, compiles it into object files, and builds a single shared library file.
Yesterday was time change in the U. S. of A. I pulled out my iPod Touch to update a Numbers spreadsheet, and hit the "today" button to put the current date in the date column. But when I did that I got not the current date but 11 PM the previous day. Today it works as advertised.
Now, I am not privy to the internals here, but this behavior would be explained if "today" were implemented by the Objective C (or Swift, or whatever) equivalent of the following Perl:
my $date = time + $zone_offset; $date -= $date % 86400;
There's more to Perl than perl. There are Perl people, there's a smattering of Perl philosophy, and there are many other peculiarities on the Perl periphery. This year's London Perl Workshop will have some great talks on Perl-y subjects that don't just focus on the language itself!
This summary is brought to you by one of our sponsors: Adzuna, a search engine for job ads used by over 7 million visitors per month that aims to list every job, everywhere, proudly built in Perl.
Human Perl
Julien Fiegehenn (simbabque) will tell us how he "[Turns] humans into developers with Perl" -- his methodology for teaching apprentice software developers. He often works with young trainees who start their professional careers with very little to no prior tech knowledge and will cover the social aspects of being a mentor and show process examples that help with long-term motivation.
blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.