Linode has blown my mind again by increasing their sponsorship of YAPC::NA 2012 to the Platinum level. I can’t say enough good about them, not only as a sponsor of YAPC, but also as a great hosting company. Thank you Linode!
Recently named by Inc. magazine as one of the top 500 fastest growing private companies in America, Linode delivers virtualized cloud services from six regions across the U.S., Europe, and Asia to some of the most innovative companies in the world, such as The Onion and Creative Commons. The company’s proven IaaS (Infrastructure as a Service) offering enables customers to deploy and manage Linux virtual servers in the Linode Cloud with the ability to scale deployments to meet business demands - paying only for what they use with no long-term commitments. For more information, visit http://www.linode.com/.
Normally the release schedule of DBD::SQLite is tied to that of SQLite update recommendations, as this module is used in an enormous number of places and having relatively large gaps between releases is considered an advantage for downstream distributions and corporate users in particular that have very large testing burdens for each release.
This is the first DBD::SQLite in a long time that was not done as the result of an update recommendation from the SQLite maintainers.
In addition to a number of Perl level bug fixes, this release gains the SQLite 3.7.8 and 3.7.9 updates, the former of which contains a new merge sort for indexing resulting in an order of magnitude performance improvement to indexing and performance improvements to any queries that do index lookups.
I want to fix his only module on CPAN (POSIX::RT::MQ), but his public email address no longer exists. If I can not reach him I will ask the PAUSE admins for permission to take over this module.
I’m grateful that Liquid Web Inc. has become a sponsor of YAPC::NA 2012. They’re a great hosting company with reasonable prices. They do a full range of both dedicated servers and VPS.
Liquid Web Inc. is a managed hosting company operating out of two regions in the Central and Western US. Having been named to INC 5000’s fastest growing companies five years running, we’re in the midst of a rapid ascent to a position of prominence and recognition amongst the Hosting field.
I've been working on Redis::Client for a while now. It's not ready for production use yet, and there's a lot of work yet to be done, but it's much better than anything else on CPAN right now for talking to Redis.
I hate boilerplate with a burning passion, and I will often go to extreme lengths to avoid typing it. (I typed it once already, dammit! Leave me alone!)
After having a great time learning to mess with Dist::Zilla, I decided to give another of Ricardo's projects, Pod::Weaver a try. Here's the cool stuff I was able to do after not a lot of work.
In
a previous post,
I listed the four ideas
that are essential to
Marpa.
This post delves into
one of them: Ruby Slippers parsing.
In Ruby Slippers parsing, the parser imagines
("wishes")
that the language it is parsing
is easier
to parse than it actually is.
The part of the application that handles input
(the "lexer")
manipulates the input
to make the parser's
"wishes" come true.
As an example,
take liberal HTML.
"Liberal HTML" is HTML as it is found "in the wild",
with missing and spurious tags.
I've written a
Marpa-powered liberal HTML parser
which uses the Ruby Slippers as its primary
technique.
The grammar behind
Marpa::HTML
assumes a fantasy world,
one where no element ever occurs out of place,
and where all HTML elements have both start and end tags.
The site has also been update to provide a tabbed display of the different types of event, to make it a little easier to find results. Over the next month or so I am looking to get more of the past data online, as well as the feedback that I normally send to just the organisers. I have lots of data waiting in the wings, and its only been my lack of free time that has prevented me from finishing off the sanity checks.
Andy Lester will give a talk at YAPC::NA 2012 described as:
We all love open source software, but to many it seems you have to be a rock star programmer to contribute to your favorite projects. In reality, most projects are easy to join, if you know where to look.
In this presentation, I’ll deal with the common questions and problems of those looking to help out on projects:
“I wouldn’t know where to start!”
“What’s a good project to start on?”
“How good a programmer do I have to be?”
“I’m just a nobody, they won’t be able to use me.”
“They probably have enough people already.”
You’ll learn about different ways people of all experience levels can pitch in. From coding and documentation to devops and project management to publicity and community, there’s a place for everyone in the open source ecosystem.
If you’ve never had the joy of improving the software you use every day, seeing your work published for the world to see and use, this is the session for you.
So I thought I’d kick off my inaugural Perl blog post by answering the question I’m sure you’re asking right about now: who am I, and why should you care?
Of course, the short answer is: “you shouldn’t.” I have another blog whose title sums up how I feel about blogs. The short version is, they’re crystallizations of other people’s opinions, and, as we used to say in grade school, opinions are like assholes: everybody’s got one, they’re all different, and they all stink.
But notice how that didn’t keep me from starting a blog myself. Also note that there are 83 posts on said blog. So obviously I’m a big ol’ hypocrite.
At least in my Mac OS X (Leopard) the perllocale and the perl collations that DBD::SQLite make available do not work to properly sort UTF. Or that, or I am doing something wrong.
Nevertheless, I found a simple way to do that, thanks to the Unicode::Collate module. Just add a few lines of code after you open your database connection:
my $collator = Unicode::Collate->new();
$DBD::SQLite::COLLATION{mine} = sub { $collator->cmp(@_) };
and then use the mine collation:
$sth = $dbh->prepare("SELECT * FROM somewhere ORDER BY key COLLATE mine");
Now I just need a way to make Perl not complain about the usage of DBD::SQLite::COLLATION just once. I can set no warnings around it, but I would prefer a cleaner solution. Maybe suggest a define_collation method for DBD::SQLite.
Submit a talk for YAPC::NA 2012. We’re especially interested in talks on real-world Perl apps and quintessential Perl 101 talks, but we’re open to any ideas you have.
I recently came across a link to an old article by MJD. The sections "On Forking", "New Versions", "NP Complete Problems", and "Why I Hate strict" are particularly worth reading. His basic point in each section is that you should think about the problem you're trying to solve when you write code, and stay mindful of why you are doing certain things. I wish there were more smart, thoughtful people like MJD in the Perl community nowadays, and fewer dogmatists.
I've been working on a document engine called Mojito. It supports a subset of the MojoMojo formatters. I was thinking it might be cool to see how my MojoMojo documents look like through the eye of Mojito. The idea being that I tap the documents in a MojoMojo store and render them with Mojiito::Page::Render. Further, I put the pieces together by making a Web::Simple application of it.
Jeffrey Thalhammer will be giving a talk at YAPC::NA 2012 described as:
The CPAN provides a wealth of open source software for Perl developers. But the CPAN model can be used for distributing proprietary software as well.
In this talk, we will explore some of the challenges and benefits of creating private CPANs. In particular, we’ll show how to use the Pinto tool suite to create and manage a private CPAN, and how to incorporate a private CPAN into the typical development cycle.
Along the way, we will also survey some of the other tools that are available, such as CPAN::Mini, OrePAN, MyCPAN::App::DPAN, and Carton.
Here are some of the techniques I use to minimize startup overhead. Due to the nature of our application (command-line tools), we would like quick responses everytime a script is called from the shell.
1) Avoid Moose. Mouse used to be a bit too heavy for my taste too, so we always use Moo, but nowadays I guess Mouse is okay, especially since Mouse provides much more feature. But in general I still avoid OO-style or use bare Perl5 OO for simpler apps.
2) Avoid heavy modules and use lighter variants. I usually run this script when trying out modules, and take its result into consideration. I used to choose CGI::Lite over CGI for this reason, though nowadays I very seldom have to resort to CGI directly (thanks to PSGI/Plack).
3) Delay loading of modules as much as possible. Some modules are only needed by a subroutine in a using-module, so instead of:
Last weekend, a local group around Nuremberg had their annual convention, called the KNF Kongress. I talked about some collected tricks around using perl. The key points were perlbrew, cpanm, minicpan and Dist::Zilla. All slides (in german language) collected from the speakers are online now:
LLVM's clang (at least 3.1) can be easily used via -Dcc=clang.
The benefit is that your generated code will be faster on DEBUGGING (optimized not so far), compile + link times are much
faster and use much less memory, the diagnostics are better and because its AST does not simplify the code beyond repair (as with gcc) it is easy to add various code check passes and diagnostics such as ASan.
I found several warnings which I previously ignored in my code.