New And Improved: Bloomd::Client

cross-posted from dams blog

New And Improved: Bloomd::Client

New and Improved!

thanks to @yenzie for the picture :P

Mistake in Chapter 7. References ( Page : 233 )

Sir,
In the free document for beginners, http://www.perl.org/books/beginning-perl/.. There is a mistake in chess game program at declaration part (not related to perl but Chess).

i.e in Chapter 7. References ( Page : 233 )

Now it is,
my @back = qw(R N B Q K N B R);
But it has to be,
my @back = qw(R N B Q K B N R);

That is : Chess pieces must be placed like mirror image for pieces R, N and B..

Left side : R N B
Right side: B N R

Chicago.PM New Website! New Meetup URL! New Presentations Project!

Lots of news for the Chicago.PM group! We've got a new Chicago.PM website, powered by Github, up at http://chicago.pm.org. The website is completely editable via Github using the Octopress system. We hope to start sharing resources about Perl on our website, increasing the exposure of the good tutorials and learning sites.

Slideshow: Graphviz and Friends

Last night I gave a talk to the Melbourne Perl Mongers, on AT&T's Graphviz, and the Perl wrappers available, specifically including Marpa.

It's not really complete with a voice-over, but it might encourage people to investigate further.

Cheers

A little nicer way to use smartmatch on perl 5.18

5998623964_f1a4023855_n.jpg

Of course as Perl developers we all love new features, don't we?

So the moment we could work with perl 5.10 we all started using smartmatch, right? If not for the only reason it allows us to write elegant code like this:

use v5.10.1;
@array = qw ( Thom Jonny Colin Ed Phil );
say "I found Phil!" if 'Phil' ~~ @array;

But now we have perl 5.18 and some of the ideas of smartmatch turned out to be a little too smart, and so we now consider it an experimental feature. So even code like this, when executed on a 5.18 perl, gives warnings:

Smartmatch is experimental at smart.pl line 3.
I found Phil!

Reducing Freshman "Flunk-Outs" in Purdue Engineering Classes

The Purdue Mechanics Freeform Classroom, introduced by Charles Krousgrill, implements a set of changes in the early Mechanical Engineering classes to reduce "freshman flunk-outs". Especially in Purdue Engineering programs, there are many classes with large numbers of students (80+) in their freshman and sophomore year. Because of these class sizes, getting the personal attention many freshmen (and some sophomores) need is difficult -- adding the interactive textbook (a "lecturebook"), comment-enabled course blog, and instructional videos as the Purdue Mechanics Freeform Classroom has done reduces the D-F-W (withdraw) rate to 5% from 20%, thereby turning the C-D-F-W students into B students.. (Alas, the number of A students stays the same-- but the C-D-F-W rate is now 1 in 20 rather than 1 in 5.)

This is a substantial improvement to early Engineering education, well worth taking a look at.

Pinto Users, Please Stand Up!

A local company has been experimenting with Pinto for a couple weeks and they asked me to come chat with them. So I met some of their developers yesterday and we talked about how Pinto might improve their build process. The conversation was great and we learned a lot from each other.

But when they asked me "who uses Pinto?" I didn't have a good answer. I can show them all the forks on GitHub, or tell them how many times getpinto.stratopan.com has been hit, or list all the crowdfunding contributors, but none of that really answers their question.

Just Build Something

A lot of people think that there is some magic to starting your own business. There’s not. Just make something cool, and sell it. Then you’re in business. Also, don’t worry about getting all your paperwork ducks in a row before you start to create your product. Build your product and then determine if it’s worthy of a business. Just build something already. Why are you still reading this? Get to work.

[From my blog.]

Announcing Perl::Critic::Policy::Variables::ProhibitUnusedVarsStricter

The subject Perl-Critic policy is an alternate implementation of the core policy Variables::ProhibitUnusedVariables. My implementation attempts to do a more thorough job of finding unused variables.

The details of the policy can be found at Perl-Critic-Policy-Variables-ProhibitUnusedVarsStricter. My purpose here is more to discuss why the policy exists in the form it does.

My Virtual YAPC::NA 2013

Last year I had the joy of experiencing my first YAPC, it was YAPC::NA in Madison, WI, which is just up the road from me in Chicago. Sadly this year YAPC::NA was much further away and I, having recently defended my Ph.D. thesis, could not afford the time nor cost to attend. While people (most notably Peter Rabbitson (aka riba, aka ribasushi)) offered to help me attend (he with the excess of his own funding drive), finding a job was of greater concern.

That said, I ended up having a great YAPC::NA. I have to extend massive thank the conference organizers for again providing streaming video of the conference talks. I was able to watch an incredible number of talks, learning many new things and seeing many Perlers who I have only known by name (several of whom were not at last year’s YAPC::NA). I even got two shout-outs from speakers!! (squee)

Office Hours For Pinto: MWF from 16:00 to 18:00 (UTC)

Time management has never been my best skill. The only way that I manage to get anything done is by making daily TODO lists for myself. But I'm still easily distracted by E-mails, Twitter, and IRC. I get such a huge thrill from seeing people use Pinto that I can't resist immediately responding to any inquiries or comments that come across my screen.

But I really need to buckle down and get some things done. The crowd-funded features for Pinto and the beta of Stratopan are my highest priorities for this summer. To meet my goals, I need to give myself clear time boundaries. Otherwise, I risk spending half the day pouncing on the F5 key.

So starting this week, I will hold office hours for Pinto on Mondays, Wednesdays, and Fridays between 16:00 and 18:00 (UTC). During those hours, I'll dedicate myself to answering your e-mails about Pinto, responding to issues, and participating in the #pinto channel on IRC.

Of course, you can still reach me outside of those hours, it just might take a little longer to get a response. Thanks for understanding.

To evolve or not to evolve?

What would you do when you try to improve the development process and it seems not to work for months?

Small tasks, (and not so small) and everybody is in a hurry to solve the next one and does not want to see the big picture, which is:

If we share code (via - o no! - a code repository) and reuse code via CPAN (o no again!), inheritance and OOP (o no, what the!..) and it really looks like you hinder the work of colleagues if you try to explain something more than "this regular expression"?... Yet you are supposed to do so...

At the end of the day the business people want results and do not want to accept the simple truth that there is accumulated technical debt for years...

I may be simply frustrated, but it is still hard to get it.
How would you manage this?
I really would like to hear some opinions...

detroit.pm.org

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.

Mixing procedural and declarative parsing gracefully

[ This is cross-posted from the Ocean of Awareness blog. ]

Declarative and procedural parsing

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.

The application

This is a sample of the language:

A2(A2(S3(Hey)S13(Hello, World!))S5(Ciao!))

Files - MadMongers (Madison Perl Mongers) (Madison, WI) - Meetup

Files - MadMongers (Madison Perl Mongers) (Madison, WI) - Meetup :

I’ve uploaded my presentations from YAPC::NA 2013 to the MadMongers presentation repository. 

[From my blog.]

A few lessons from updating to Perl 5.16

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:

DBD::SQLite 1.39

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:

YAPC Reflections (2013)

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.

Perl 5 Porters Weekly: June 3-9, 2013

Welcome to Perl 5 Porters Weekly, a summary of the email traffic of the perl5-porters email list.

Topics this week include:

  • DAVEM TPF Grant May 2013 report
  • dtrace sub-entry probe against lexical sub segfaults
  • COW and THINKFIRST and related safety

I love pre-modern Perl and so should you, my introduction

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.

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.