I'm updating the Camel. Chapter 24 has short sections for people moving from one language to the next. Right now I'm working on the Python section. My Python is rusty. If you started in Python and moved to Perl, I'd like to hear about the gotchas that you didn't expect.
This is absolutely not a platform for bashing another language. I don't care about any of that. I don't care why the readers want to use Perl or why they want to use Python. I care about people who are used to doing something one way in Python and might be surprised why that's not obvious or apparent in Perl.
Here's some things I have so far, which I just cut from our own pseudopod:
I'm happy to announce that I've launched a website for Acme::CPANAuthors modules. You can see which group is supposed to have the largest community, or have contributed to the CPAN most, or who is the most prolific author in a community or the author of the highest kwalitee. Of course these are based on unofficial user-defined lists, and these lists don't cover all of the CPAN authors yet (as of this writing, about quarter of CPAN authors (or half of active authors) are covered). So we shouldn't take them seriously, but anyway, have fun, and feedbacks are welcome.
I also announce that I've unofficially set up a Module::CPANTS::* based site (http://cpants.charsbar.org/) to provide kwalitee data for acme.cpanauthors.org. As I found I would need significant changes at the first try (because the latest Module::CPANTS::Analyse doesn't correspond well with other Module::CPANTS modules, and they use old and deprecated ways of writing of Catalyst/DBIC), I tentatively set up a local repository and committed all the necessary changes there so as to hide all the dirty trial and errors. I'll move on to the public github repository when ready. So please be patient.
For a couple of years I’ve been planning to rip apart and put back together the guts of Catalyst::Plugin::AutoCRUD, to address limitations in the initial implementation. After changing job and moving house I’m pleased this finally came to the top of my hacking stack.
Nothing was going to happen however before I could work out how to do one thing: achieve independence from DBIx::Class as a “storage engine”. I love DBIx::Class, but it would be much more cool to support any data storage system able to represent a table+column paradigm (even things like CSV, as a test case).
We’ll start approving talks next week, rather than waiting until we have a large array of talks. We’ll give priority to talks that fit with the Beginner Track or Perl in the Wild Track. We’ll be approving a handful of talks every week. This doesn’t mean that if your talk isn’t approved right away, it won’t be. However, the sooner you get your talk proposals in, the better chance you have of getting a talk approved and placed on the schedule.
Our deadline for proposals is March 15, 2012. So get those proposals in now. This year, there’s no time for procrastination, because the slots will be getting filled up in real-time.
I've heard some people complain about 5.12 and 5.14 not adding many new major features. Compared to 5.10 that's certainly true, but is that a bad thing?
Let's be honest, many (most) prominent new features of 5.10 are failures:
Smartmatching? I think everyone agrees it is broken.
given/when is even worse as it's almost impossible to predict if it will use smartmatching or not.
Lexical $_? Mostly a new source of bugs, and the _ prototype is merely a hack to work around lexical $_ issues.
MAD? It never reached any usable form.
etcetera
A lot of others are not flawed, but are so uncommon that I haven't seen them being used in any code. UNITCHECK, stacked filetests, no VERSION, the list goes on
At INOC, my place of work, I work on a lot of web applications with the backend written in Perl using Catalyst, and the frontend written in Javascript using ExtJS. With a UI written completely in Javascript, I often encounter bugs of the following form:
Fire up Catalyst.
Login.
Click through half a dozen controls in the UI.
Enter some data.
Click “submit”.
Watch the web application give you an angry error.
Facts: 30 corporate sponsors, 42 volunteer staff, 71 talk submissions (50 or so accepted), 91 individual sponsors, and.... 672 attendees. Yes, 672. I think it's safe to say that it's the biggest YAPC EVER. Wow. Just wow.
I'm so exhausted now (and I apparently caught a cold), so I can't quite come up with an eloquent way to express how I feel... but... wow.
At YAPC::NA 2012 we’re thinking about stealing a feature from PyCon they call Startup Row. In their exhibit hall they give away booth space to feature some up and coming new companies.
There are a lot of new companies using Perl these days, like Parking Mobility, Social Flow, and Bluer. I even have a few of my own. I’m willing to bet there are a lot out there we just don’t know about.
Depending on the interest level and number of submissions, we’ll either add some booths to our Job Fair for this, or we’ll open a completely separate exhibit space for it.
If you’re interested in getting a free booth and some other exposure at YAPC::NA 2012, please fill out our Startup Row Application. Submission deadline is March 1, 2012.
So we had the Belgian Perl Workshop 2011 last Saturday.
I wish to thank all participants for the conviviality of the event. We had a bunch of interesting interactive talks, which where well prepared by the speakers.
Including the gurus who shared their knowledge, the audience was particularly and constructively active during the talks. There were a lot of interventions and all went smoothly.
This is exactly what a workshop should be. People are learning by asking questions while others share info by interfering with the speaker's flow in a non-invasive way. Somehow everyone just felt that the flow belongs to the speaker.
Congrats to all participants for this brainstorming workshop !
Ever since I read this piece and more on evolutionary biology, ideas have been flipping in my mind.
This is more of a private hypothesis and I think it might be useful to perl community on how it sees itself from a long time lurker's perspective. I am not a good sample point though :)
This post has nothing to do with sexual selection. It's more about how communities are formed and how they sustain in a changing world.
Each and every programming language/Operating System/License out there has a community around it. A twitter hashtag has a micro community around it.
Generalizing from handicap principle and signaling theory, these are my axioms (sort of)
1) A community forms around signals
2) Signals are a way community member's recognize each other
3) Signals are *the only way* to recruitment new members
4) The signals of one community are irrelevant to other community
5) Signals encourage risky and useful behavior
6) Signals can't be described easily because there can be non-linguistic signals
A question recently appeared on Stack Overflow about using namespace::autoclean in conjunction with operator overloading.
It turns out that you can't, because namespace::autoclean, in addition to cleaning up symbols for imported subs, also cleans up the operator magic installed by overload.pm.
This had been noticed before, but the suggested fix was rejected in favor of implementing the logic to support overload methods in Class::MOP, which namespace::autoclean uses under the hood to figure out the list of allowed methods for a class, and it doesn't look like anyone is interested in doing that right now.
As it happens, I'm working on a distribution right now which uses Moose and does some operator overloading, so namespace::autoclean would be a problem. I decided that there's really no reason a symbol-cleaning pragma should depend on Moose (or the MOP) so I wrote namespace::sweep as a replacement. More on the advantages and disadvantages below.
Submit a talk for YAPC::NA 2012. We’re especially interested in talks on real-world Perl apps and quintessential Perl 101 talks, but we’re open to any ideas you have.
I'm writing about the Standard Perl Library for the Camel book (it still feels really strange to say something like that, like "Yeah, I'm helping ol' Mike paint the ceiling in this church, boy does my back hurt"). I'm going through the various installation directories and the limitations of @INC.
As you know, Perl searches @INC for a matching file. When it finds it, it stops. It won't keep looking for a later version
The ambitious can get around this. You could write a code reference that you stick in the front and completely reimplement the whole process. You can pre-scan the entire @INC and create links in a directory that you put at the front of @INC.
Does anyone actually do that for anything that matters (and not just for giggles)?
I could say a lot more about this, but it's back to the salt mines, ceiling, whatever.
For those would-be organizers: Since two years ago, we're hiring a professional photographer to capture the essence of the event. It's an extra cost, but very well worth it. You should consider it too!
The field of computation has many many metaphors. Objects is one of them.
To be honest, I don't really understand object oriented programming. I understand procedural programming aka C.
Procedural programming is like treating your computer as a dumb assistant. You tell it _what to do_ in the exact order(program/script).
Recently I began thinking about OOP in terms of how it can expand the dumb assistant metaphor. So this post is an exercise of trying to articulate it albeit, poorly.
In the real world, objects are dumb things. They sit around and do nothing. It is always a person who finds use for them.
Classically speaking, things have properties and things can be arranged into classes. It is the properties of the *thing* that differentiate it from other things of it's class and things of other classes.
I released
Marpa::XS 0.016000
a week ago and the
cpantesters results look excellent.
With this release, my conversion of Marpa from Perl to C
is finished.
A lot of Perl code remains, to be sure,
but all of it is code that
arguably belongs in some kind of
higher-level language.
This release was checked
for leaks and other memory issues.
The couple of issues that turned up were fixed.
What is Marpa?
Marpa is an advance over recursive descent
and yacc.
I hope the Marpa algorithm
will become the standard parser for
problems too
big for regular expressions.
When designing a Perl application that needs to run on many different versions I end up using 'corelist' a good deal. Most of the time I just needed a list of the additions or removals of core modules from different stable series of Perl releases. I kept all this information in a text file for reference. While searching for something Perl related it dawned on me that I should post this as it could be useful for other Perl developers as well.
I used 'corelist -r' and 'corelist -v ' to gather this data together. The release data is from 'perldoc perlhist'.
2008-12-14 Perl v5.8.9 released Pumpking: Nicholas Clark
2007-12-18 Perl v5.10.0 released Pumpking: Rafael Garcia-Suarez
2010-04-12 Perl v5.12.0 released Pumpking: Jesse Vincent
2011-05-14 Perl v5.14.0 released Pumpking: Jesse Vincent