perlancar's 2014 Advent Calendar
About the series: Introduction to a selection of 24 modules which I first published in 2014. These exclude modules which I have blogged before.
Table of contents:About the series: Introduction to a selection of 24 modules which I first published in 2014. These exclude modules which I have blogged before.
Table of contents:I was looking through the code of the Rakudo implementation of Perl6 where I noticed that it defines pi as my constant pi = 3.14159_26535_89793_238e0;
( with an alias my constant π := pi;
)
I immediately remembered that for a subset of fractional numbers Perl6 has a type that stores them without the loss of precision that generally accompanies floating point math. That type is of course the Rat (and FatRat) type. So of course I type pi.Rat
into the REPL, it then prints 3.141593
which is obviously nowhere near as precise as the result of just typing pi
into the REPL 3.14159265358979
.
I wanted to see the numerator and denominator values that Perl chose to use so I typed pi.Rat.perl
and got <355/113>
, which is nowhere near as precise as the Rat type is capable of handling. That was just the entrance to the rabbit hole.
I am in the process of authoring a talk for Sydney PM as an intro to HTML::FormFu (via Catalyst). The draft of which follows, to which I would welcome feedback and suggestions.
Web frameworks like Catalyst, Mojolicious & Dancer take care of repetitive things in web app development such as:
Whats missing is form generation and validation.
It's very rare not to have form's in any software - business applications have lots of them.
They are very boring and repetitive, prone to mistakes and bugs as a result.
Data types are frequenly the same things: names, addresses, emails, phone numbers, etc.
My adventure in shell tab completion continues. (A bit of background: I got interested in tab completion around two years ago when I realized that it is a significant UX element, if not one of the most important ones, in a CLI environment. Since then I've created, among other things, a couple of command-line frameworks that make it easy to do custom tab completion in Perl, as well as a bunch of modules in Complete::* namespace for generic completion which can be used in other environments like GUI and web).
This week, I added tab completion support to my frameworks for several other shells other than bash: tcsh, zsh, and fish. This blog is an observation of the different ways of doing programmable tab completion in those shells, especially from the viewpoint of a programmer who wants to do it using Perl (or other programming languages) instead of using built-in shell functions.
Today, from Freenode's #perl6:
01:41 < zzzzzzzzzz> Is there no site that gives a current status of Perl6 work that a non-guru could follow? 01:42 < zzzzzzzzzz> Most of the hits under https://duckduckgo.com/?q=current+state+of+Perl6 are ca. 2010 and even http://perl6.org/compilers/features is close to two months old. ... 01:47 < zzzzzzzzzz> That's the impression I get but I have a hard time getting much farther than that. For example, "what exactly do I download to start learning, and why those bits instead of other bits?" ... 01:52 < zzzzzzzzzz> Whichever. A site that took a snapshot of the state every quarter or two would make it a lot easier for relative noobs to get up to speed and start learning things.
This is a feeling I've shared for a while. Working out where Perl 6 is takes a bit of archeology, trying to figure out what the Compiler Feature matrix means.
Anyway, I've taken a stab at trying to create a very short, simple, regularly updated set of answers: http://perl6.guide/, hopefully accessible to Perl 5 developers and random other developers. It's on Github (there's a link in there), so if you think I've gotten something wrong, or want to update it, please send me a pull request.
This month has been quite a busy one for me, so I haven't had much chance to work on my (in-progress) book. However, I have had some time to start work on a short talk for London Perl Workshop 2014 which will cover some of the OO best practices followed in the book. (At the time of writing, I've not yet heard whether the talk has been accepted/scheduled.)
A week ago I mentioned that I've started to create a clone of search.cpan.org using the MetaCPAN API as back-end. I've also promised to record a series of screencasts explaining the process. Something, that can be very useful if you need to rewrite an application and you can't read the source-code.
So myself and I think most of the Perl world missed an important date on October 12th
Well that day marked the first release of DBI to CPAN.
It is hard to judge how much an impact this hunk of code has had on dare I say it the world. IMHO it was the first killer app for the web and still with us today being actively developed and improved on and has kept its place just quietly sitting in the background doing its job.
If I sit back and think of 20 years ago I had just upgraded to a 12k modem from a 1.2k, browsed the internet, (If you could call it that) with text browser, Netscape was only release 1 day later, (By the way it too me 19+ hours to download it) a few week later one used something call web-crawler
Boilerplate is everything I hate about programming:
In an effort to reduce some of my boilerplate, I wrote
Import::Base a module to collect and
import useful bundles of modules, removing the need for long lists of use ...
lines everywhere.
Just finished up week #1 of the TPF Grant for Inline Modules with DAVIDO++. We've been having a blast, making great progress, all while trying to push the boundaries of open/public/televised/pair/perl programming!
Here's our weekly status report (using our new homemade blogging system (thinking about you, Tony Bowden!)): http://inline.ouistreet.com/
We'll be writing up a report each Saturday, just in time for Gabor's http://perlweekly.com/
Stop by #inline on irc.perl.org and say HAI, if you are so inclined.
Does anybody know Brent B. Powers, the author of (amongst others) Tk::FileDialog and Tk::Waitbox?
I tried to contact the author my e-mail but every address I tried returned an error like undeliverable or unknown user etc.
I have started to write an open source clone of search.cpan.org. In case you are interested, see more details and links in that article. It is currently hosted here. The front-page is already there, but of course most of the parts don't work yet.
Unfortunately I have managed to release strawberry-perl-5.20.1.1-32bit.msi and strawberry-perl-5.20.1.1-64bit.msi files with wrong MSI signature. The installer will very likely complain about revoked certificate (although I do not know why my laptop have not complained when I tested these MSI).
I am sorry for any inconvenience this might caused you.
The trouble is that although I have sent scanned copy of my passport to Certum CA approx. a year ago they claim that they do not have it. Unfortunately the reminder they sent me was probably "swallowed" by cpan.org's spam filter and they simply revoked my certificate. I have submitted a new request for code signing certificate, unfortunately cpan.org's spam filter struck again and block an e-mail with verification URL I have to click on.
I am tired of dealing with Certum CA and I am fed up with cpan.org's spam filter, therefore I am considering to stop signing MSI packages.
It's been over a week now since the Austrian Perl Workshop of 2014. It took place in Salzburg for the second consecutive year. On Thursday, the day before the conference started, Mozart's home town greeted the attendants with glorious summer weather and amazing 26 degrees Celsius.
This news is a couple of weeks old now, but the Inline-for-XS-Modules TPF Grant Proposal was accepted! A big Thank You to the Perl Community and the TPF.
David and I have just returned from vacations and we started work on the project today. Our first order of business was to create this web site, to which we will be posting regular updates on our progress, and other interesting information about the project.
After breaking the build twice in the space of a week for more or less the same reason each time, I figured that my team needed a continuous integration rig, and we needed it now.
For web application stuff it's not that unusual to have tests that collide with each other, at least in the short term due to the conflict between the need to "do it right' and the need to "do it now". And generally it's desirable to run your test suite in parallel wherever possible. At the moment, our tests are generally inadequate, so I'm only saving around 2 minutes on a parallel versus series run. However I'm doing bulk changes (with the help of PPI) to this largeish existing codebase at the moment, and get into situations where I want to run the whole test suite every 10 minutes or so, at which point saving 12 minutes in an hour becomes significant.
When a million flowers bloom in the world of open source, with no clear winner in the popularity contest for wide-spread use, sometimes the options can overwhelm. What follows is a summary of what I learned spending a day reviewing my options for a tool I could perhaps have written myself in that time, if I had felt free to ignore the prior art. It relates to yet another great tool written in perl, gitolite by sitaramc.
-----
If you manage your infrastructure with puppet, your source code with git and have need of an in-house git repository providing user and group access control lists, this article may be relevant to your needs.
For some reason I just felt this deserved to be posted here.
I went to Mongolia and rode this bactrian camel. As a JAPH this was a special event for me worth sharing :)
I will not write much, but just would like to let you know there is a new Perl module for Language Identification (Lingua::Identifier). It uses a neural network for the task (read this for details), with Math::Matrix::MaybeGSL, that will use Math::MatrixReal or Math::GSL::Matrix if it is installed. An extended version of the paper is being reviewed, and therefore I am not allowed to publish it here.
blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.