jozef's Friends' Journals jozef's Friends' use Perl Journals en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T01:54:56+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 jozef's Friends' Journals Austrian Perl Workshop 2010 - Call for papers <p>English below </p><p>&#8213;&#8213;&#8213;&#8213; </p><p>Wir rufen zum Einreichen von Vortr&#228;gen und Workshops f&#252;r den &#246;sterreichischen Perlworkshop 2010 auf, der am 5.&#8211;6. November in Wien stattfinden wird. Wir m&#246;chten gerne eure Themen &#252;ber die Sprachfamilie Perl und damit verbundenes erfahren. Der Stichtag dazu ist der 8. Oktober. </p><p>Um einen Vorschlag einzureichen und f&#252;r weitere Details, siehe <a href="">unsere Website</a>. Bitte <a href="">abonniert den Feed</a> f&#252;r zuk&#252;nftige Benachrichtigung. </p><p>Die Orgas </p><p>&#8213;&#8213;&#8213;&#8213; </p><p>We are announcing the call for papers for talks and workshops for the Austrian Perl Workshop 2010 which will be held on November 5th&#8211;6th in Vienna. We would like to hear about your ideas concerning the Perl family of languages and related topics. The deadline for submissions is October 8th. </p><p>To submit a talk abstract and for further details visit <a href="">our web site</a>. Please <a href="">subscribe to the newsfeed</a> to stay updated. </p><p>The organisers</p> daxim 2010-08-25T09:34:44+00:00 events Upcoming Events with Perl content I have not posted here for ages but according to the recent Perl Survey it seems there are still a lot of people who prefer reading than <a href=""></a> or <a href="">Iron Man</a> <p> So just to let these readers to know, there are going to be a number of <a href="">tech-events with Perl content</a> where you could help out.</p> gabor 2010-08-10T17:46:55+00:00 journal Some after-thoughts from YAPC::Europe in Pisa #yapceu2010 <p>Yesterday evening I was so happy to return home from Italy. No, Italy is great, my fear was my palm tree I bought last month which was standing at the door of my house without water. I am so happy to say it survived well.</p><p>The weather in Italy was amazing &#8212; nothing to do with neither Amsterdam with its moderate climate nor Moscow's fires and smog my friends suffer from.</p><p>Although Italians may be very unpleasant when they do have their critical days having to serve foreigners in bars, the general impression is definitely positive. And I was happy as a child when (yeah, after some drinks) was able to use my Italian (which is obviously much much better than my Dutch or Latvian<nobr> <wbr></nobr>:-) for short communications asking for directions or at cafes/airport/taxi/hotel. Really, I did not expect it from myself as I have only passed basic Italian course living in Moscow more than a half year ago, and had no experience after that.</p><p>OK, being a crazy one (in a terminology of Cog), conferences for me is not only talks or travel fun, but also a keep-my-eye-on behaviour how all is going on from the point of view of the organizers.</p><p>Have to say that the conference was organized pretty well. There were a couple of things I'd like to improve, but that was not too important for the conference itself as well for most of the attendees.</p><p>First, there were no printed schedule in the morning of the first day. Even if everyone seems to bring their laptop, online schedule is not the one I prefer personally. Like with books, paper is preferable for human.</p><p>The second thing was lack of information of what and where goes on beyond the conference. Namely, I missed Night Pisa tour, and lots of us had difficulties with figuring out where the post-conference meeting takes place (and later, finding the way to it). Not to say that the bar selected for that was awful even if the personnel spoke English (I'd prefer much more entertaining Italian speaker than the one speaking English and hating foreigners).</p><p>As for talks, I can't say I fully enjoyed the programme, as being a person driven by ideas I can't attend talks with lots of Moose/Catalyst/internals/DB boring stuff<nobr> <wbr></nobr>:-) Opposite, every Perl 6 talk I attended was amazing (although I missed two and a half of them due to some collisions in my personal schedule). Hope one day to see talk recordings online (and would like to update as well). My personal grand prix goes to the talk on NQP by Patrick. It was a good introduction into a sublanguage I never considered worth to explore.</p><p>And I'like to say that I am looking forward to Perl 6 hackathon we would like to organize in Moscow on the day before YAPC::Russia, namely on 13th of May 2011. I'll find the venue for that.</p><p>And not to forget, we won the contest and (ha-ha, have to) are hosting the next YAPC::Europe in Riga, 15-17 August of 2011.</p><p>Cheers.</p> 2010-08-09T11:29:13+00:00 journal Last Post <p>Well, on, anyway. I'd like to thank those who run this place for doing so, as it's been the place I've blogged about my Perl 6 stuff for the last couple of years. However, I've found the user experience of WordPress a lot more enjoyable - it was great for the Perl 6 Advent Calendar - and figure I'll blog more if I more enjoy doing so.</p><p>So, from now you'll be able to read my Rakudo news and other Perl 6 related ramblings from my <a href="">shiny new blog</a>. For those reading through Planet Six, no action required - I'll arrange for my new blog to be aggregated there.</p><p>See you <a href="">over there</a>.</p> JonathanWorthington 2010-07-18T02:58:24+00:00 journal Perl Mova + YAPC::Russia <p>On Friday I flew from rainy Sweden to scorching hot Kiev to attend a combined Perl Mova + YAPC::Russia. The passport queue wasn't overly long, and I'd happily managed to be hand luggage only, so I wasn't too long in the airport. I planned to take the "official" bus, but before it appeared I heard a lady shouting about a mashrutka going to the center, so I took that instead. Understanding basic Russian - well, it coulda been Ukrainian too - sure comes in helpful. I was dropped by a metro station, leaving the 15 euro-cent (yes, really) metro ride a few stops to where I was staying - a hotel right on the main Independence Square. I was a little bemused as I checked in to be spoken to in a mixture of Russian and Ukrainian, by the same person in the same conversation.</p><p>My plane had been slightly late, so I was also slightly late joining the pre-workshop dinner. After I'd filled up on a tasty dish of borsch, we wandered on to a pub that offered no less than 22 different beers. I was...happy.<nobr> <wbr></nobr>:-) Some beer later, it was time for a little stroll, which terminated in a Japanese restaurant, where I had my first encounter with wasabi vodka. All in all, a very fun start to my visit here.</p><p>I was worried I'd sleep badly in my room since it was a little hot, but I actually slept really quite well and was nicely refreshed for the hack meet. There were a lot of people there hacking on all kinds of different projects. Some folks were interested in contributing to Rakudo, and so we gathered around on a table and I helped each of them find and get started on a task. It went extremely well - everyone in attendance contributed Rakudo patches or code that allowed us to close an RT ticket right there on the day, or that will after I apply patches. Of note, people who were new to Rakudo hacking:</p><ul> <li>Located and unfudged tests for \e that was recently fixed, allowing the ticket about that to be closed.</li><li>Implemented<nobr> <wbr></nobr>.all,<nobr> <wbr></nobr>.any,<nobr> <wbr></nobr>.one and<nobr> <wbr></nobr>.none method versions of junction constructors and added tests for them, allowing that ticket to be closed.</li><li>Debugged and then wrote a patch that fixed a bug in range iteration, plus added tests, allowing an RT ticket to be closed.</li><li>Implemented<nobr> <wbr></nobr>.cando and did some related refactors in the area that I suggested and also located some tests to unfudge. Due to network issues that one didn't get applied on the day, though I have it and have just applied it locally, so it'll be in soon.</li><li>Tracked down what was wrong with forming colon pairs from variables involving twigils, patched it and made sure we had some test coverage of that; again, we closed a ticket.</li><li>Wrote a patch to fix a bug in the series operator that had been reported in RT, along with some test cases for it.</li></ul><p>I think it goes without saying that this is really quite impressive, especially given they had to share one Rakudo core hacker between them for guidance. In fact, I even had time to cook up a few patches myself amongst guiding others! It was great fun to hack alongside such pepole. I handed three spectest repo commit bits out that day, and I think they were all used. It's experiences like the one at this hack meet that make me really glad that we're writing most of Rakudo in Perl 6 or a restricted dialect of it - all of the above tasks required (apart from a one line change in one of them) no PIR or C knowledge at all. Some of those at the hackmeet said they may find time for a bit more Rakudo hacking in the future, which would be really great.<nobr> <wbr></nobr>:-) After the hack meet, there was more nice food - including a Chicken Kiev - and some lovely beer at prices I've become rather unacustomed to in Sweden.</p><p>Day two was talks day. I had one 40 minute talk on Perl 6 signatures which went well. I received some great questions, and I hope I answered them all to people's satisfaction. Later on, I gave a lightning talk about Rakudo * and what it would contain, and showed off a <a href="">simple little example site</a> that used Rakudo Perl 6, including the modules JSON::Tiny by moritz++ and FakeDBI by mberends++ along with Blizkost (sorear++ for that) to get at the Perl 5 CGI module (though I'll refactor it to use in the near future - I just wanted an excuse to show off Blizkost). The evening was, of course, more food and beer, and a lot of fun.</p><p>The final day of the workshop was a bit different - a river cruise! It was very relaxing, and gave me yet another way to enjoy this beautiful city. Certainly good for unwinding after a workshop. Most people left either after that or were flying home today; I on the other hand used "no direct flight on a Tuesday" as an excuse to get another day to potter around Kiev, and today I've enjoyed doing exactly that, gently strolling between my favorite sights and stopping in the odd open air cafe in a park to keep myself refreshed in the somewhat stuffy weather. Soon it'll be time to take my last dinner here, an evening stroll and maybe find some outdoor place to sit and nurse a final beer before it's time to get some sleep before my flight home tomorrow.</p><p>Beautiful Kiev. It gets harder to leave each time I come.<nobr> <wbr></nobr>:-)</p> JonathanWorthington 2010-06-15T15:11:09+00:00 journal Perl Mova + YAPC::Russia 12-14 June <p>Very soon, in a month, there will happen joint conference "Perl Mova + YAPC::Russia".</p><p>Dates: 12-14 June 2010.<br>Place: Kiev, Ukraine.<br>Site: <a href=""></a>.</p><p>It is the third Perl Mova (Ukrainian Perl workshop) and the third YAPC::Russia, which moves this year to Ukraine.</p><p>We will have three days, each for different things.</p><p>* 12 June. Hack meet.<br>* 13 June. Talks day.<br>* 14 June. River trip.</p><p>While the first two days contain more or less standard Perl activities, hacking and speaking, on the third day we plan extraordinal Dnipro River Trip.</p><p>I've already hired the ship: <a href=""></a>. We will pass along Kiev riverside (which includes beautiful sightseeing of the right side of Kiev, including world-wide known domes of Lavra), and then go to the island somewhere in so called "Kiev sea". Trip continues from 10 am to 6 pm on Monday, 14th of June.</p><p>You may still join if not the conference (which will be mostly in Russian, not counting Jonathan Worthington's contribution), but at least the river trip day. Conference's site is <a href=""></a>. It will be cool, and you may also feel of what we are going to propose for YAPC::Europe in 2011.</p><p>P. S. I am now in Kiev for a week holidays, and it is so nice here that I'd like to stay longer, until the conference.</p> 2010-05-10T17:52:08+00:00 journal &#8220;Communism and Perl 6&#8221; (quote) <p>&#8220;That is why I state that Perl 6 and communism are in close relation! The proof is easy: the latest Rakudo release was named after in the 140th birthday of V. I. Lenin, 22th of April! And there's more: version number #28, multiplied by 5 (number of beams in a star) gives 140!&#8221;</p><p><a href=""></a> (Russian)</p> 2010-05-03T16:43:20+00:00 journal Facebook privacy - Instant personalisation and connections <p> <b>Facebook privacy - Instant personalisation and connections</b> <br> Facebook has been announcing a number of changes recently, many of which will impact your privacy. While you may not have seen them hit your account yet, they will almost certainly do so soon. </p><p> <b>Connections</b> <br> In the past, Facebook had a whole bunch of free-form fields for things like location and interests. You could put practically anything you wanted in these, and show them to your friends. For things like interests, there was some basic search features, but they weren't very advanced. </p><p> These free-form fields are now changing into "connections". Like existing fan pages, connections represent an actual relationship, rather than just text. Also, just like fan pages, they're <i>public</i>, so you can see all the people who like <a href="">cooking</a>, or <a href="">mushrooms</a>. The new connection pages include extra information including text from wikipedia, and an automatic search through both your friends and all public posts to look for content related to that subject. The same applies for your location (hometown and current), your employers, and education! </p><p> From an application developer's standpoint, this is a great change. The existing free-form fields were next to useless. From a privacy standpoint, this is an interesting change. It's great to be able to find friends who share your common interests, but because connections are <i>public</i>, you're not just revealing that information to your friends. You're revealing it to the whole wide world. For any user who just accepted the defaults the defaults, I now know the city where you live, who you work for, where you went to school, and what you enjoy doing, in addition to who your friends are, and what you look like. </p><p> Luckily, you don't have to convert your interests and locations to connections. However if you don't, those parts of your profile will simply cease to exist. Facebook would <i>really</i> like you to convert to connections, and you'll get a scary looking message about parts of your profile being removed if you don't. Of course, not all of your interests will map to new connections, and those that don't will be discarded in any case, so whatever you do you <i>will</i> be losing information, including potentially the dates of your employment and education. For me, that's not a big deal, but it might be for you. If you <i>do</i> want to continue listing your interests in a free-form and private fashion, I recommend you simply add them to your "about me/bio" section. </p><p> If you <i>do</i> convert your interests (and Facebook will ask you to do so sooner or later) then keep in mind that these (along with your existing fan pages) are <i>very</i> public. Your friends, family, employer, potential employer, applications, websites, enemies, and random people on the Internet will all be able to see them. If you don't want that, your only recourse is to remove those connections. </p><p> In theory, you can also edit your birthday, and change your age to under 18, which <a href="">limits what Facebook will publicly disclose about you</a>, although your connections are still very broadly published. Unfortunately, as I discovered the hard way, you can only transform from an adult into a minor <i>once</i>, so if you've edited your birthday in the past you may not be able to change it now. In fact, if you've already converted to the new connection system, then your birthday will no longer show up as something you <i>can</i> edit, so make sure it's set to a date you're happy with before going through the conversion. </p><p> <b>Instant Personalisation</b> <br> Facebook is rolling out changes to allow websites to automatically access your "publicly available information", which includes name, profile picture, gender, friends, and "connections". </p><p> What's that, I hear you ask? Are these the same connections that I just added to my profile during the conversion process? They sure are! I bet you just <i>love</i> the idea that when you visit a website, they not only <i>automatically</i> know your name, your location, and your friends, but also a detailed list of your interests, activities, education, and employer! </p><p> Luckily, you can turn instant personalisation off. There's a new ticky box on the <a href=";section=applications">applications and websites privacy page</a>. For some users, this is on by default, and for others it's off, and I'm not yet sure how that's determined. If it's not ticked now, and you later go through the connections conversion process, then I recommend you go back to double check it's still unchcked. </p><p> Having ensured that instant personalisation is disabled, I bet you're feeling pretty safe. However there's a great little clause if you read the <a href="">fine print</a>: <i>To prevent your friends from sharing any of your information with an instant personalization partner, block the application...</i> </p><p> That's right, your friends can share your information. This actually isn't anything new; applications your friends have installed <a href="">can also view your information</a>, but you probably don't want them sharing your info with the instant personalisation sites either. </p><p> So, in addition to unticking a box, you probably want to visit the applications <a href="">listed in the FAQ entry</a> and block them, too. </p><p> While you're at it, I recommend you look at your <a href="">list of authorised applications</a> as well, and remove any ones that you no longer need. It's <i>very</i> easy to authorise an app these days (in fact, commenting or liking this blog post will do so!), so you might be surprised to see what's there. </p><p> Finally, if you want to protect against accidental leakage of your profile information, consider <i>logging out of Facebook</i> before browsing other websites. Sure, this may be a pain in the arse, but Facebook can't share your information if you're not logged in. </p><p> <b>Conference Talk at OS Bridge</b> <br> I'll be <a href="">talking more about Facebook privacy</a>, along with some practical demonstration of tools, at the <a href="">Open Source Bridge</a> conference from the 1st-4th June 2010. </p> pjf 2010-04-23T06:31:18+00:00 journal Perl 6 talk in Malm&#246; <p>Recently I moved to Sweden to join startup company <a href="">Edument</a>. They are, happily, very open to and supportive of my involvement in the Perl 6 project, and are organizing and sponsoring me to give a <a href="">talk on Perl - both 5 and 6</a> for the <a href="">Dataf&#246;reningen</a> in Malm&#246; on Tuesday 27th April. I believe this is only open to those who are members of the user group; if you are, feel free to come along though.</p> JonathanWorthington 2010-04-20T09:55:36+00:00 journal relaunch done <p>The new and shiny <a href=""></a> is finally online!</p><p>As you might expect it's crafted using the finest ingredients of Modern Perl: Catalyst, DBIx::Class, Moose, HTML::FormHandler, KinoSearch. Relaunching the site was a nice project, even though there were some setbacks:</p><p>I was forced to switch from Postgres to MySQL (using - the horrors - MyISAM), so I couldn't use any real database features like transactions and referential integrity; the launch date was postponed a few times, so I couldn't help organising the QA Hackathon as much as I wanted (in fact I can also not attend all days, because I want to spend some time with my family before leaving for Berlin / Icleand).</p><p>Anyway, after fixing some last post-deployment glitches everything seems to work now. Yay!</p> domm 2010-04-09T06:58:47+00:00 journal The Easter Hackathon <p>I spent my Easter up in Uppsala with masak++, who it turns out is not only awesome at breaking Rakudo, but also a great host. Amongst a lot of memes, bad puns, wonderful noms (I learned how to make k&#246;tbullar!) and even a Czech beer, we got quite a bit of Perl 6 hacking done too.<nobr> <wbr></nobr>:-)</p><p>On the first evening, we managed to fix up a bunch of issues with various escape sequences in regexes and strings, and also the fact that "\$x" was failing to escape the $ since we made ng the new master! I fixed a longstanding bug that <a href="">annoyed masak so much that he dedicated a whole blogpost to it</a>, did some work on enforcing zone constraints in signatures and, in an awesome bit of collaborative development along with colomon++ and moritz++ wired up their new reduction implementation to the reduction meta-operator parsing stuff. That means that you now have triangle forms of the meta-ops, chaining meta-ops work and right-associative ones do the right thing too. We never had any of these right before.</p><p>Spurred on by the interpolation work on the previous night, on the next day I started looking at what it would take to implement more of the interpolation bits, and after a bunch of hacking I accidentally the whole lot of it. You can now interpolate indexes into both arrays and hashes, calls to subroutines and method calls on all of these. The way this works in Perl 6 parsing-wise is really neat: we just call from the quote parser back into the standard expression parser, but giving it a few constraints so it knows only to parse the things that are allowed to be interpolated into strings. It's a fairly directly following of STD - we differ in a couple of minor ways for now, but the approach is the same.</p><p>Along the way, I used the regex tracer that pmichaud++ had implemented while developing the new grammar engine, and noticed that we seemed to be dropping into a lot of protoregexes we shouldn't have been. A little more exploration and I realized that we were failing to calculate a bunch of constant prefixes for regexes. Fixing that gave a 5% saving on parse times.</p><p>The day after that, I worked on something I'd really been putting off because it's hard and painful: making the setting the outer lexical scope of user programs. While some languages define a prelude, Perl 6 essentially defines a "circumlude" - it's as if your program was running as an inner lexical scope inside the built-ins. That means that you find just about everything through lexical scoping. I got the first difficult 80% done and committed, but I suspect I've now got another really difficult 80% left to go, and probably another really really difficult 80% after that. Along the way, I fixed some bugs to do with scope modifiers "leaking". Anyway, to prove it helped somewhat, I tossed a whole bunch of "our"s that had been in as hacks while we didn't have the setting as an outer lexical scope. I suspect that perfecting this is going to be a large chunk of my work on Rakudo over the next couple of weeks.</p><p>The last day, I did the (relatively easy, thanks to all the groundwork I had laid during my signatures grant) bits of work to get us able to do smart-matching against signatures. This deserves an entire post of its own, and I'll write one for you soonish, but essentially you can use it to write a given/when that dives into a hash/array/object and looks at whats in it, just using declarative signature syntax. It's just like having a sub-signature on a parameter passed to a block or routine, apart from the signature object stands alone. By the way, I do plan to submit a talk on signatures for YAPC::EU - I'm really quite excited about the declarative power they offer that goes far, far beyond a better way to do parameters than Perl 5's @_. Especially in combination with multi-dispatch.</p><p>masak++ spent a good portion of the time working on Temporal/DateTime spec and starting an implementation to back it up. It has to be one of the most bikeshedded areas in the Perl 6 spec, with plenty of "let's do something SO clever" thinking along with the much more sensible "we want something minimal but useful in the language itself, and the clever stuff belongs in modules". Anyway, masak++ and mberends++ for having the patience and diligence to take on something that we really need a finalish answer on, amongst all the various opinions people have on how it should be done. I'm hopeful that we're now approaching the point where we have something that works for the vast majority of use cases, and the answer to anyone who it doesn't work for is simply, "go write a module".</p><p>Anyway, that was The Easter Hackathon! For those not following the commits, I'm happy to report that others are also committing bits here and there, and we're steadily working towards brining you Rakudo *.<nobr> <wbr></nobr>:-)</p> JonathanWorthington 2010-04-08T23:59:06+00:00 journal Perl QA Hackathon 2010 Update The <a href="">hackathon</a> will start in ~ 2 weeks, so here's a quick update on our status: <ul> <li>We have a new sponsor: <a href=""></a>. Yay! pst++</li> <li>Unfortunately David Golden, Ricardo Signes and Barbie can not make it.</li> <li>We accepted two last-minute requests from Miyagawa and Gabor Szabo.</li> <li>There was a tiny problem with the hotel, which luckily got spotted by Ovid. We have fixed that problem now.</li> <li>We will meet next week (during the monthly meeting which will from now on take place on the first Thursday each month) to discuss the agenda etc.</li> </ul><p>We're all very much looking forward to the event!</p> domm 2010-03-27T08:44:34+00:00 journal Understanding world Perl blogging <p>Short version: <a href=""></a> site launched. It provides English translations of Perl posts from around the world.</p><p>Long version:</p><p><a href="">Iron Man</a> and <a href=""></a> demonstrated that there are lots of Perl folks who write about Perl and you never heard of them.</p><p>Even more, on Iron Man we see lots of non-English posts, and those of us with non-native English usually can read only their native language and English. For example, lots of Japanese posts appear, and I can only see pieces of Perl code understandable there.</p><p>Copy-pasting post URLs into Google Translate on a daily basis is quite annoying. I catched myself at starting reading recent Italian posts about the forthcoming YAPC::Europe, and then switching to Google Translate, as I can't read much Italian yet. The same is with German. Both of them are more easily understandable than Japanese though<nobr> <wbr></nobr>:-)</p><p>Today I launched <a href=""></a> site which is a blog posts aggregator combined with automatic translator into English.</p><p>All posts, not depending on their original language, appear on in English, thus I can now read all of them, including Japanese, Farsi and Chinese!</p><p>Of course, automatic translation is not yet perfect, but thanks to Google, it gives fast and suitable results, especially when the target is English.</p><p>To demonstrate advantages of, compare these two posts, original and translated: <a href=""></a>. The word "Rakvdv", which looks as it would be written by ancient Romans, is clearly understandable now.</p><p>I will try to fix some issues and add more functionality to the site during the following weeks.</p><p>As for technical details, I only wish to mention yet another problem with handling Unicode. It happened with <a href="">WebService::Google::Language</a>. Such errors are one of the most common issues with Perl modules today (remember, for example, <a href="">another issue with Unicode arose</a> when Alex was coding</p><p>Start using <a href=""></a> right now!</p> 2010-03-26T22:21:41+00:00 journal Ada Lovelace Day (Part 2) <p> <b>Ada Lovelace Day (Part 2)</b> <br> Today is Ada Lovelace continuation day; a day for continuing blog posts reflecting on the awesome contributions of women to science and technology. Here is my continuation from my <a href="">previous post</a> of my personal heroines. </p><p> <b> <a href="">Selena Deckelmann</a> </b> (<a href="">@selenamarie</a>)<br> Wow. Selena. Where do I start? Selena does <i>everything</i>. She runs the <a href="">Open Source Bridge</a> conference, the <a href="">Portland Postgres User Group</a> (PDXPUG) with <a href="">@gorthx</a>, the Code'n'Splode tech group, and gives talks at <a href="">Ignite Portland</a> and numerous conferences worldwide. She has an amazing garden, keeps chickens about as well as I do, and boundless energy. </p><p> And I mean <i>boundless</i> energy. Selena seems to be awake before dawn, will party into the night, and seems to always have half a dozen projects on the go at once. Selena coming off a trans-pacific flight is only slightly less bouncy than normal. As if that wasn't enough, she's also an amazing host, and was kind enough to let Jacinta and myself crash at her place last year when we were visiting Portland. </p><p> Selena is also an amazing public speaker, a great storyteller, knows more about databases than anyone else I know, and went to Nigeria to help combat election fraud. She is well-versed in awesome. </p><p> Selena is responsible for convincing me that I <i>really</i> need a pull-up bar at home. </p><p> <b> <a href="">Karen Pauley</a> </b> (<a href="">@keiosu</a>)<br> I first met Karen at a <a href="">Sydney Perl Mongers</a> meeting a few years back. Karen is the Steering Committee Chair of the <a href="">Perl Foundation</a>, and is quite frankly one of the most friendliest and interesting people I've ever met. </p><p> Karen is responsible for making sure things get done, and a lot of her work is behind the scenes. In fact, I think it would be correct to say that Karen is awesome at meta-work; she has the rather unenviable task of encouraging technically minded people to do productive things. Her talk at the <a href="">Open Source Developers Conference</a> on managing volunteers was brilliant. </p><p> I'm personally indebted to Karen for listening to all my crazy ideas, sending me the most amazing Christmas Cards from Japan, providing fashion advice, making me laugh (a lot!), being an awesome person to hang out with at conferences, and for standing in the hot Australian sun with a digital SLR. If you've seen <a href="">photos of me draped over a nice looking sports car</a>, then that's probably Karen's work.<nobr> <wbr></nobr>;) </p><p> I aspire to become anywhere near as good a conversationalist as Karen. </p><p> <b> <a href="">Mary Jane "MJ" Kelly</a> </b> (<a href="">@mjmojo</a>)<br> I met Mary Jane completely by chance at OSCON last year. At the time, I thought that she was pretty darn awesome. What I didn't realise is that she's much more awesome than I first thought. </p><p> Mary Jane is full of ideas. <i>Cool</i> ideas. Ideas which involve industrial cutting lasers, 3D printers, quilts, robots, fractals, untraditional business cards, topography, steampunk, using tattoos for social hacking, and adventures! </p><p> Better still, MJ doesn't just have great ideas, she implements them too! I'm hugely looking forward to seeing her talk at this year's OSCON, which is all about hacker spaces and building awesome things. </p><p> Mary Jane is actively involved in computer security, particularly in the field of anti-fraud technologies in on-line gaming. MJ founded the <a href="">Girls In Tech Seattle chapter</a>, and organised the 2007 Northwest Security Symposium. </p><p> MJ has a wicked sense of humour that never fails to make me smile, shares my love of costumes and cool events, and is solely responsible for my knowledge of waffle-makers. </p><p> <b>Honourable mentions</b> <br> There are a lot more women in technology who have been hugely influential in my life, either by changing the way that I think, or from teaching me amazing new things. In particular, I'd love to give a special mention to <a href="">Leslie Hawthorn</a>, <a href="">Sulamita Garcia</a>, <a href="">Emma Jane Hogbin</a>, <a href="">Allison Randal</a>, <a href="">Audrey Tang</a>, <a href="">Jenine Abarbanel</a>, <a href="">Akkana Peck</a>, <a href="">Brianna Laugher</a>, <a href="">Brenda Wallace</a>, <a href="">Mary Gardiner</a>, <a href="">Donna Benjamin</a>, <a href="">Raena Jackson-Armitage</a>, <a href="">Pia Waugh</a>, <a href="">Sarah Stokely</a>, <a href="">Ricky Buchanan</a>, <a href="">Lindsey Kuper</a>, and <a href="">Liz Henry</a>. </p><p> I don't have an Ada Lovelace Day list on twitter, but I do have my <a href="">techwomen</a> list, which includes all of the above and more. </p> pjf 2010-03-25T14:36:27+00:00 journal Ada Lovelace Day (Part 1) <p> <b>Ada Lovelace Day (Part 1)</b> <br> Today is <a href="">Ada Lovelace day</a>; a day for reflection on the awesome contributions of women to science and technology. Today, I would like to pay tribute to some of my personal heroines, and as you'll see, there's quite a few of them. I've tried to list them in roughly chronological order. </p><p> <b> <a href="">Dr Katherine Phelps</a> </b> <br> In my early teens I had a Commodore 64 with a 1200/75 baud modem, which I used to access local bulletin board systems (BBSes). This was the start of what I would discover was a lifelong joy of communicating with people from behind the safety of a monitor, or in the case of the C64, a television. </p><p> Katherine, and her husband Andrew, ran one such local BBS called the Rainbow Connection, and I met them both at a BBS meet-up. Katherine seems to have a knack for encouraging younger people to excel, and taught me the basics of HTML, and even had me editing web-pages for <a href="">Glass Wings</a> and other websites. In fact, it's due to Katherine that I got my first exposure to the Internet and Internet programming. </p><p> Today, Katherine is still prominent in the fields of storytelling, interactive fiction, game-writing, and comedy. Katherine is almost wholly responsible for me getting into Japanese Animation, by showing me an nth generation, unsubtitled, videotape of <a href="">My Neighbour Totoro</a>, with herself and Andrew providing a very amusing translation as we watched.<nobr> <wbr></nobr>;) </p><p> <b> <a href="">Kirrily 'Skud' Robert</a> </b> (<a href="">@Skud</a>)<br> I met Skud though Katherine, also while I was still at high school. At the time I was living with my parents as a quiet, introverted geek. All of my friends, and most of the technical people I knew, were also quiet and introverted types. </p><p> Skud pretty much shattered all the stereotypes I had for what it was to be technical. She was outgoing, opinionated, pushed boundries, made things happen, was extremely good with people, had unconventional social views, and was <i>way</i> cooler than me. She still is. </p><p> Skud has had a massive influence on my life. She started her own business (Netizen) and wrote a set of course manuals on Perl. Some years later, that same writing would form the basis of <a href="">Perl Training Australia</a>'s own <a href="">course manuals</a>. Skud has been highly influential in the Geek Feminism movement (which has both a <a href="">blog</a> and <a href="">wiki</a>), and gave a critical keynote entitled <a href="">standing out in the crowd</a> at OSCON 2009. </p><p> Often I feel that whenever I discover a new experience, it's actually something Skud has been doing for at least a decade. I still fondly remember Skud giving me advice on etiquette at a rather incredible FOSS party a few years back. In fact, <a href="">etiquette</a> is another thing Skud is rather good at.<nobr> <wbr></nobr>;) </p><p> Skud continues to be one of my most favourite people in the world, and I was delighted to have the chance to visit her in San Francisco last year after OSCON. My personal motto, never refuse an adventure, was directly lifted from one of Skud's new year's resolutions. </p><p> <b> <a href="">Jacinta Richardson</a> </b> (<a href="">@jarichaust</a>)<br> Once I got to university, I started an anime club. One year, working behind the desk, and with my hair in pigtails and balloons, a girl approached and asked about the club. At the end of the conversation she said "I might come back later", which when advertising an anime club usually translates to: "I think you're a complete freak, and I hope to never see you again in my life." </p><p> To cut a long story short, she came back, and she was studying Software Engineering.<nobr> <wbr></nobr>;) </p><p> Jacinta was a receipient of a 2008 White Camel Award for outstanding contributions to the Perl community. Along with running <a href="">Perl Training Australia</a>, she's also one of the original organisers of the <a href="">Open Source Developers' Conference</a>, has helped with countless <a href="">Perl Mongers</a> meetings, and is largely responsible for our <a href="">Perl Tips</a> newsletter. </p><p> Jacinta also does a lot of behind the scenes work which is not easily seen. She has contacts in practically every user group in Australia, so Jacinta is often involved when organisation of Australian-wide events are needed. At conferences she's often giving up her own time to coach nervous speakers (including me!). In fact, Jacinta even had a hand in one of my most favourite talks of all time, <a href="">@webchick</a>'s <a href="">Women in FLOSS</a>. </p><p> <b> <a href="">Emily Taylor</a> </b> (<a href="">@Domino_EQ2</a>)<br> I met Emily shortly after a phone-call from Jacinta saying that I was going to have a late addition to my Perl class. Emily arrived at lunchtime, and started as a bright, attentive student; she quickly caught up with the rest of the class, showed genuine talent, and was working on advanced exercises in no time. </p><p> However what got me really excited was <i>why</i> Emily was learning Perl. By afternoon of the first day, I was calling back to the office to say that our new student was <i>awesome</i>, and she was going to apply for the position of head tradeskill developer for Everquest II (EQ2). However I think it two at least two weeks until I discovered she was in my guild! </p><p> Now, Emily is indeed the grand tradeskill developer for EQ2. She has an <a href="">awesome blog on MMO tradeskilling</a> and MMOs in general. More importantly for Ada Lovelace day, she's also an active contributor to the <a href="">Gamers In Real Life (GIRL)</a> blog. </p><p> Emily presently lives in San Diego, where she distracts me yearly with photographs from Comic-con, and disagrees with me about what breakfast spreads are appropriate on toast. </p><p> <i>Stay tuned for tomorrow's continuation of this post.</i> </p> pjf 2010-03-24T11:59:48+00:00 journal A quick Rakudo update <p>The last week has brought some <a href="">sad news</a>. While software is of course insignificant compared to life and health, and it's absolutely right that at this time Rakudo should be the last thing Pm should be worrying about, I know a lot of people will be wondering what this means for the Rakudo * release. Myself and the other Rakudo developers are still working out the exact details, but here's an overview.</p><ul> <li>Rakudo * will be delayed in the "not in late April" sense. We all agree on this. There's no way you can take the lead developer of a project away, when the overall team isn't that big anyway, and expect to deliver the same product on the same schedule.</li><li>While I've always stated Q2 in my talks, we've also always had an internal target date of April. Of course, this is open source so nothing is internal, and April has been widely latched on to.<nobr> <wbr></nobr>:-) We're sticking with the Q2 goal, but now expect to deliver in May or June (preferably, before YAPC::NA<nobr> <wbr></nobr>:-)).</li><li>While we do of course greatly miss Pm's company, direction, and code, I'm comfortable that there's not anything on the Rakudo * ROADMAP that absolutely blocks on Pm. There's things that are harder for the rest of us to do, but we've actually tackled some of them head-on in the last several days, and now have first cuts of many of them - or in some cases are virtually done with them.</li></ul><p>There's been a lot of exciting progress in Rakudo recently - the ChangeLog for the last release gives a bunch of it, but we've done a whole load more since then too. I'll try and blog about some of it soonish. In the meantime, I'd like to thank all of the Rakudo and Perl 6 team for being amazing to work with on this, and my thoughts and prayers are with Pm and Paula.</p> JonathanWorthington 2010-03-22T01:09:03+00:00 journal My life refactored, Zavolaj, workshops, Rakudo and more! <p>It's been a while since I scribbled anything here, so a few quick updates.</p><p>First, an update on me. Since last time I wrote, I've moved country. Yup, I actually left behind my beloved Bratislava and I'm now hacking from Lund in Sweden. The beer - like everything else - is more expensive, and I don't have views of a beautiful city castle from my apartment here. But the city is overall very pleasant, I'm located a short walk to the center and the train station, and the supermarkets have a great range of international nom (and HP sauce!) I've yet to try the nearby curry house, or any of the other many appealing restaurants here, but I'm optimistic there will be plenty of WIN. Anyway, here's hoping I can get nicely settled down here.</p><p>I was greatly assisted with the move to Sweden by Perl 6 hacker Martin Berends, to whom I am extremely grateful. On the way, we went via the Netherlands Perl Workshop. I gave a couple of talks; I'll get the slides online shortly. It was really lovely to be at the Netherlands Perl Workshop again - the atmosphere was every bit as warm and friendly as I remembered from the last time. To everyone who organized and attended: thanks for a wonderful couple of days.<nobr> <wbr></nobr>:-)</p><p>In the couple of days before the move and during the NPW, mberends++ and I hacked on a shiny new project: <a href="">Zavolaj!</a> It is a way of doing native calls from Perl 6, just by adding a trait to a stub subroutine, and is a first draft for native calling in Perl 6. The upshot is that we now have a working MySQL client written using Zavolaj, in pure Perl 6! mberends++ is continuing to build this out, and happily this all means that Rakudo * will ship with database access, amongst other things. (I've also done an example of calling a Win32 API, and we're both pondering an ImageMagick binding with it too).</p><p>My first days in Scandinavia were actually mostly spent in Copenhagen, at a Perl 6 hackathon organized by - a group I hope to drop in on now and then, since I'm only an hour or so's train ride away. There's a wonderful <a href="">write-up by moritz++</a> that tells a lot of what went on, and I can only echo his sentiments about how much fun it was to hack and hang out in meat space with other Perl 6 folks. I'm already looking forward to the next time we get to do that!</p><p>Rakudo wise, the work goes on at a good pace. I've been working on lots of bits, and colomon++ has been having quite the patch fest too. The release later this week is a good step forward from last month's release, which was the first after the ng branch was merged. We've won back a lot of functionality again, and this is the first release ever that has some basic support for versioned modules - a direct consequence of the hackathon - and also regexes taking parameters, thanks to a patch from bkeeler++.</p><p>Anyway, that's all for now. Only to note that I expect to be making it to the Nordic Perl Workshop in Iceland in May, and with a bit of luck to the Perl workshops in France and Ukraine too (will take some fun logistics to do the two, but I did miss the French Perl Workshop last year, and I always really love to visit Ukraine, so I'll try and work out a way). Have fun, and I'll try and blog again soonish!</p> JonathanWorthington 2010-03-16T00:48:36+00:00 journal Unpacking data structures with signatures <p>My signature improvements Hague Grant is pretty much wrapped up. I wrote a couple of posts already about the new signature binder and also about signature introspection. In this post I want to talk about some of the other cool stuff I've been working on as part of it.</p><p>First, a little background. When you make a call in Perl 6, the arguments are packaged up into a data structure called a capture. A capture contains an arrayish part (for positional parameters) and a hashish part (for smok^Wnamed parameters). The thing you're calling has a signature, which essentially describes where we want the data from a capture to end up. The signature binder is the chunk of code that takes a capture and a signature as inputs, and maps things in the capture to - most of the time, anyway - variables in the lexpad, according to the names given in the signature.</p><p>Where things get interesting is that if you take a parameter and coerce it to a Capture, then you can bind that too against a signature. And it so turns out that Perl 6 allows you to write a signature within another signature just for this very purpose. Let's take a look.</p><p> <code>multi quicksort([$pivot, *@values]) {<br> &nbsp;&nbsp;&nbsp;&nbsp;my @before = @values.grep({ $^n &lt; $pivot });<br> &nbsp;&nbsp;&nbsp;&nbsp;my @after = @values.grep({ $^n &gt;= $pivot });<br> &nbsp;&nbsp;&nbsp;&nbsp;(quicksort(@before), $pivot, quicksort(@after))<br> }<br> multi quicksort( [] ) { () }<br> </code> </p><p>Here, instead of writing an array in the signature, we use [...] to specify we want a sub-signature. The binder takes the incoming array and coerces it into a Capture, which essentially flattens it out. We then bind the sub-signature against it, which puts the first item in the incoming array into $pivot and the rest into @values. We then just partition the values and recurse.</p><p>The second multi candidate has a nested empty signature, which binds only if the capture is empty. Thus when we have an empty list, we end up there, since the first candidate requires at least one item to bind to $pivot. Multi-dispatch is smart enough to know about sub-signatures and treat them like constraints, which means that you can now use multi-dispatch to distinguish between the deeper structure of your incoming parameters. So, to try it out...</p><p> <code>my @unsorted = 1, 9, 28, 3, -9, 10;<br> my @sorted = quicksort(@unsorted);<br> say @sorted.perl; # [-9, 1, 3, 9, 10, 28]<br> </code> </p><p>It's not just for lists either. An incoming hash can be unpacked as if it had named parameters; for that write the nested signature in (...) rather than [...] (we could have use (...) above too, but [...] implies we expect to be passed a Positional). For any other object, we coerce to a capture by looking at all of the public attributes (things declared has $.foo) up the class hierarchy and making those available as named parameters. Here's an example.</p><p> <code>class TreeNode { has $.left; has $.right; }<br> sub unpack(TreeNode $node (:$left,<nobr> <wbr></nobr>:$right)) {<br> &nbsp;&nbsp;&nbsp;&nbsp;say "Node has L: $left, R: $right";<br> }<br> unpack( =&gt; 42, right =&gt; 99));<br> </code> </p><p>This outputs:</p><p> <code>Node has L: 42, R: 99<br> </code> </p><p>You can probably imagine that a multi and some constraints on the branches gives you some interesting possibilities in writing tree transversals. Also fun is that you can also unpack return values. When you write things like:</p><p> <code>my ($a, $b) = foo();<br> </code> </p><p>Then you get list assignment. No surprises there. What maybe will surprise you a bit is that Perl 6 actually parses a signature after the my, not just a list of variables. There's a few reasons for that, not least that you can put different type constraints on the variables too. I've referred to signature binding a lot, and it turns out that if instead of writing the assignment operator you write the binding operator, you get signature binding semantics. Which can do unpacks on return values too. So assuming the same TreeNode class:</p><p> <code>sub foo() {<br> &nbsp;&nbsp;&nbsp;&nbsp;return =&gt; 'lol', right =&gt; 'rofl');<br> }<br> my ($node (:$left,<nobr> <wbr></nobr>:$right))<nobr> <wbr></nobr>:= foo();<br> say "Node has L: $left, R: $right";<br> </code> </p><p>This, as you might have guessed, outputs:</p><p> <code>Node has L: lol, R: rofl<br> </code> </p><p>Note that if you didn't need the $node, you could just omit it (put keep the things that follow nested in another level of parentheses). This works with some built-in classes too, by the way.</p><p>It works for some built-in types with accessors too:</p><p> <code>sub frac() { return 2/3; }<br> my ((:$numerator,<nobr> <wbr></nobr>:$denominator))<nobr> <wbr></nobr>:= frac();<br> say "$numerator, $denominator";<br> </code> </p><p>Have fun, be creative, submit bugs.<nobr> <wbr></nobr>:-)</p> JonathanWorthington 2010-02-20T00:21:50+00:00 journal The first release from ng is coming! <p>Tomorrow's regularly scheduled Rakudo release is the first one since the long-running "ng" branch became master. It represents both a huge step forward and at the same time a fairly major regression. Internally, the changes are enormous; some of the biggest include:</p><ul> <li>We're parsing using a new implementation of Perl 6 regexes by pmichaud++. It is a huge improvement, supporting amongst other things protoregexes, a basic form of LTM, variable declarations - including contextuals - inside regexes and more. The AST it generates is part of the PAST tree rather than having a distinct AST, which is a neater, more hackable approach. The issues with lexical scopes and regexes are resolved. Closures in regexes work.</li><li>NQP is also re-built atop of this. It incorporates regex and grammar support, so now we run both grammar and actions through the one compiler. It's bootstrapped.</li><li>In light of those major changes, we started putting the grammar back together from scratch. A large part of this was copy and paste - from The grammar we have now is far, far closer to STD than what we had before. Operator precedence parsing is handled in the same kind of way. We've started to incorporate some of the nice STD error detection bits, and catch and nicely report some Perl 5-isms.</li><li>Since the grammar got re-done, we've been taking the same approach with the actions (the methods that take parse tree nodes and make AST nodes). Thanks to contextual variable support and other improvements, a lot of stuff got WAY cleaner.</li><li>The list/array implementation has been done over, and this time it's lazy. There's certainly rough edges, but it's getting better every day. The work to implement laziness has led to many areas of the spec getting fleshed out, too - a consequence of being the first implementation on the scene I guess.</li><li>All class and role construction is done through a meta-model rather than "magic". The Parrot role composition algorithm is no longer relied upon, instead we have our own implementation mostly written in NQP.</li><li>The assignment model was improved to do much less copying, so we should potentially perform a bit better there.</li><li>Lexical handling was refactored somewhat, and the changes should eliminate a common source of those pesky Null PMC Access errors.</li></ul><p>Every one of these - and some others I didn't mention - are important for getting us towards the Rakudo * release. The downside is that since we've essentially taken Rakudo apart and put it back together again - albeit on far, far better foundations - we're still some way from getting all of the language constructs, built-in types and functions back in place that we had before. It's often not just a case of copy-paste; many of the list related things now have to be written with laziness in mind, for example.</p><p>So anyway, if you download tomorrow's release and your code doesn't compile or run, this post should explain - at least at a higher level - why. After a slower December and January, Rakudo development has now once again picked up an incredible pace, and the last couple of week's efforts by many Rakudo hackers have made this release far better than I had feared it was going to be. If we can keep this up, the March release should be a very exciting one.</p> JonathanWorthington 2010-02-18T01:18:33+00:00 journal Perl QA Hackathon: Last call to apply for sponsorship <p>The phase for applications for sponsorship ends on Friday, 2010-02-12. We then shall deliberate over the weekend and announce the result afterwards so that travel arrangements can be made ASAP.</p><p>If you're considering coming to Vienna, and want to apply for sponsored travel/hotel, add yourself to the <a href="">wiki</a> <b>now</b>. The more you tell us about your plans, the better!</p> domm 2010-02-10T18:55:03+00:00 journal Catching up: two Rakudo Days from December <p>Today plenty happened in Rakudo land - in fact, it was my most active day's Rakudo hacking in quite a while. colomon++ also made some great commits, and between us a lot of things moved forward today. For my part, hashes and pairs are in much better shape.</p><p>I wrote before that I'd got some Rakudo days left to write up; there are two of them, but I'll cover them both in this post, since some of the work crossed the two of them anyway. Here's what I got up to between them.</p><ul> <li>Filled out attribute composition logic for role application. A good chunk of this was written in NQP - in fact, all of the role appliers are.<nobr> <wbr></nobr>:-) Along the way I brought roles up to speed with the attribute part of the meta-object protocol - I'd forgotten that when doing it for classes, though since we couldn't compose attributes at that time it wasn't so interesting anyway. The end result was that we could pass S14-role/attributes.t again.</li><li>The specification states that if in a role you do inheritance, then this is just passed on to the class that the role is eventually composed in to, and added to that class's parents. We never had any support for this in master; with a neat meta-model approach it became rather easier to get it in place in ng.</li><li>Got BUILD/CREATE fixed up a bit and added back support for "has $.answer = 42" style declarations, again through the new attribute sub-protocol.</li><li>Got us handling non-block where blocks again, and added Block.ACCEPTS back - in Perl 6.</li><li>We had various "helpers" to let us do some of the low-levelish stuff in PIR. This is mostly for the places where we need those things in place in order to be able to compile the rest of the built-ins that are written in Perl 6. However, a couple of these helpers knew too much about Parrot and too little about the meta-model, which abstracts it away. So, I re-wrote some of those in terms of the meta-model. Much cleaner.</li><li>Before we relied entirely on Parrot for our "do we do this role" checks. However, given the unfortunate semantic mis-match between Parrot's built-in role support and what we need for Perl 6 (I did try and influence things in a different direction back when we were doing Parrot's role support, but failed), I've been gradually working us towards not relying on those for Perl 6's role support. (In master, it felt to me like we have almost as much code working around the semantics of Parrot roles as we'll need to have to not use them.) Anyways, the divorce isn't quite complete yet, and it's not even a goal for the ng branch. However, I did make a notable step towards it by getting our<nobr> <wbr></nobr>.does checks implemented entirely in terms of the meta-model. In the long run, I'm hoping we may be able to write the entire role implementation in NQP, which helps with the even-longer-run dreams I have of Rakudo having additional backends. But that's for The Future.<nobr> <wbr></nobr>:-)</li><li>Cleaned up and re-enabled sigil based type checking in signatures.</li></ul><p>Thanks to for sponsoring me to hack on Rakudo, not only for these two days, but also throughout 2009!</p> JonathanWorthington 2010-02-06T22:45:42+00:00 journal The importance of a break <p>Several days before Christmas, encouraged by my mum asking, "when you're going to start your Christmas break", I stopped working and hacking on stuff and started relaxing. Until then, I hadn't realized just how tired I was. I slept quite a few ten hour nights in the following week, and had an enjoyable Christmas break. I'd figured I'd maybe take a week or so's break, and then get straight back to things, but a week on I had no motivation or energy to dig in again whatsoever. So, I decided my break would go on through New Years. New Year's celebrations this year involved curry - something I certainly wouldn't mind it involving again.</p><p>Early January brought several days in Sweden, part of planning for an upcoming refactoring of my work/location - there's <a href="">details on my personal blog</a>, but the short version is that I've accepted a job at a Swedish startup and will be moving there in March. It's not full time, so I'll continue to have time for Perl 6 development. They know about and, happily, are supportive of my involvement in Perl 6 and my continued attendance of Perl conferences.</p><p>I spent a weekend in Prague on the way home. I did it by train rather than flying, which was enjoyable. It snowed almost my entire time in Prague, and I caught a cold in the following week, but it was kinda worth it to wander around this beautiful city. Didn't bother studying Czech at all, and sorta got by with speaking Slovak, though some folks heard me speak and immediately concluded English would be easier.<nobr> <wbr></nobr>:-) Somehow it kinda felt like I was back somewhere I belonged, even though I'd never been there before. I love central Europe, and excited as I am about Sweden, I know I'll miss this part of the world a lot.</p><p>Anyway, I eased back into some work in January, but mostly took it quite easy. The happy result is that, come February, I'm finding myself recharged and ready to dig back into things again. I got some nice commits done to Rakudo yesterday, and today I meant to, but instead participated on an interesting thread on p6l and did some other useful meta stuff (like this post). Tomorrow should have plenty of hacking time though, and I'm looking forward to it. I also have a couple of blog posts to do about Rakudo Days I did in December, but never got around to writing up; thankfully I did make notes on what I did on them.<nobr> <wbr></nobr>:-) My main focuses from here on will be on:</p><ul> <li>Continuing to get Rakudo's ng branch into shape - we'll make it master soon. A lot is missing, but things are going back fast and often very neatly. It's easy to focus on what it doesn't yet do that master does, but it has many things right that master does not - now including laziness!</li><li>Finishing up my signatures grant. I really, really want to do that within the next couple of weeks.</li></ul><p>Anyway, that's what's been up with me. If you take away anything, it's that you may not realize how much you need a break from something until you take it, and if it's not the only thing putting food on the table, then it's probably better to take the needed amount of break and come back revitalized. I guess the other option is to dig back in regardless, but I suspect that's the path to burnout, something I'm quite keen to avoid.</p><p>More technical blabbering here soon.<nobr> <wbr></nobr>:-)</p> JonathanWorthington 2010-02-06T00:31:49+00:00 journal hmm, Nordic Perl Workshop... <p>It came to my attention via <a href="">brian d foy's blog post</a> that the next Nordic Perl Workshop will take place in Iceland - which sounds very interesting. At the same time I decided that I need to take a longish break after working very hard for the last two years. So I will combine my holiday with NPW!</p><p>My current plan is bike from Vienna via Prague to Berlin, spend a few days there to visit some friends, take a plane to Rekjavik, attend NPW, and then either cycle a bit more through Iceland or treck a bit (probably combined with public transport). Then take the plane back to Berlin and a train back to Vienna.</p><p>The plan still has some issues:</p><ul> <li>Is it totally insane to cycle through Iceland in May (if any Icelandic person could comment on this, I'd appreciate that..).</li> <li>Maybe cycling from Vienna to Berlin takes to long or is boring. Then I could take the train to Berlin, and cycle from there to Copenhagen, fly to Iceland, and go back to Berlin.</li> </ul><p>Anyway, I'm really looking forward to this!</p> domm 2010-01-30T21:20:43+00:00 journal Perl QA Hackathon 2010 Venue &amp; Sponsorship <p>The <a href="">Perl QA Hackathon 2010</a> will take place in the lovely <b> <a href="">MetaLab</a> </b>, a grass-root non-profit hack-space in the middle of Vienna (more on <a href="">Wikipedia</a>). There will be lots of space, workplaces, sofas, wireless and wired network and a big fridge full of drinks.</p><p> <a href=""></a> has also proud to announce that we will sponsor the hackathon with <b>10.500 Euro</b>. We will reserve a small part for catering during the event, but most of the money will go into paying for transport and hotel of invited guests.</p><p>If you want to hack on a QA / Toolchain project, please add yourself to the <a href="">Attendees</a> page of the <a href="">wiki</a>. </p><p>Thomas Klausner,<br> on behalf of and the Perl QA Hackathon 2010 team</p> domm 2010-01-29T16:49:24+00:00 journal Kuala Lumpur, Day 0 <p> <b>Kuala Lumpur, Day 0</b> <br> After seventeen hours of travel, I've finally checked into my hotel in Kuala Lumpur. I'm here with Jacinta, and we're teaching Perl to a client next week, but we've arrived early to do some sight-seeing... <i>and because we're insane</i>. </p><p> Actually, it only <i>feels</i> like we're insane, because we've only just got back from LCA2010. In reality, going to KL so quickly means that we actually have something one of us might care to label as "a holiday". There's no chance of tacking a holiday on the end: we need to get home in order to clear the mail, launder clothes, and squish an entire month's worth of social engagements into three days before KiwiFoo, and then me spending two weeks in Sydney. </p><p> That's right. Four weeks of travel, with only three days at home. Maybe I am insane after all. </p><p> Kuala Lumpur is just like I remember it. Hot, humid, friendly people, and cheap, delicious food. Almost everything can be ordered with peanuts, and fried anchovies. </p><p> Today I feel like telling stories, so I'm going to recount the happenings of my day. Now would be a good time to get a mug of hot chocolate, or maybe skip to someone else's blog entry. I don't mind. </p><p> The trip was not a difficult one, but not an uneventful one either. It started with being picked up by the least competent taxi driver in Melbourne. Or more correctly, <i>not</i> being picked up. The taxi was clearly visible in the street, about a block or two away, and spent most of its time doing U-turns and driving back-and-forth outside a small group of houses. I suspect they were using a GPS navigation system, and it didn't know our street numbers. Trying to flag the taxi down with a high-powered diving torch, the sort which is capable of stunning small fish from a mile away, didn't seem to help either. </p><p> The torch did attract the attention of a completely different taxi, who, sensing that we were now quite late for our flight check-in, decided to take the most leisurely approach to driving that I've ever seen. From our conversation, I discovered the driver never gets speeding tickets, but was once fined <i>four times</i> in one day because his car had insufficient velocity. Since our car speed to be travelling down the highway with all the speed of warm molasses, I could understand why. </p><p> The flight to KL was <i>lovely</i>. Through good planning, a lot of luck, and er, an aggressively unscheduled seat change, both Jacinta and myself were able to secure three seats each to ourselves. As someone who is used to sleeping on airplanes, this is the height of luxury. During the eight hour flight, I slept for seven, and without the need for sleeping tablets. I awoke feeling relaxed and refreshed. </p><p> Getting to the hotel wasn't hard, but inefficient. The plan was to catch a bus to KL Sentral, a train to Putrajaya, and then use the hotel's complimentary shuttle from there. It now appears that we could have caught a train directly from the airport to Putrajaya, saving considerable time and some money. Still, the trip to Sentral resulted in some spiffy weekly tickets which looked like they'd be useful in travel. </p><p> Calling the hotel from the train, I asked if we could get a pick-up from Putrajaya. They seemed uncertain, and after some to-and-fro, they admitted that the shuttle doesn't go to Putrajaya station, despite it being the nearest major public transport centre. They <i>do</i> however go to Kuala Lumpur proper (where we were just coming from), and a shopping centre or two. </p><p> As it happens, I now discover the hotel's bus seems to be the transportation equivalent of "scattered showers": not in your area, and not when you care. So rather than using the hotel bus, we were introduced to the public bus network. </p><p> Putrajaya's public bus network doesn't work the same way as other bus networks do. There's a big bus station, with lots and lots of bays and busses, but the goal of the drivers is to collect as few passengers as possible. This is primarily done by locking the bus, sneaking out, having a smoke for half an hour, and then dashing back into the bus and driving off as quickly as possible before anyone spots you. Other tricks include waving passengers away when they try to enter, or telling passengers you don't leave until <i>much</i> later, and then driving off as soon as they turn their backs. In fact, should a bus foolishly leave its doors open for more than a few moments, it is almost invariably becomes jam-packed with passengers. All the busses seem to go to the same places anyway, just in a different order, and catching <i>any</i> bus is better than being outside in the heat. </p><p> The hotel itself is super-fancy. The room comes with bath-robes, slippers, a fruit-bowl, a fancy room configuration and furniture. Heck, even the bath-tub has its own phone, just in case you decide you need another bottle of champagne. The hotel seems to be filled with government officials and businessmen; not surprising, given the location in the heart of KL's government and technology district. I've never really liked fancy hotels; when travelling I prefer a more organic experience, but I think I've finally become to understand them. The people who frequent these hotels, almost by necessity, need to have so much money that the prices actually seem reasonable. For example, I'm eating a meal right now that costs the equivalent of dinner for <i>six people</i> on the streets of KL. That's an expensive meal, but it's still on the cheap side compared to what I'd be paying for the same meal in Australia. </p><p> The only thing which doesn't change is my surprise over the minibar. You want <i>how</i> much for a can of cola? </p> pjf 2010-01-28T08:11:48+00:00 journal QA hackathon 2010: call to attention <p> organises the Perl QA hackathon 2010, taking place from Saturday, <b>April 10th</b> to Monday, <b>April 12th</b> 2010 in Vienna, Austria. Attendance is gratis. We would like to know if you are interested in coming and participating. You can also propose other people who should be invited. As with the hackathons in the past years, we aim to fund the travel and accommodation costs for those who cannot get funding otherwise. </p><p>We would like to hear about your topics and ideas. Please find further information at the <a href="">hackathon wiki</a>. </p><p>-- <br> The organisers</p> daxim 2010-01-27T14:17:15+00:00 events On MSN bot <p>Cpantesters <a href="">block MSN bot</a> from accessing cpantesters site. It is said on that "Microsoft in their incompetent wisdom decided to unleash 20-30 bots every few seconds". Maybe it is, but closing access to a search engine is another side of incompetence, and I'd say hysterics and psychosis.</p><p>Aren't we wise enough to launch Ironman contest so that world search engines index blogging on Perl and not allow one of them to access the other Perl site? Restrictions should be smart; "mustdie" and blocking the whole range<nobr> <wbr></nobr>/^65.55.(106|107|207)/ are not the arguments at all.</p><p>Don't they think that by blocking MSN bot you block the site from indexing and later displaying in one of the search engines, thus by yourself and manually reduce the area where Perl-related stuff can be found?</p><p>P. S. And I can't comment on, as the site does not allow me either to register or to login.</p> 2010-01-19T07:40:41+00:00 journal Perlburg Workshop <p>In a month and a week, 20 February 2010, there will be our next Russian Perl Workshop, "Perlburg" in Ekaterinburg.</p><p><a href=""></a></p><p>Welcome!<nobr> <wbr></nobr>:-)</p> 2010-01-15T15:47:33+00:00 journal Wear Sunscreen (and other thoughts for the year ahead) <p> <b>Wear Sunscreen (and other thoughts for the year ahead)</b> </p><blockquote><div><p> <i> If I could offer you but one tip for the future, sunscreen would be it. The long term benefits of sunscreen have been proved by scientists, whereas the rest of my advice has no basis more reliable than my own meandering experience. I will dispense this advice now. </i> </p><p>-- <a href=",0,4054576.column">Mary Schmich</a> </p></div> </blockquote><p> I'm not one for New Years Resolutions. In fact, the last resolution I made wasn't even mine; I stole it shamelessly from Skud, and it was "Never Refuse an Adventure". </p><p> However, today I feel like dispensing advice, reflecting on the year that was, and making plans for the future. I'm going to share these with you, and I'm going to start with my outlook on life. </p><p> One lifetime is not enough. </p><p> I have too many things I want to do, want to learn, and want to be. Heck, even ten lifetimes would not be enough. Since I can't do everything, a lot of my thought goes into maximising the area under the curve; making sure that when I die, I've squeezed the most out of life that I possibly can. Our axes here are age (horizontal), and enjoyment (vertical). </p><p> To get the most under the curve, you need it to stretch as far to the right as possible. You need not only to live as long as you can, but to have both the brains and the body to make the most of being alive. Without brains and body, you're placing limits on the vertical height of your graph. </p><p> That, as much as you may not like it, means doing <i>exercise</i>, both mental and physical. A lot of the people I know are good at one, but suck at the other. My only advice here is to find exercises that you enjoy. Mentally that might mean a problem you want to solve. Physically that may mean combining exercise with transport (eg, cycling), or gaming (eg, StepMania), or social activities (sports or martial arts seem to work well here). </p><p> For most of my friends, it's physical and not mental exercise that is lacking. In this case, sites like <a href="">SparkPeople</a> can be useful in tracking food and exercise, although they could do with an API. If you've got sufficient money, you may find investing in a personal trainer worthwhile. </p><p> I'm not going to talk about money, but instead I'm going to talk about <a href="">utility</a>, in the economic sense of the word. Without going into lots of theory, utility is the <i>satisfaction</i> you derive from something, and it can vary across individuals. For example, I have friends for whom watching sport is a high-utility activity, even though it's not for me. Those same friends may consider giving a presentation in front of a large audience to have negative utility; whereas I'm positively thrilled at the prospect. </p><p> Utility is going to have a strong correlation with the vertical height of your life-graph. Hopefully everyone grasps (at least at an unconscious level), that the utility of something isn't fixed. A glass of water has a greater utility to someone dying of thirst in the desert, than it has to the average office-worker. The +3 sword you've just looted is worth a lot to adventurer without a magic weapon, but has very little utility to the adventurer who already owns a +4 blade (unless they're a ranger and can dual-wield). </p><p> A lot of our decisions come down to trading things of different utilities. If you purchase something, that's usually because you believe that your purchase has greater utility than the money you paid for it. The big mistake I see people making is they take <i>good</i> deals now, but do so at the expense of taking <i>great</i> deals later on. </p><p> One example of this is time. A person may spend their evening playing an MMO, and that's arguably a good use of time, because they enjoy it. However ten evenings of study may allow the same person to learn a new skill, and with that skill achieve some greater goal. If the satisfaction of that goal is worth <i>more</i> to them than ten evenings of online gaming, then they've taken a good deal, but potentially forfeited a better one. </p><p> That brings me to the concept of investment. In short, do it. I'm not just talking about investing money. I'm talking about investing in skills, health, friends, relationships, tools, mental discipline, cybernetics; anything where you forfeit utility in the short-term for a much greater gain of utility in the long-term. Be aware that not all investments are good ones, or what is a good investment for you may be a poor investment for someone else. But in order to really maximise the area under the curve, you're going to need to do some investing. </p><p> What naturally falls out of this is the concept of <i>goals</i>. Identify the things which hold a particularly high utility for you. You want lots of goals; they're what allow you to identify good investments, and high-utility events. For some people, myself included, there's even utility in the sense of achievement when accomplishing a goal. Goals can be very short term (like making a person smile by sending them an SMS), or very long term (continue to be mentally and physically fit at age 75). </p><p> Don't be afraid to add new goals, and don't be afraid to discard old ones. Life is a process of continuous change, and there's no shame if your priorities or circumstances don't remain static. However when evaluating your goals, try to be aware of <i>why</i> they're changing; that can often reveal insights into yourself you may not otherwise notice. </p><p> Your goals may involve taking risks, and that should not scare you. Many pay-offs more than justify the risks you need to take to get them. When making decisions, get into the habit of trying to analyse both the most likely and the most significant outcomes from those decisions. Try to associate both probability and utility with each of these; this should help you gauge the expected value (EV) of a decision. You should using this matrix to help you make the most beneficial choices; sometimes they won't be the obvious ones. </p><p> Thinking about the possible consequences of an action helps you plan better for the future, and usually helps you both better utilise good outcomes, and mitigate bad ones. </p><p> A lot of my goals focus on things that I know will be highly memorable experiences. I cherish my memories, and being able to look back and smile about the things that I've done has a high utility to me. </p><p> So, what are some of my goals that I'm willing to share with you? Well, that's a hard one. Well, let's start with some history. </p><p> Most of you know me as a geek. I do a lot of programming, especially in Perl. I poke around with privacy issues, I play RPGs, I dissect network traffic streams, and I do a lot of speaking at technical conferences. Stereotypical geeks are poor with people, and that included me. It <i>still</i> includes me in many situations. However I've discovered that more than anything else, I <i>love</i> people. For a while now, I've been studying how I can become a better people person. </p><p> For me, 2009 was a year about people. I made a conscious effort to meet new people, to attend more social events, and to form new friendships. This has really paid off, and some of the risks I've taken have definitely been worthwhile. </p><p> I want to get better with people. I want to better understand how they work, how they think, and most importantly, what makes them happy. I'm not just being altruistic here; making other people happy is a <i>very</i> good way to get things done, and one that usually beneficial to all parties involved. So one of my goals this year is to put more points into cognition, telepathy, empathy, and bard. </p><p> I've also discovered that while I'm excellent in broadcast (presentation) and multicast (storytelling) communication, I'm lacking in unicast (personal) skills. I find this ironic, because I used to be the reverse. I think my unicast issues relate to <i>what</i> I'm willing to discuss. I generally hold my cards a little too close to my chest at times; I fear my conversation topics can be a bit too formal as a result. I seem to be most popular in unicast when talking about my most recent topic of inspiration, but when that's computer-related I'm concerned my conversational partner will find it boring, and when it's people-related I fear they'll find it weird. This is an area where risk-taking is definitely needed; the advantages of finding someone who's genuinely fascinated by my thoughts outweighs the risks of scaring someone away with whom I'd otherwise hold a specious social relationship. </p><p> I have a couple of mental models that I use for other people, but I've discovered not everyone fits nicely into these models, although they're a relatively small subset of the whole population. The mental models I use for everyone else are woefully incomplete. To solve this, I suspect I'll need to do some dedicating reading, research, and experimentation. </p><p> I need more points in <i>arei'mnu</i>, a Vulcan word that roughly translates into "mastery of emotions". There are many times when my emotions are in opposition to my logical and well-reasoned thoughts. In fact, this is something of a conundrum for me, as I feel that emotions are core to the human experience, and removing emotion strips life of much of its meaning. Usually I embrace and revel in my emotions; I even find value in sadness and tragedy, as they often provide a focal point for reflection on good times and fond memories. Usually my arei'mnu is excellent, but there are a few tweaks that I need to make, most of which relate to specific circumstances and triggers. </p><p> Finally, in 2010 I want to experience new things. I jokingly refer to this as "gaining XP", but it's one of the things that I really believe in, and one of the things that too many people stop doing. After a while, XP is addictive. People, food, places, thoughts, ideas, activities; they all hold such amazing and unique possibilities. My real question, and the one that's driving me nuts right now, is how to prioritise them, along with the very real awareness that I'm not even aware of the tiniest fraction of the experiences which life has to offer. In this regard, <i>your</i> advice is very much appreciated. </p> pjf 2010-01-03T06:06:40+00:00 journal Saint Perl workshop went well <p>Last Friday there was the forth Russian Perl Workshop "Saint Perl 2009" which happened in Saint Petersburg, Northen capital of Russia.</p><p>We were happy to occupy the venue offered by Saint Petersburg University, although in the campus 50 minutes away from the city itself.</p><p>I am happy to say that full organization process was done by local organizer, the leader of, Alex Kotov, who started the event and brought it to complete success<nobr> <wbr></nobr>:-)</p><p>Usual (sad) practice was to see only 50-60 % of registered attendees, but instead we had brilliant talks, including the series given by students and teachers of Ural State University. My favourite talks at the workshop were the one about new things in Perl 5.12 and the one I'd entitle "How to make Google Wave at home"<nobr> <wbr></nobr>:-)</p><p>Among that, I've "tested" new fast train between Saint Petersburg and Moscow; it only started connecting the two capitals the day before the workshop.</p> 2009-12-20T19:13:31+00:00 journal