There used to be a detroit.pm.org. And after Stevan Little's keynote last week, Perl- The Detroit of Scripting Languages, I made some inquiries about resurrecting it... Maybe specifically with the intention of hosting YAPC :).
So far, the local response has been positive. As long as I don't step on any toes here. In so many ways, Perl and Detroit are the best of all possible worlds.
A declarative parser
takes a description of your language and parses it
for you.
On the face of it, this sounds like the way you'd want
to go,
and Marpa offers that possibility -- it generates
a parser from anything you can write in BNF and,
if the parser is in one of the classes currently in
practical use,
that parser will run in linear time.
But practical grammars often have context-sensitive parts --
features which cannot be described in BNF.
Nice as declarative parsing may sound,
at least
some
procedural parsing
can be a necessity
in real-life.
In this post, I take a problem for which procedural
parsing is essential,
and create a fast, short solution that
mixes procedural and declarative.
Like most startups using perl, blekko began in 2007 using the perl that shipped with the Linux distro that we were using -- 5.8.8. Over the years, as our search engine and homegrown NoSQL database crawled towards a million lines of code, this ageing perl version frequently made us sad. We finally bit the bullet earlier this year, and here are the top 7 things we learned:
It's been a year since DBD::SQLite team released the last stable version of DBD::SQLite (1.37). The team has added a few new features to retrieve database information, and applied a number of bug fixes thanks to the community, most notably the one to address an issue where bind_param didn't work with PADTMP scalars (RT #79576).
Also, two significant changes have been made; one by us, and the other by the upstream.
The team decided to enforce "immediate transaction" for all the transactions unless otherwise configured. You'll likely see less database deadlocks when you use DBD::SQLite in a medium-to-larger web application. However, you might also see some performance penalty, especially if your software is almost read-only. If read concurrency really matters, set "sqlite_use_immediate_transaction" database handle attribute to false explicitly, and the "deferred" transaction will be used as was previously. You can set the handle attribute when you connect to a database like this:
Well, I’ve just gotten back from my second YAPC, and I thought I’d take a moment to share a few reflections.
First, general thoughts: I had an excellent time. I knew far more people than I had the first time, which is partially just having met a bunch of folks in 2011, and partially because more of my current and former coworkers were in attendance. Plus I met a whole lot of new people, so now I’ll know even more folks next time. This is nice for me, as I’m one of those weird half-introvert-half-extrovert people. I’m not much for walking up to people I’ve never met before and starting a conversation. On the other hand, if I already know you, you can’t get me to shut up. So, the more people I know, the more people I’m likely to meet.
My name is David Shultz, I've been working with Perl since the late 1990's where I live in wonderful Portland, Oregon. I'm self taught, I code because I love the challenges and excitement it provides. I got my first job as a programmer working for a small porn company, then a small spam company, financial analysis firm, and finally my current employer of over 11 years, a medium sized data warehousing company. For the last 6 or more years I've worked as a project manager/lead programmer with a small team of really great people. I've worked with a few prominent people in the Perl community, and a few more have graced my employers doors over the years. I've had an amazing time over my years with Perl but not all has been rosy.
Some time ago I made a tiny github repo to share my .ctags file that I use for better Perl support . I use it for my Mojolicious projects, yet it should be good enough for any Modern Perl project.
I want my github repo to show up in a module's META.yml file. And given that META.yml is generated by ExtUtils::MakeMaker, I put some META_MERGE stuff in my Makefile.PL, having carefully checked the documentation in CPAN::Meta::Spec to see what we're supposed to do this week (META.yml's structure has always been a bit of a moveable feast). And, of course, it doesn't work. Grrr.
A lot of people have asked me over the years if I had a blog or twitter feed that they could follow, and I've always answered with the blog or twitter feed of the various ventures I'm involved with. I've decided that it's high time for me to release my own blog and twitter feed for the things that aren't appropriate to any of those ventures.
I'll still be posting relevant Perl-related articles to blogs.perl.org, but I've decided to create a new primary blog, because I often want to blog about non-Perl topics such as creating startups and designing games. So if you want to follow more than just my Perl activities, please subscribe to my new blog or twitter feed.
I get realy strange behavior of POE::Wheel::FollowTail on Windows.
I need tailing some files on Windows and POE::Wheel::FollowTail is great for that.
It works fine, but if file reduced or recreated my script hanged to infinity loop.
I could not find anything about this problem in web and here is it.
Still in Austin for a few more hours, and encountered this sight. Can anyone explain why liquid nitrogen is connected to a utility box on a street corner? Never seen this in my hometown.
Occasionally I give presentations. Most often at work, but sometimes at my local PerlMongers. Typically, a presentation is accompanied by some sort of slideshow. And there are many, many different applications out there to create slideshows in. Power Point is sort of the default of these, and I’ve used it before, and it sucks. Google Docs Presentations uses the same basic model, and I’ve used that before too, and it sucks slightly less ... but it still sucks. I just want some basic slides with a little bit of code on it, and maybe some text, but mostly in the “header” category. I don’t like text-heavy slides. You end up just reading your slides to people, most of whom can actually read themselves, and tend to be a bit insulted when you feel the need to do it for them.
I just wanted to say that if you stumble with a regex try Regexp::Debugger.
It saved me twice today facing problems too silly to describe here. :-)
Here is how I proceeded:
- write regex and see it not doing what I want
- think, rewrite, think again, rising anger
- insert Regexp::Debugger the line before regex
- play the regex, facepalm (in a positive way)
I now think about writing more complicated regexes. I want to enjoy the debugger even longer. ;-)
I've been having a great time at YAPC::NA (my first YAPC In the US) and so far everything's been going swimmingly ... well, except for when I was giving a lightning talk and my phone kept buzzing in my pocket because my wife was lost.
I gave a talk on Test::Class::Moose and there were plenty of interesting questions and many of them were about topics I would like to have included in the talk, but simply didn't have time. One person emailed me later asking me a detailed question about test control methods and while I've discussed this before, I thought it was important to re-explain a common anti-pattern I see in Test::Class test suites.
I recently started trying out different cloud providers to find one that meets my Perl needs. I see many uses for cloud computing in the form of on demand, ubiquitus computing nodes that I can launch with a range of "hardware" specifications. This translates directly into saving money, the prices are different for each hardware plan and you pick what you think you need and erase it when you are done. This article is focused on using Joyent to run Perl applications, not using Perl to interact with the Joyent API, that is a future article already in the works.