Creating an MMORPG in Perl

Question: do you want to hear more about my attempts to create an MMORPG in Perl, even if posts are not Perl-related? Also, are you interested in helping me develop its ideas further?

As many of you know, I'm trying to create an MMORPG running on Perl. It's codenamed veure. Though I've written about it a few times here, I've not written much because many of the entries are about game design and not strictly about Perl. As a result, I've tried to avoid spamming this blog. That being said, people constantly say "stop talking about how great Perl is and build great things with it!" So I'm trying to build something great with Perl, but as most experienced programmers know, it's not so much the programming language as the business rules which are important.

And damn, business rules in an MMORPG are hard.

Acknowledge your contributors on CPAN Day

There's a well known saying, "it takes a village to raise a child". I think our equivalent is something like "it takes a community to raise a CPAN distribution". There are very few modules on CPAN that have been purely the work of one person. You get bug reports, pull requests, feature ideas, typos reported by D Steinbrunner, and so on.

All of these interactions nudge your distribution down the road, encourage you, inspire you, and sometimes annoy you. But they all help make your distributions what they are. So on CPAN day, maybe you could acknowledge them in your documentation?

A Marpa-powered IDL parser, and translation to Moose

I am pleased to announce the release of a Marpa::R2 parser for the latest OMG IDL, version 3.5: MarpaX::Languages::IDL::AST.

The source code of the parsing itself is very small, thanks to Marpa::R2::Scanless power, and produces an AST of any IDL source, so that everybody is free to adapt it.

As an example, this module provides an experimental translation from IDL to Moose, via the script idl2moose. Indeed, perl's Moose (and its friends -;) notion of roles fit perfectly what an IDL stands for: the definition of an interface..

I imagine this can be useful for those wanting to describe what they want, without having to write something that can be automa(gi)cally generated.

Please note that this module has intentionnally no link to any CORBA implementation, leaving room to any perl implementation behing the scene.

WiMP : The Wirld's Mightiest Programmer Competition

WiMP : The Wirld's Mightiest Programmer Competition

[From my blog.]

Attendees Meet and Greet

We know that as well as hearing great talks many people attend YAPC so that they can meet others who contribute to Perl, whom they may never have met in person before, and to socialise with members of the Perl community.

This year we will be starting the conference with a meet and greet session. We want everyone to get the most out of their time at YAPC and we are hoping that by setting time aside specifically so that people can introduce themselves to people they don't know that our conference will get off to a fantastic start.

Looking forward to speaking to you soon!

Re: Need IO::Pty help with *BSD/OSX

(I was having problem of "session timeout" after submitting the following comment. So here it is instead being a reply at Need IO::Pty help with *BSD/OSX)

I had no problem with /usr/bin/bc test on FreeBSD (FreeBSD 8.4-STABLE #1 r267149). gvl, perhaps you were thinking of dc?

01-test did fail though, not ok 13 - eof_on_pty (perl 5.18.2 compiled from FreeBSD ports).

Thank a CPAN author on CPAN Day

It's all too easy to take CPAN for granted, particularly the modules and distributions that just work, and continue to do so year in, year out. Take a moment to thank the author or maintainer of one of your "go to" modules on CPAN Day (16th August).

I tried this: the recipient seemed to like it, and it made me feel good too.

Want PPW in 2014? So do I.

It's time to make a decision about hosting the Pittsburgh Perl Workshop this year. We've been on the fence for quite a while. Like I said at the end of PPW last year, if the community wants it, I'll make it happen. I also made a brief call for feedback during a lightning talk at YAPC::NA this year.

Certainly, we've received some feedback. People like PPW and want to see it continue. But is that enough? I'm not sure. So, it's time to convert this into numbers. We need people that want to show up and have a good time at PPW. And, we need them to commit.

A Tale of Two YAPC's

This year the Send-A-Newbie fund will send an attendee to two different YAPCs. We were asked in early 2014 if we could sponsor an attendee to go to YAPC Asia this year instead of YAPC::EU as it made more sense for the attendee. We agreed so we have split the available funds across the two events.

For YAPC::EU in Sofia, Bulgaria we will be sending Upasana Shukla. Upasana is a Perl programmer who firmly believes in Open Source, she is sponsored by a number of organisations to do work within the community. Last year Upasana worked as part of the Gnome Outreach programme on Moose.

"YAPC::EU will not only be my first Perl conference, but technical conference as well, so I'm wildly excited about it. Thanks to Enlightened Perl Organization, The Perl Foundation and The GNOME Foundation for sponsoring my travels."

perlcc next steps

cPanel uses now the new perl compiler B::C with -O3 and --staticxs with 5.14.4 in production, and I'm outlining the next steps.

Check your test coverage with Devel::Cover

For CPAN Day, you could check the test coverage for your distributions using Devel::Cover. If your distributions are already covered, or you don't have any distributions, take a look at the coverage results for some other dists on CPAN Cover, and maybe you could submit something for someone else's dist.

A bit more about Time::Moment

In my previous blog post I mentioned the bottlenecks of DateTime and why I had to develop Time::Moment and it's underlying c library, c-dt.

In this blog post I'll talk a bit of the design decisions I made for Time::Moment.

plenvsetup is easy setup tool of plenv.

plenv is one of perl building tools. As similar tool, perlbrew is famous. I use both tools based on some environment.

plenv install and setting is little hard job. Tasks are clone of some git repository, rewrite shell profile file and reload it, and so on.

plenvsetup supports your such tasks. It is written by Satoshi AZUMA a.k.a @ytnobody / PAUSE: YTURTLE and some contributers.

When you want to setup plenv, run only one line:

curl -L http://is.gd/plenvsetup | bash

plenvsetup considers various environments situations.

In Japanese today, some volunteers organizes study course in Perl, called Perl Entrance for truly beginners of programming. This event is 3rd year since startup. In this year, we use plenvsetup in a curriculum for student's Perl environment structure. This trial gives good result. Anybody could setup plenv envrionment as easy and speedy even beginners.

Do you need to setup plenv? Remenber plenvsetup when it is needed.

Celebrate CPAN Day With Your Local Perl Mongers

I just organized a CPAN Day mini-hackathon and social meeting for my local Perl Mongers.

If you like this idea and your local PerlMongers is overdue for a meeting, sieze the Chopsticks of Destiny. You can use this announcement as a starting point.

=============================================

Several People have been blogging at blogs.perl.org about CPAN Day on
August 14. Standard Tap have offered their dining room for our use.

The Standard Tap has wi-fi but there are also several xfinity and verizon
hotspots there, so bring your laptop. While the meeting won't be the
perfect opportunity for creating awesome new cpan modules it is a great
time for light maintenance and documentation.

Don't have any modules to work on? Don't fret, you can always proofread
someone else's work. You can also look at http://neilb.org/adoption/ for
modules that are be available for adoption (the list is auto generated it
includes many modules that don't need a new maintainer). You can also work
on patches to other peoples modules.

Craft the first paragraph of your DESCRIPTION

The DESCRIPTION section of your module's documentation should come after, and provide the narrative for, the SYNOPSIS. In particular, make sure that the first paragraph is a good summary of what your module does / provides. After the abstract, the first paragraph is your most powerful tool in selling your module to potential users.

For CPAN Day (next Saturday 16th August), make sure all your modules have a DESCRIPTION section in the pod, and that the first paragraph is a good summary. And if you do, tweet about it, using the hashtag #cpanday.

vec is slow, little-endian and limited

I remembered from the perl docs to use vec to compress arrays of integers to bitvectors. In my case with Perfect::Hash::Urban the size advantage is 3320 byte vs 88 bytes for two integer arrays of size 20 with values [0..19], which compress to 8 bit per entry with vec. This is 300x less bytes. The theoretical maximal simple compression would be 13 byte, i.e. 5 bits per entry * 20 = 100 bits = 13 byte. Stored as Perl PV this would require 68 byte PV overhead + 13 byte for the bitvector.

Ado? What is it?

For the last several months I had some more free time during the long (for me) nights in Central Europe. I didn't have to work any more additionally to cover some expenses. Having done several projects on Mojolicious, looking at the code, I clearly saw same patterns — repeating over and over again — in the code of my projects.

I had also, I would say, successful previous open source project on GitHub (which code had the same "issue" and some more), but I just left it after some time. I think I disappointed some people. Apologies. I left it because it was looking to me too monolithic, too "hard-codded", promising to be hard to maintain, and test...

I wanted something more flexible, implementing the same ideas and functionality, something more, hmm.. professional, easy to start with, well covered with tests, installable via CPAN or manually, imposing good coding practices, extensible, scalable, light on dependencies, enterprisey...

Contradictory requirements, you may say, this would be such an ado.

Swiss Perl Workshop: Schedule

What happened last month:

The camel was at a Meetup, again, together with some Perl mongers.
camel_meetup_3.jpg
(Nobody had asked it to eat the decoration..)

Fix your CPAN Testers failures on CPAN Day

If you're a module author, and looking for something to release on CPAN Day, have a look at your CPAN Testers results. If you've got any failures, check the test report(s) and see if you could release an update to prevent those in the future.

The Chimera Quine; or, the ISO PDF

Inspired by PoC||GTFO, herewith is a (pseudo) quine written in Perl that generates a copy of itself as a PDF which is also a mountable ISO with that PDF as the sole file.

Copy the script as quine.pl, run it, and you'll get a quine.pdf which can also be mounted as a filesystem:

bash$ file quine.pdf 
quine.pdf: # ISO 9660 CD-ROM filesystem data 'CDROM'
bash$ sudo mount -o ro quine.pdf /mnt
bash$ ls /mnt
quine.pdf
bash$ 

quine.pl:

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl with a graphic design donated by Six Apart, Ltd.