My recent presentations

I've given a couple of presentations recently, and my YAPC::EU talk in particular got some requests for the slides from the audience. I've embedded them below. Enjoy!

Command Line Apps Don't Have To Suck

I gave a talk at MadMongers recently about command line apps. The slides are posted now

[From my blog.]

Announce MarpaX::Grammar::Parser

MarpaX::Grammar::Parser parses your grammar and outputs a tree managed by Tree::DAG_Node. The real purpose of this module is to provide a compressed version of that tree (unwritten) as input for MarpaX::Grammar::GraphViz2.

MarpaX::Grammar::Parser actually uses Marpa::R2 to parse your grammar, and my module parses the output of that to generate the tree.

A feed reader (2)

After asking around, I gave Giannis "feeder" a second look. Indeed adding the missing features was almost trivial and Gianni was highly responsive about merging my patches.

Now the mailed blog posts can look like this:

feeder-screenshot.png

promoting my talk at YAPC Europe 2013

Come on, mock me

snaked: pure perl cron replacement [video]

ps: this is my first public talk in such a big "room"
pps: do I really get to the first page of blogs.perl.org with this?

Veewee on Windows Needs PowerShell Community Extensions

As it turns out, Veewee on Windows needs the PowerShell Community Extensions (PSCX) installed before you can actually export the Vagrant VirtualBox box you just created. So now the Veewee folks have corrected documentation in the form of a Github pull request.

While I am at it -- please use CMD or PowerShell when working with Veewee on Windows, rather than a Cygwin shell (Bash, etc.) You will thank me.

("In the form..." -- is this the right phrase?)

Announce MarpaX::Demo::JSONParser

MarpaX::Demo::JSONParser offers you a choice of grammars to parse JSON. The first was written by Peter Stuifzand, and the second by Jeffrey Kegler. I have just packaged them (with permission of the authors).

Woot! It's alive!

After a marathon hacking session yesterday I’ve got a working server up for The Captain Is Dead (TCID). Many video games can be developed by basically creating a state machine, which is essentially what I’ve done for TCID. All you’re doing is tracking the set up of the game map, and what state all of the components attached to the map (including the players) are in. 

I’m writing TCID video game in Perl using a toolkit we developed in-house called Wing. Wing is effectively a set of preferences for developing web-service enabled web apps. It glues together all our favorite components such as DBIx::Class, Dancer, Moose, Config::JSON, jQuery, pNotify, Bootstrap, beanstalkd, and a whole lot more. Without it there’s no way I would have been able to build out a working video game server in a day. 

Lot’s yet to do, but I’m glad to finally get started on this project.

[From my blog.]

Get a B::Deparse piggy back through Gearmany

Or how to execute arbitrary Perl code using Gearman and B::Deparse.


Perl offers us the flexibility that empowers us to clearly separate code that deals with different concerns.

As developers, we should take advantage of it and build reactive, flexible and generic enough business components.

As an infrastructure developer, I don't really know what people are going to do with gearman, nor should I care too much. I'll introduce an approach that lets me concentrate on what is important: the stability, scalability and the security of my gearman workers.

As an application developer, I don't care that I have to encode my functions parameters in a certain way. And I don't want to bother changing code in some obscure gearman module when I make changes to my business code.

What I want is to use gearman as a facility that helps me design the best possible application without getting on my way too much.


In this post, I'll write about how to do that and the motivations behind it.

You are in a forest ...

Some of you may remember this:

Configuring Kelp for command line tools

Building a complex web app almost never goes without the need to write a handful of command line tools. Whether it's to alter the database schema, convert image files, or move records from one format to another, you know you'll have to create a bin directory and fill it up with CLTs.

The Perl Kelp web framework makes this task easy with its robust and flexible configuration module. The default config file lives in conf/config.pl and contains a Perl hash of configuration options. For example:

Wing Now Auto-Generates Restful Object Relationships

Wing has long been able to generate internal object relationships thanks to the goodness that is DBIx::Class, but now it can automatically write the web services for those relationships as well, thanks to two new subs in Wing::Rest:

generate_relationship(object_type, relationship_name) - This writes out a simple web service that will expose a list of “relationship_name” objects that are attached to “object_type”. 

generate_all_relationships(object_type) - This interrogates DBIx::Class to find all the relationship objects and then calls generate_relationship() on each of them. 

[From my blog.]

Perl 5 Porters Weekly: August 5-11, 2013

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

Topics this week include:

  • perl 5.18.1-RC3 is now available
  • perldoc perlre does not appear to mention /r
  • Perl 5.18 and Regexp::Grammars
  • "\c\" is a syntax error
  • Apologies and good news
  • postfix dereference syntax
  • Cuckoo packages aren't listed in Module::Corelist

Come see me at YAPC::Brazil!

I love open source programming. I’m continually humbled to see even the small impacts that my contributions to the Perl community have made for fellow programmers around the world. Mostly my use of Perl has been to write a complex simulation and the tools that it uses to simulate the dynamics of electron bunches in an Ultrafast Electron Microscope column, which is the subject of my recent Ph.D. thesis. So while I have enjoyed sharing my work both here and at the 2012 YAPC::NA I never would have expected that my name would mean too much in the greater Perl world.

Interview with Larry Wall

By Jonathan Schiefer

How To Write Command Line Tools

I’m giving a talk at MadMongers on Tuesday night about how to write command line tools in Perl. It’s a fairly unsexy topic, but I’ll be covering enough techniques to make it interesting at the very least. Sign up to join us on Tuesday night at 7pm.

[From my blog.]

NYC Tech Meetup - Code Crew @ Alley NYC

Last Sunday I went to Code Crew's Collaborative Coding meetup.

The event takes place every Sunday at Alley NYC. The midtown venue is a shared office space open between 12-4pm with room for 100+ hackers, power, wifi and kitchen facilities. A youngish crowd and a relaxed, friendly vibe, there are no presentations or planned activities - just turn up and hack solo or chat with people and code together. Most people I met were budding Ruby programmers from a local college. I really enjoyed it and will be heading back there frequently (including tomorrow). If you're heading down to Alley NYC drop me an email if you'd like to chat / hack Perl.

N.B. Hacker Hours are another meetup group that uses the Alley NYC space on Sunday at the same time. I didn't notice any distinction between the two groups.

I release TaskDeal(alpha version). Setup or deploy multiple environments from web browser.

I release TaskDeal(alpha version). Setup or deploy multiple environments from web browser.

TaskDeal

This is ruby chef alternate. Chef server and client is very difficult to install. Taskdeal is simple and easy.

You can send command from server to each clients.

This is example

Example(User: admin, Password: test)

You can send only echo command in this example for security.

I want to create Web applications more, because ruby web development is active, but Perl is not. I want many people to use Perl. so Web applications which is created by Perl is needed.

A network benchmarker for Perl programs?

I had an idea for the Benchmarking chapter of Mastering Perl but I don't have time to implement it. But, with many of my ideas, someone probably already has.

The DBI::Profile module hooks into DBI calls to monitor database queries. The autodie replaces some built-ins so they error-out differently.

Could we do the same thing with the low level networking calls to measure octets read and sent? Of course, there would be a performance hit (as with the those two modules), but that's what we expect when we benchmark. Maybe it would work like Devel::Cover where it writes intermediate data files that another program analyzes to create the report.

I've been looking around for extra-script solutions to this, and they tend to be uniformly linux-specific and wrong. I also want something that handles the entire process group, so child processes count.

As far as I can see, the various network tools aren't process aware; they can see ports and IPs, but per process stuff. A process can have a local port to itself, but that doesn't mean it keeps it, letting another process use it for a bit.

cpanmeta fav++ modules helping you! / sorry this is not spam

I like CPANMeta fav++ this is nice than cpanratings.perl.org.

my opinion the "like" rating is better and well working than "5 stars" rating because 5 stars system often is used to report bug (sad.. but true).

so today I wrote small cpanmeta-fav.pl script inspired by Dagolden's this entry.

I just fav++ed too many modules help me to get things done.

perl and cpan eco system help me a lot. I must say thank you <3

let's fav modules helps you.

fav++ is a part of perl-cpan eco system!

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.