Two Perl Mongers meetings, three talks, two reviews
Monday and Tuesday there were two Israeli Perl Mongers (israel.pm) meetings, of Haifa.pm and Rehovot.pm, respectively. I gave a talk at both of them.
Haifa is way up north compared to where I stay ("middle earth", A.K.A., Tel Aviv). I took an hour-long train ride there with Shlomi Fish. Then we walked over to Qualcomm, where Shmuel greeted us and offered snacks and drinks. I had foolishly forgot that not all places necessarily have a computer designated for the projector and didn't bring mine. Shmuel brought his and we hooked things up. (Tip: always carry a copy of Portable Open Office!)
Just as I finished setting up everything, the other folks arrived and with them Erez, who gave the first talk: How to Speak to Newbies. It was an excellent talk and a lot of fun. He hit some interesting points, definite sins that all us have (and some still) partake in, giving newbies hell. I can definitely say I learned from it. Erez, by the way, promised to write a post and upload the slides. (See, Erez, it's in writing, now you have to do it!)
I gave my Moose lecture and people were definitely interested. Except a single person who felt like things should be done differently ("a clearer should reset the value to the default given at initialization, not clear the attribute!"), people seem to understand the general (i.e., minimal) options rather fast - clearers, predicates, builders, lazy building, etc. Things that honestly, when I first heard them (not coming from an OO-rich background), needed a little time to fully grasp. So, either most people are smarter than me or I was able to get across quite well. Hopefully the latter. :)
When done, we all went to the train station, split there, and I got to ride the train back with Shlomi and Erez. Shlomi tried to teach Erez and me lambda calculus (which I asked him to) and unfortunately we kind of lost track after a while. Thanks for trying anyway, Shlomi! :)
Interesting note: on the train there was a poster saying that if [after getting out of the train] you forgot something [on the train] you should address the security personal that are [still] on the train. I wonder how you could do that from outside the train, since only then you can consider your possessions forgotten.
Yesterday at Rehovot.pm, which is in the other direction, I arrived late, along with my partners in crime (Tamir and Ferret). Apparently I mixed the time of the meeting with the one in Haifa. I waved to Gabor and told him I'm really sorry for being later, his reply: "I just got here 5 minutes ago myself".
There were roughly 10 people (same as in Haifa) and it was in a computer class room, so everyone had computers in front of them (pre-loaded with Strawberry Perl, and some with Padre!) to play with. We had some good introductory random conversation and then started the lecture. People seemed to enjoy the idea of Moose, saw the fun in it and even tried to write some stuff with it in the background. Showcasing Moose is rather easy, which expressed well in how - whenever someone asked "how would you do...?" - I could just Alt+Tab to a notepad and write two-three lines and there was the solution.
When the lecture ended, we followed up with more questions, talk on progress, the state of Perl 6, Rakudo and Rakudo Star. We've mentioned a few more technologies (Dancer came up, of course and so did Plack) and even a bit of personal experience in work places, recruiting different programmers (Perl, PHP, Python, Java) and some on how to market Perl.
Gabor handed out a few copies of The Perl Review, Round Tuits (!!!!) and beer mats for Moose, DBIC and Catalyst.
One important thing I learned regarding the lecture is that people are very interested in "Why and when?" instead of just "How?". When showing an example for a clearer and a predicate, the question that was on the tip of people's tongue was "when would I want to use this ability?" or "why would I need to use a clearer" and I know if I'll give another Moose lecture, I'll need to update the slides to have situations demonstrating the need.
Overall, I really enjoyed all the lectures (mine, the one Erez gave) and the most fun part was the community of it. In Rehovot, we had a hard time saying goodbye, we just stood outside and talked for a while longer, because it was that much fun. We were all eager to express, to learn, to talk, to share. To leave both places and go back home with a smile of "I had fun today" was more important to me than "I taught people something" (which I definitely felt) or "I learned something" (which I felt as well).
You can read Shlomi's review of the Haifa.pm meeting here.
A clearer resets the attribute to having no value, just as though it had never been supplied in the constructor or given a default value or whatever.
If the attribute also has a lazy default or builder, that default/builder will then be called the next time you call the attribute's reader/accessor, just as though it had never been supplied in the constructor or... etc. That's one of the reason lazy is awesome.
Heh. That's a good explanation. I said something along those lines. The reply I got was "No! It should do what I said it should do!"
In the end I was able to redirect it to "what you're talking about is reset(), not clear(). Tell you what, try and ask me why Moose doesn't have reset() and only has clear()"
"Why does Moose only has clear() and no reset()?"
"I don't know. Perhaps they were waiting for someone like you to point and say 'You're missing a reset()!' or perhaps they have sometime along those lines that I don't know, you should ask them."
That actually got it quiet down. :)