Go Lamers Bus Lines To YAPC

We’ve covered a number of other bus services to get you to YAPC, but Lamers Bus Line offers something a bit different. All the other bus services will get you here if you’re traveling from a major hub like Chicago, Milwaukee, or Minneapolis. Lamers has daily service from smaller cities all over Wisconsin. So if you’re from Wisconsin, but you’re from one of those less serviced regions, then check this out. They have daily service from the North:

  • Wausau
  • Mosinee
  • Stevens Point
  • Westfield
  • Portage

From the North East:

  • Green Bay
  • Appleton
  • Oshkosh
  • Fond du Lac
  • Waupun
  • Bever Dam
  • Columbus

From the South West:

  • Dubuque
  • Platteville
  • Dodgeville
  • Mount Horeb
  • Verona

All of these locations drop off at the UW Madison campus (where YAPC is being held). And perhaps best of all, they do this for less than $40. So if you live in Wisconsin, but don’t want to drive or can’t, then this is a great short range travel option for you.

Any advanced social networking site is indistinguishable from spam

  • Usenet
  • Email
  • BBS
  • Newsletters
  • Internet Forums
  • My Space
  • Blogspot
  • Facebook
  • Twitter
  • Lets all welcome Google+ to the club

Abstracting the company away (part 2)

After creating company-specific schemas, I decided to refactor and abstract more issues. This mainly revolved around our databases.

If you've read the previous post, and tried it yourself, you'd notice having schemas in a central module that anyone can use was comfortable. However, if you've tried to write stuff using that schema, you probably also noticed that you have to keep reinventing some variables.

Assuming OO code, you'd have an attribute for the schema object, the database host, the database user and the database password, for each of the several databases you might have. Perhaps even more variables. We had the same issue. I was tired of having to configure this every single time. The next refactor had to consider this.

I wrote a role called KittiesInc::Role::DB (assuming my $workplace was called "KittiesInc.") and it included all the attributes for databases. It created, for two databases, attributes for the schema object, database hostname, database username and database DSN.

DBIx::Class populate Gotcha

Today, we watched a series of test cases failing. Our tests started with a blank database and a series of populate method-calls to create their own test records.

Everything looked obviously right, but after a while of debugging, we found out that the populate method of DBIx::Class::ResultSet behaves differently depending on the context used. In Scalar or List context, the records are inserted using the INSERT statement, while in void context, a bulk insert method is used.

From a performance standpoint, this absolutely makes sense. The documentation does explain this very well.

However, some optimizations have been made under the hood that are not obvious unless you know about -- I did not know that before.

My code looked like this:

GitHub is an amazing service that much of the Perl community has...



GitHub is an amazing service that much of the Perl community has adopted, but there are still a few holdouts using their own git repos, Subversion, and even CVS. I’m here to tell you that other than writing tests, there’s very little you could do to improve your software development process more than moving your applications and modules to GitHub. It’s not just a hosted git repository. They back up your repos, provide collaboration and documentation tools. They even provide plugins for other repositories so that if you prefer to use Mercurial locally, you can still use GitHub. And if your app is open source, you host it with them for free! Make a new years resolution and switch to GitHub.

Here’s how they describe themselves:

My first post...

I look forward to writing about my adventures in Perl. I hope some of you contribute comments, suggestions and feedback a long the way.

I <3/> XML::Rabbit

Just a quick note about how much I appreciate the work Robin Smidsrød has done on XML::Rabbit. I'm now using it on a second project, and the ease in which I can quickly build a set of classes and attributes to process XML documents combined with the usual Moose-y goodness is truly wonderful.

The first project in which I used XML::Rabbit, XML::Ant::BuildFile, is still chugging away and working well.

CPAN Testers Server Update - 20/09/2011

The MySQL databases have now been rebuilt and correctly synced between each other. The SQLite databases are now being updated and these should be completed by the end of the week. This has enabled me to write some simple scripts to create and repair the databases, which I'll now be including in a separate distribution to be released on GitHub. It will also include all the apache, mysql, logrotate, cron and other config and script files, so that if we ever have to rebuild again, getting started is a lot easier.

The websites are now rebuilding too. The statistics site will be complete shortly, as it takes a while to rerun all the statistical analysis. Trying to analyse everything all at once tends to grind the server to halt, whereas analysing bitesize chunks, although slightly slower, uses less memory and saves progress to disk, so we don't have to start again from scratch if anything falls over.

The bad news is that the Pyle Center did not have a room large...



The bad news is that the Pyle Center did not have a room large enough for our main lecture hall at YAPC::NA 2012. The good news is that 100 meters down the street is the Lowell Center. We’ll be taking over the Lowell Center’s large dining room and setting it up to handle all of you. 

This is where we’ll do our keynote, plenary sessions, Getting The Most Out Of YAPC talk, the lightening talks, etc. 

NetworkManager att login

Just got Kubuntu installed on my laptop. It's not bad but the panel locks up when I login to ATT wifi at Starbucks until I goto a browser and submit their online agreement. This behavior is a bit annoying so decided to try to automate the form submission with WWW::Mechanize. The script is very simple but seems to work so I decided to post it here for anyone else with similar issues.
99attwifi
Comments welcome.

Authors vs. Contributors

I’ve been giving some thought over the weekend to ‘Authors’ vs. ‘Contributors’ as credits in module documentation.

For reasons I can’t remember but can almost justify still I’ve been submitting modules to (the) CPAN with myself listed as the Author and any subsequent patches are credited as a Contributor.

As a Dist::Zilla user I’ve been thinking that it would be nice to have dist.ini accept ‘contributors = Jane Doe’ data in much the same way it does with authors.

My investigations into a plugin for Dist::Zilla hit a roadblock when I realised that I’d need to either fudge things horribly or fork dzil, submit a patch and pray they accept it.

Since this is more work that just writing a plugin I took the time to stop and think.

  • Is there any difference between an Author and the Contributors?
  • Am I placing too much self-importance on myself as the creator of a distribution?
  • Should Contributors be listed as Authors?

I’ve not been able to perform an exhaustive search of (the) CPAN but there are a couple of distrubutions that use Contributors:

If it’s good enough for the ‘big three’ does that mean it’s inherently okay for me to use?

Should I embark on a branched piece of work to add ‘contributors’ to Dist::Zilla?

Perl and Parsing 9: "Use" and the Ruby Slippers

In this post, I talk about how Perl 5 parses its use statement. The use statement is implemented with what I have named "Ruby Slippers" parsing. The idea is that you parse with a convenient grammar, but one which is too simple to actually describe the language you are parsing. For example, if you are parsing HTML, the grammar might assume all start tags have end tags.

Whenever the simplified grammar has trouble parsing, the lexer fixes the situation by pretending the input is what the parser wants to see. The parser is like Dorothy in the Wizard of Oz, who really would like to be back in Kansas. The lexer is like the good witch, Glenda, who assures Dorothy that, because of her Ruby Slippers, Dorothy really can be wherever she wants to be.

We will be posting registration information for YAPC::NA 2012...



We will be posting registration information for YAPC::NA 2012 early next year. However, for now I thought you might like to see the room where we will hold registration next year. This is the Upper Lounge in the Lowell Center. Though the image doesn’t show it, this room is quite large and will more than handle the long lines that form during registration.

We also hope to have multiple registration desks working to make the lines move quickly. 

Why Perl ?

"Perl is, by and large, a digested and simplified version of Unix. Perl is the Cliff Notes of Unix" - Larry Wall

I could never really get myself to learn sed, awk, zsh, grep, find, m4, pipes, xargs, tee, cut, paste, yacc, lex, various IPC or even C for that matter. I ought to.

In practice, in almost most all cases I use perl.

Perl equivalents to the above are psed, jawk, ack, IPC::Run, IPC:: ..., IO::All, ppt, A real parser, reference counted pointers(if you ever miss c), POSIX and even a shell. You can also, easily write yourself one script that exactly does what you want to.

The other thing that makes me keep coming back to perl are the books. I have read every book of every programming language out there, but I always end up re-reading perl books ... because the other books put me to sleep.

Running perltidy in a Git commit hook (githook-perltidy)

I have found a couple of attempts at integrating perltidy into Git commit hooks, but nothing yet that I considered robust enough. The scripts ignore the state of the index, modify the working tree, and then forget to update the index before the commit. They didn't recover from a failed tidy run, leaving both the working tree and index messed up. Critically for me I could not do an interactive or patched "git add" and have the final commit reflect what I wanted.

githook-perltidy is my answer to this challenge. Robustness is achieved by stashing the working tree and index before the tidy run, which is re-applied on error. The same stash can be applied on top of the new commit (using a post-commit hook) to merge non-indexed working tree changes afterwards. The POD inside the script hopefully documents the process in sufficient detail to give you confidence in the method. Code has the final say of course...

You can grab a tar or zip file of the distribution now from the github repository at https://github.com/mlawren/githook-perltidy. Feedback (and patches for tests!) is welcome.

A new sponsor: $foo - Perl-Magazin

$foo - Perl Magazine is our second sponsor.

Foo_Logo_web.gif

The purpose of $foo magazine is to present and discuss projects written in Perl; to keep up-to-date with the latest news in the community including about The Perl Foundation; to publish tutorials on Perl projects such as WxPerl, Perl 6, Moose; it also gives news on CPAN modules (6 new modules are covered in each issue).

We will contact more companies when we created a paper for potential sponsors that will explain the sponsorship levels. I hope this will be done in October...

Dorm Pricing

We now have pricing for YAPC:NA 2012 for those wishing to stay in the dorms. For a single room the price is $62.65. For a double room the price is $41.80 per person. Both include breakfast each morning, plus this impressive list of amenities. Note that this does not include parking, if that’s something you need.

We’ll open up online registration for the dorms in late February. And you will be able to register for dorms to stay during the workshops and hackathon (June 11 & 12) as well as the the conference itself (June 13-15). You’ll even be able to extend your stay until Saturday June 16th if your flight or other travel doesn’t leave until the next day. 

corelist web interface

Whenever you don't have a perl installation or a commandline available, or you want to show somebody else information about core modules, you can use:

http://perlpunks.de/corelist

The website has been around for some years, but wasn't very well known and actually a bit ugly. I've redesigned it, added a new diff function and moved it to a new server where it can run under mod_perl.
The diff function allows you to compare two perl versions for added, removed or changed modules.

I'm also thinking about auto completion but maybe this is overkill for such a small tool.

edit: I have added links to ppm and debian searches. if you have any other resource for module search (redhat, ...), please post.

Debugging JavaScript in a WebBrowser Control from VS2010

You can debug JavaScript executing inside a WebBrowser control embedded in your .NET 4.0 application from VS2010 (Visual Studio 2010), but it takes a little effort.

  1. Enable Script Debugging (both IE and Other) in Internet Explorer.
  2. Disable friendly HTTP messages in Internet Explorer.
  3. Enable Display a notification about every script error in Internet Explorer.
  4. Modify VS2010 to debug Script from the Attach Process dialog. Please note that you cannot debug both JavaScript (Script) and .NET 4.0 code at the same time. (I don't know why.)
  5. Add a debugger; statement at the start of your JavaScript.
  6. Start your WebBrowser-embedded application without debugging (Ctrl-F5).
  7. When your application hits the JavaScript debugger; statement, select your current instance of VS2010.
  8. Voilà! You can now debug the JavaScript executing inside the WebBrowser control in your .NET 4.0 application.

(Posted here so I don't forget the steps.)

(This was abstracted from many sources including Silverlight 4 Tools for Visual Studio 2010 Debugging Overview.)

CPANdeps re-design

Having prettified CPAN.org, perl.org and others, Leo Lapworth has now kindly had one of his designers apply their skills to CPANdeps. I think you'll all agree that it's a great improvement.

I'm very grateful to Leo, and to Foxtons.

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.