Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

autrijus (1505)

  (email not shown publicly)

Journal of autrijus (1505)

Sunday October 30, 2005
07:32 AM

Day 239: Hacking Starts.

I arrived safely at Liz and Wendy's place, a lovely house in Echt, Netherlands. In the next 9 days, I'll be hacking nonstop on Pugs, before flying to Helsinki and finally back to Taiwan.

The primary goal is to get the object space and metamodel figured out and integrated to the base runtime for 6.28.0. Stevan mentioned he will have some spare time to gobby/subethaedit with me; I'm looking forward to it.

Also, because Liz is known as the Queen of Threads of Perl, obra asked me to work out the currently unspecced Synopsis 17 with her. As @Larry's forte is on language ergonomics, it makes a lot of sense to hand off the more specialized part to domain experts. :-)

To avoid the too-tired-to-journal-anymore problem, I'm switching to journal every day before hacking, instead of after it. Sorry for the lapse in the past few days; part of it was due to traveling, but also because Programming Ruby (deadtree edition) is much too enjoyable. Larry evidently took lots of good ideas from Matz, and grokking Ruby makes it much easier to see the power behind the dynamic, runtime-typed part of Perl 6.

I read that Matz suggests at the RubyConf roundtable that io and Haskell are the two language most worthy to learn at this moment. Indeed, I like io a lot -- it has a "JavaScript distilled" feeling -- but I plan to hold off writing something in it after this current Hackathon.

Speaking of JavaScript, Bredan blogged about our short encounter in Tallinn. It is entirely possible that the JavaScript backend may prove to be the most important one, especially if SpiderMonkey do get first-class continuation support from Rhino, as Bredan had suggested, which will make performance and memory use much more practical. (Indeed, if JavaScript2 does survive the standardization process, it is entirely possible that it may become the next Ruby, because writing programs that runs at both client and server side is a strong motivation -- the same reason to keep Pugs targetable to multiple backends.)

The meeting was a lot of fun. I chatted with Anton about putting a tag-based search interface, akin to DebTags, for CPAN and/or FreeBSD ports; he started prototyping that night, producing a set of tags summarized from package descriptions -- we'll see if this idea plays out or not.

Back at NPW, sky had this great idea of using something akin to B::Generate -- but written in C/Haskell -- to speed up the currently very slow Perl5 backend, by generating optimized OP trees directly from Perl6/PIL tree, without going through the Perl 5 source level again. This may raise Perl5 into a production-worthy runtime of Perl6 code, which would be a Very Good thing. It is also conceivable to hack more Perl6-support OP codes into Perl5, either via dynamically-loaded XS runtime augmentation, or by hacking them into Perl 5.10 itself. More details later...

Okay, enough words. Time to code. See ya! :)

Tuesday October 25, 2005
11:41 AM

Day 234: More travelling...

NPW was wonderful; I smiled a lot, had a wonderful time, and also discussed quite a bit about multiversioning and possible 6pan topics.

In 3 hours I'll be travelling to Copenhagen, stay there for a few days and meet folks, then to Brussels on this weekend.

The fears project, a self-administered group therapy initiated by Juerd, is absolutely wonderful.

I'm halfway through the PickAxe book, and also immersing myself on PyPy notes; expect more massive sync/push when I get somewhat more stable network connection. See ya!

Friday October 21, 2005
01:24 PM

Day 230: In Stockholm.

Again, lots of travel (this time for the NPW tomorrow), including sorting out a misbooking from, so didn't get much done on the road.

Last night I got a most amazing Black Camel award from, with shining hues and a beautiful shape. Also got some work done with Larry on Tuple syntax for Perl6.

On the plane from Amsterdam to Stockholm, kane synced with me about his ideas of 6PAN, mostly centered around multiversioning, dist-time metadata, dpkg-based installation info, as well as policy files for resolving multiple versions and sources of the same module. All in all very fruitful -- details later.

There's a social meeting for early arrivers at Bagpiper's Inn, but sadly I'm probably going to miss it and sleep. See you tomorrow...

Thursday October 20, 2005
08:29 AM

Day 229: Learning Haskell.

My last talk in Euro OSCON just went live. Despite being rushed to completion at the last minute as usual, it's received surprisingly well.

The slides are available online; all are linked from as well.

Suggestion welcome -- I'm going to present all four of them again in the coming week at Nordic Perl Workshop, and probably again in OSDC Australia, so there are plenty of chances of tuning.

Tuesday October 18, 2005
04:54 PM

Day 227: Three talks down, one to go!

Today's three talks all went really well, though all of them were finished ~5mins before the actual talk began. In the order of presentation, they are:

Got many people signed up for committer bits -- dconway (who'd like to hack the mariner poem before I present it with him in OSDC), sky, liz, schuyler, among other very cool folks. Woot!

So I get to enjoy the first restful sleep in many nights. Of course, there is still one unfinished talk to go -- people are expecting it to be a instant Pugs hacking boot course for Haskell, which is kinda hard to do in 45 minutes -- though I'll manage somehow. See you!

Sunday October 16, 2005
02:32 PM

Day 225: Demagicalized pairs!

I didn't get to do much slide hacking, as the lack of sleep on the ferry and airplanes are kicking in, but what I have so far is at Pugs.xul. You'll notice that I am in serious Unicode-abuse mode...

scook0 valiantly demagicalized pairs. This means foo($thing) now always pass $thing positionally to &foo, even if $thing happens to be a Pair.

On the flip side, foo(bar => $baz) now always passes $baz by the name bar, even if &foo expects Pairs. Hurray for sanity!

For some context behind this pair-magic situation, consult the thread "Demagicalizing pair" on p6l started by luqui, #perl6's consensus-building discussion, and Larry's rulings.

iblech then proceeded to update PIL2JS accordingly, which means that PIL2JS is the first backend which fully supports demagicalized pairs -- it passes all of the 26 tests of t/syntax/pairs.t.

Stevan hacked in a minimal parser for Perl6-style class declaration for the Perl5 metamodel, to test out the eventual integration with PIL2. We bounced a couple ideas at #perl6 about serializing compile-time class objects, but sleep deprivation starts kicking in. As putter so wisely put, one probably should not get burnt out at the beginning of a conference, so I'll catch some sleep now. See ya! :)

05:04 AM

Day 223/224: In transit.

I'm currently in Stockholm airport, about to board the flight to Amsterdam. Apparently, while I was aboard the Viking ferry to Stockholm, my mailbox got full, got its weekend shutdown, and technorati got horribly spammed. Ew.

However, I did manage to get more than half of presentations done, and plan to pound on the rest of them tonight. I'll bbiab...

Thursday October 13, 2005
08:12 PM

Day 222: More Takahashing.

Another day of Javascript hacking to get the slides Just Right, while trying not to go overboard and rewrite Spork in JS. Just like Ruby is touted as the new Perl, I think evidently Javascript is the new Ruby -- after all, it has only eigenclasses and nothing else... ;-)

As it happens, I split the Learning Haskell talk into separate sections: Overview, WTF?, Types, Functions, Techs (in progress), as well as the not-yet-started More! .

Suggestions welcome... I'm going to do some more slidehacking now. :)

By the way, chip++ for coming to #perl6 to discuss how Parrot should provide efficient lexical pads, OUTER:: and CALLER:: access, and related issues like the BEGIN blocks. It's really nice to resume that continuation from Vienna!

Wednesday October 12, 2005
09:20 PM

Day 221: Wordsmithing.

Today was all about hacking in the English language. I started working on the Learning Haskell talk, but ended up getting less than half finished, partly due to hacking the amazing Takahashi XUL kit and converting the CUFP Pugs talk into that format.

You can take a look at my work in progress; note that the code snippets are not in preformatted layouts as they should be. But try to "view source" and move the mouse cursor on top of the canvas -- you'll be positively surprised.

45 minutes is not anywhere enough to get people acquainted with both Haskell's syntax and practical uses, so the slides are very concise. Suggestions welcome!

On the lightning talk front, I collaborated with Allison over SubEthaEdit, as the Gobby site still does not offer a OSX binary package. We adapted the first two stanzas, reviewed another four, and left the remaining six untouched. The text is in the pugs tree as docs/talks/larry_mariner.txt. Making an epic-esque poem of Perl is quite challenging; it would be impossible without Allison's strong poetic cluefulness. But we still need much help from fellow wordsmiths...

After Euro OSCON, I'll be in Stockholm for Nordic Perl Workshop. A month after that, I'll be in Australia for OSDC 2005, hopefully finding some time to work with Damian, as well as visiting dons (of hs-plugins/yi fame) in Sydney.

Hmm, it's well past 5am, so no changelogging for today... See you tomorrow!

Tuesday October 11, 2005
07:55 PM

Day 221 (r7568): A day of reading.

Happily, both lightning talks got accepted, so I committed the unadapted Larry was a mariner text into the Pugs tree, planning to work on it (and read The Sillymarillion) whenever my brain feels overheated. Thoughts, ideas, patches and commits are all very much welcome!

Today I wade through the code in perl5/ (i.e., the Perl5 and JS runtime engines), to prepare for the renovated container/object runcore. The Perl5 runtime's hook with metamodel was very enlightening, and fglock's meticulous TODO comments helped much. Also iblech's JS runtime is so concise, it looks almost like poetry. *smile*

I then turned to read theory.pod for the third time, which is a good summary of GADTs and generics in a Perl6 setting -- but whenever I start to think about how to reconcile it with optional dynamicness, my head starts throbbing. No wonder why Larry spent much time mulling over it, and I sympathize luqui's conflicted feeling a lot. Still, I think here formalization still helps, not hinders, so I look forward to spend some time with @Larry next week to hammer this out.

On the metamodel front, stevan attempted to steer Perl6's OO model toward Smalltalk/CLOS/Ruby from the Java/C++ direction, proposing that we drop class method inheritance and instead embrace eigenclasses, per-instance methods and roles as the True Way of doing things. Damian wondered how can we tell people to do away with the perl5 idiom of inheritable class-method new, and the discussion continues... Personally I think having a certain kind of Class that supports inheritable class methods can work out, but I'm not sure; fortunately, stevan volunterred to experiment and report back.

eric256 continued to make examples more pugs and runnable, and uncovered a bug that makes pugs too eagerly handle -n and -p in the script's argument list.

iblech added proper exception for division/modulo-by-zero to PIL2JS, a complete set of bit operators, fixed evaluation order so the indices are evaluated before the array/hash, and converted more p6l discussions into somewhat saner and certainly more tractable tests.

There's more, but I need to sleep. Ciao! :)