Blocking DNS malware with Perl and BIND

This evening at Sydney-PM, Nick Urbanik gave an excellent presentation about his work at a large well known Australian Internet provider, in automatically blocking malicious DNS requests in Bind based resolution servers.

His method uses Perl, Inotify and Bind.

If you have customers or external IP's making requests generating huge amounts of SERVFAIL's - his work will discover and block these requests which seem to simply waste CPU time on servers.

He has detailed his work and published his code at his personal website

Fix Those Legacy Subroutines or Methods

Maybe you know the feeling… you go to add an option to that method or subroutine and… cue Jaws theme

sub update_shopping_cart {
    my $cart_id        = shift;
    my $item           = shift;
    my $quantity       = shift;

Argh. You don’t want your legacy code to break but you also don’t want to add a fourth unnamed parameter to the existing problem. And the solution is simple:

more

Infinity Interactive is sponsoring the QA Hackathon

Following the recent announcement of the QA Hackathon, we're happy to announce that Infinity Interactive have signed up to sponsor this year's event. Their support means that we can invite more people to attend, and lets us focus on the work rather than the money.

You might have heard of Infinity Interactive, and you're even more likely to have heard of some of their employees. Just in case you haven't, we'd like to share some information about them.

DC-Baltimore Perl Workshop 2015 - Call for Speakers!

Attention Speakers! You are invited to submit talks for the 2015 DC-Baltimore Perl Workshop, which will be held on Saturday April 11 2015, in Silver Spring, MD (same venue as last year).

As in previous years, by default talks are 20-25 minutes, which we've found is a sweet spot for most topics. We get a great variety -- enough to get a dose of newness and not overwhelm. We also welcome proposals for more tutorial-style talks of around 50 minutes. We'll take the talks and build out a two-track schedule.

Speakers of all levels are welcome! This regional meetup is great for getting your first taste of giving a community talk, sharing projects or topics that you have experience with, or even doing a first run for a talk you'll be presenting at a larger conference such as YAPC::NA 2015 in Salt Lake City! All Perl-related topics are welcome -- from beginner to advanced, from technical to social.

blog change... again...

It seems that I'll never really be happy with blogging.

Passwords.

I am creating a separate post only because I now seem to have lost the permission to comment on other people's posts...

No bigfoot, you are not the only one. I know there was some kind of security breach and some things were disabled so I've come to grudgingly accept it.

It would be nice to get it fixed though...

Anyway I had to change mine again just to post this comment but I felt it was important! :)

Passwords?

I think one of the impediments to seeing more blogs on this site is the blog engine. It's awful.

Am I the only one that has to reset his password EVERY single time I try to login to this blog system? And why to do I have to login twice if I want to post?

Very frustrating...

git-refresh: Automatically rebase current branch onto master

Different people have different workflows with git. Mine is pretty simple.

  1. Branch from master
  2. Hack, hack, hack,
  3. git stash; git checkout master; git pull --ff-only; git checkout $branch; git rebase master; git stash pop
  4. Goto step 2 until done

That step 3 is pretty damned annoying. I try to keep branches short-lived, but I often rebase onto master to ensure a clean merge. Thus, I wrote git-refresh. It does step 3 for me. However, my git-fu is sorely lacking (and my bash scripting ain't great either), so suggestions for improving this code are welcome.

system(), run()... roll_your_own()

I'm working on a program that is thin wrapper around the execution of many other programs (mainly shells scripts) in Linux. The initial - and working! - choice was to use system():

my $code = system {$program} $program;

but it showed some limits soon...

GSoC 2015

It's that time of year again when I will start the usual cajoling and pushing to find the Perl Communities presence for the Google Summer of Code. Yes, once again this is seemingly being done at the very last minute as busy volunteers are once again made busier and I fail to start the ball rolling early enough.[1] But heck this is Perl and Developers, deadlines are those things we like to hear go whoosh as they pass us by, am I right?[2]

However better late than a no-show at the sticky end of a wicket with the last pair riding a duck[3] and we do have the success of 2014 to build on when a great group of mentors and students once again gave us a 100% pass rate and performance. Let's see if we can match their success and increase the students for this year.

AWS adopting Go Language

As if Perl programmers don't have an inferiority complex already, Amazon looks like it is adding Go to it's list of supported SDKs, having dropped (more or less) Perl quite a while ago for most of it's services.

http://www.theregister.co.uk/2015/02/02/aws_going_googles_way/

Moo 2.0

The next stable release of Moo will be version 2.0, and will include some incompatible changes. These changes should affect a pretty small number of modules, and may help point out flaws in the existing code.

The most important change in Moo 2.0 is that it will no longer be applying fatal warnings to classes using it. As Moo has grown to be more widely used on CPAN, it has become obvious that applying fatal warnings is usually unexpected or undesired by other authors, resulting in things like Moo::Lax, or people just avoiding Moo entirely. And authors who prefer fatal warnings can easily apply them to their own code.

Moo 2.0 will also detect a number of cases where people apply modifiers to constructors, or attempt to add attributes to classes that have already been instantiated. These cases never worked correctly, but they will now issue errors.

Website, Sponsorship and the Walls

Last week the website for the upcoming YAPC Europe in Granada was launched. You can already register and submit talk proposals. If you plan to be a sponsor for the conference, please take a look at the sponsorship proposal.

On the other hand, we're very pleased to announce that Larry and Gloria accepted our invitation to come to Granada in September. We hope we'll see you there, too.

A little thing to love about Perl 6 (and COBOL)

By now you've heard the announcement that the Perl 6 team is cautiously hopeful that Perl 6.0.0 will be released this year. There are three things they need to finish:

  • The Great List Refactor (which should improve performance)
  • Native Shaped Arrays (tell Perl 6 that you only have 10 elements and you'll get an exception if you add more)
  • Normalized Form Graphemes (solves some issues with combining characters in Unicode, such as the little-known "tapeworm operator" "\x{1F4A9}\x{0327}")

With those, Perl 6 will truly be born. Of course, it will need better documentation, tooling support, better modules, and so on.

From what I can see, Perl 6 actually has a chance to take off and there's one delightful little feature that I want to talk about.

Hire Good Developers

My company is dusting off some job descriptions and considering expanding our team, which got me thinking of a blog post I’ve been meaning to write. Hiring developers can be tricky business, so I wanted to share some practices that have both worked well for me as a candidate and hiring manager. But first…

A Little Story

In the not too distant past, I found myself attracted to a fairly new company with a veritable A-list of Perl developers. After being declined, I was offered some feedback by the hiring manager which I gladly took the opportunity to hear:

Pull Request Challenge: January

Originally, I was assigned TryCatch. “At least something I can use,” I thought. Also, the module's ticket queue was 21 issues long, so there should've been something to pick up. When I took a closer look, though, I discovered the module was XS heavy (I have never written any XS, and almost no C either), and the only issue I would've been able to work on was “Mark as deprecated” — but I wasn't sure I'm able to judge whether it would be the right thing to do.

Fosdem 2015: It's Christmas!

Get Ready to Party!
Larry Wall

If you are reading this and you didn't hear that Larry bit the bullet, rolled the dice, flipped the coin, shattered the space time continuum...breathe... then you really are going to get a shock.

Larry has announced that the Perl 6 Developers will attempt to make a development release of Version 1.0 of Perl 6.0 in time for his 61st Birthday this year and a Version 1.0 release by Christmas 2015.

So why do I say attempt?
Well it isn't as easy as promising, because we have a real issue if we do such a damn fool thing. There are a number of reasons, aside from the hidden complexities of code, that could scupper the plans. The inevitable bus-in-the-face failure being just one of them. A cautious 'Murphy doth exist' attitude is the right one to take.

Persistent Sessions and Auto log on with Bedrock

Recovering passwords and convenience links are easy with Bedrock...

http://openbedrock.blogspot.com/2015/02/cookieless-sessions-automatically-login.html

A note about Text::Table::Manifold


Docs: Text::Table::Manifold.

Command Line Project Manager (clpm) v1.0.1 released

clpm is designed to make managing sets of files easier at the Unix command line. It's free and open source. Please view the demo here. Find more info at http://tinypig.com/clpm

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.