Ravada free, easy to use VDI broker made with Perl

Ravada is an open-source project that allows users to connect to a virtual desktop.


Its back-end has been designed and implemented in order to allow future hypervisors to be added to the framework. Currently, it supports KVM and LXC is in the works.

The client only requirements are: a web-browser and a remote viewer supporting the spice protocol.

It is very easy to install and use, following the documentation, virtual machines can be deployed in minutes. It is an early release but is has been used in production. The frontend has been built with Mojolicious and the hypervisor connections are made with Sys::Virt . It is open source and the code can be download from github. Contributions welcome !

Main Features:

  • KVM backend for Windows and Linux Virtual machines
  • LDAP and SQL authentication
  • Kiosk mode
  • Remote Access with Spice for Windows and Linux
  • Light and fast virtual machine clones for each user
  • Instant clone creation
  • USB redirection
  • Easy and customizable end users interface
  • Administration from a web browser

See some screenshots, documentation and more at http://ravada.upc.edu/

Perl 5 Porters Mailing List Summary: June 12th-19th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.


SPVM is released! Perl maybe become much fast.

I release SPVM.



SPVM - Fast calculation, GC, static typing, VM with perlish syntax


Do you know that there are many criticisms against Perl 5 on the Perl 11 blog?

Much of the criticism is about Perl's data structure and performance.

"Perl does not have a good data structure and implementation regarding numbers."

"Perl can not calculate a number using the stack of functions."

"Understanding about virtual machines is lacking in p5p."

I am an engineer who loves Perl 5 and p5p and is using Perl 5 to create a company service.

I want to contribute to reducing the weaknesses of Perl 5, by making modules.

I hope the SPVM will be of help.


Do you need faster Perl? SPVM provides fast calculation to Perl.

SPVM is released!

Les Journées Perl / French Perl Workshop 2017

Nobody seems to have blogged about Les Journées Perl so I thought I would blog about Les Journées Perl. Or maybe I haven't been paying attention, or it passed by me in a state of crossing timezones?

I was travelling back from the UK office the weekend the workshop happened, so stopped by. I also uploaded a couple of photos to the perl_events Instagram feed. The workshop was held in the Carrefour numérique in the Cité des Sciences et de l'Industrie in Paris - a very interesting space within a very interesting space. Possibly one of the most interesting spaces I've been that has hosted a Perl workshop. Here's a recap of the talks I understood that stuck in my mind, I believe the talks were recorded so may appear online soon. You can find all the talks, with links to slides/etc here.

how to join #yapc chat on irc.perl.org

  • IRC is used A LOT during The Perl Conference
  • To go online instantly in a browser, you can use Mibbit
  • To stay online (to read all messages sent, even the ones sent when you were not around), you can use IRCCloud
  • You can set up your own bouncer too!


Last year's The Perl Conference at Orlando was my first one. I had a lot of fun, met with brilliant people and learned numerous things about Perl.

Altoids tin Arduino GPS "return to origin" project, thanks to Perl

Warning! Long read...

This post contains an Arduino Trinket Pro GPS prototype project that only relates to Perl in that all of my knowledge and experience came from my Raspberry Pi Perl work, along with writing C/XS code for several ICs and sensors and making those available as Perl APIs. I'm posting it here due to that relevancy, and because I don't blog anywhere else ;)

To start off, I'll explain a little bit how I got to this path.

I became interested in the Raspberry Pi after a colleague showed me a project he had built with one. I went out, bought a couple and started tinkering. The very first thing I wanted to do was use Perl on it. There were a couple of libraries available, but they seemed convoluted to me, so I wrote my own.

Another reason not to use each()

So I’ve learned my lesson. Do not use each().

Always good to read the blogs…


Here’s a fun one that caused perl to go into an infinite loop. I suppose being frugal and not assigning things to variables is not necessarily a good idea.


  use strict;
  use warnings;

  my %thingies = %{{qw/a 1 b 2 c 3/}};

  my $c=0;

  #while (my ($a,$b) = each %thingies ) {
  while (my ($a,$b) = each %{{qw/a 1 b 2 c 3/}} ) {
    print "$a $b $c\n";
    last if ++$c > 4;  # stop the madness

Uncommenting out the line above where each uses a pre-assigned version of the same data element works fine. Not knowing anything regarding the internals of Perl makes me scratch my head. I’m sure there is a perfectly good explanation for this and maybe it has even been corrected in a more recent version of Perl?

20 Years of Perl mongers

It was 20 years ago (almost) that a group of New Yorkers started Perl mongers. I think at the time we were eating something the caterer for The Perl Conference called "California sandwich" that had sprouts and avocado. In 1997, there was a small core of a Perl community that worked on perl, but there was still room for regular user engagement.

I didn't see this coming. While I was in Amsterdam a couple of weeks ago, Wendy noted that 1997 and 2017 end in the same digit (as does 1967). I don't think we've ever bothered to celebrate an anniversary. I went to check on the date. I registered pm.org on August 22, 1997, which I think makes August 21 the birthday. That was the last day of that conference.

We'll have to do something special guess.

I know that NY.pm will have its anniversary this year, and there my be some other groups. London.pm, when did you start? I think Boston and Seattle was in there very quickly. Who else?

New Sydney PM website and URL

With new cool TLD's available, I purchased perl dot sydney which is the perfect domain for Sydney Perl Mongers.

Our current/old website is dated and tired, so I also spent some time whipping into shape a new website using GH pages. Having GH pages automagically compile markdown files into HTML is very neat. Plus having everything in github so people can PR, and having group access - are both great. But... that Jekyll isn't Perl does make me feel somewhat sold out, even if it's being used implicitly.

Anyway, please take a look and proof read the perl dot sydney website. Send PR's for all my typos and grammatical errors (people in irc.perl.org's #australia have already gone over it)

Also, if you would like to order one of our Tshirts (which help pay for these vanity domains and our meetup page) - check out the details on our Facebook page.

Perl 6 Release Quality Assurance: Full Ecosystem Toaster

Read this article on Perl6.Party

As some recall, Rakudo's 2017.04 release was somewhat of a trainwreck. It was clear the quality assurance of releases needed to be kicked up a notch. So today, I'll talk about what progress we've made in that area.

Define The Problem

A particular problem that plagued the 2017.04 release were big changes and refactors made in the compiler that passed all the 150,000+ stresstests, however still caused issues in some ecosystem modules and users' code.

The upcoming 2017.06 has many, many more big changes:

  • IO::ArgFiles were entirely replaced with the new IO::CatHandle implementation
  • IO::Socket got a refactor and sync sockets no longer use libuv
  • IO::Handle got a refactor with encoding and sync IO no longer uses libuv
  • Sets/Bags/Mixes got optimization polish and op semantics finalizations
  • Proc was refactored to be in terms of Proc::Async

Bailador documentation

The documentation of Bailador was updated. It looks much better now.

The many ways to use Alien

A while back I introduced the alienfile recipe system and we wrote a simple alienfile that provides in a CPAN context the tool xz and the library liblzma. I also went over how to test it with App::af. The week after that I showed how to integrate that alienfile into a fully functioning Alien called Alien::xz and promised to show how to then use that Alien from an XS or FFI module. Today I am going to do that. I am also going to show how to use a tool oriented Alien module. (conveniently, Alien::xz can be used in either library or tool oriented Alien mode). If you are more interested in FFI or tool oriented mode feel free to skip down to the appropriate paragraph.

Writing Declarative Perl

At The Perl Conference in Washington DC, I'll be giving a talk on Modeling a Universe in Perl. For previous versions of this talk, people have asked for more information about how we model complex actions in a (mostly) declarative manner. For example, here's the code for purchasing a clone:

It's the Steps() function which is our declarative code. As you might imagine, there are tons of actions which might require that you be in a particular area, or have credits removed from your wallet, so the Area and Wallet lines can be dropped into any Steps() function anywhere throughout our code. But people want to know how this works. In reality, it's pretty simple.

Scott Wiersdorf on Functional Refactoring with Perl

Perl 5 Porters Mailing List Summary: June 6th-11th

Hey everyone,

Following is the p5p (Perl 5 Porters) mailing list summary for the past week.


Portable GitHub system "GitPrep 2.6" is released - "Wiki system" is added. You can write documentation.

Portable GitHub system "GitPrep 2.6" is released at 2017-06-10.

Finally, "wiki" system is added. You can write documentation on GitPrep.

At first, Let's try
GitPrep example. You will find GitPrep is real portable GitHub system.

The features of GitPrep

I introduce the featrues of GitPrep for people who see GitPrep for the first time.

  • Github clone: GitPrep has the same interface as GitHub. All of repository, pull request, issue, and wiki is used.
  • Support issue system
  • Portable: You can install GitPrep on your own Unix/Linux server.
  • Only needs Perl 5.10.1+.
  • Smart HTTP support: you can pull and push repository via HTTP.
  • Built-in web server, and reverse proxy support.
  • CGI support.
  • SSL support.
  • Public key authentication support

Installation is very easy. You run only two commands. Difficult settings is unnecessary.

Even if you have troubles by your mistake, for example "git push -f origin master", you can access all of your git repositories directory and fix them.

All reporitories are yours. All repositories exists on your own server.

The Perl Conference Newsletter

In this issue:

  • Sunday Arrival Dinner
  • Tuesday Night Social: Get to know your fellow attendees!
  • Tutorials spaces still available
  • Call for Speakers: Lightning Talks
  • Call for Volunteers

Arrival Dinner - Sunday June 18

Arrangements have been made with Zikrayet Restaurant and Lounge to host a large crowd for The Perl Conference Arrival Dinner.

Given the nature of the place, it will be possible to make this event more of a come and hang out destination than we've been able to have in past years. Just the same we have an official time of 6pm set for the dinner so everyone can have a common plan for arrival.

This is an arrivals dinner but not necessarily the arrivals dinner. It's also a tradition that others who prefer smaller crowds and/or a more vegan-friendly menu organize an Alt Arrival Dinner.

For more information, or to note your intended attendance, please visit: https://github.com/dcbpw/tpc-2017-dc/wiki/Arrivals-Dinner#attendees

Blog engine in Perl 6

I've started to build a blog engine in Perl 6 using the Bailador web framework. Primarily as an example for the Bailador book, but if it works well it might even be used as a replacement for the blog engine running blogs.perl.org.

If you are interested, follow the GitHub project. If you'd like to help with the development, let me know, and I'll invite you to the Bailador Slack channel where we can discuss things. If you'd like to support the project financially then the best thing you can do is to back the crowdfunding campaign of my book about Bailador.

Add Structured Data to Log::Any

NB: The proposed changes have been accepted, there is now a release candidate waiting for your feedback.

A few months ago, I proposed a few changes to Log::Any with the goal of

  1. extending the API between applications and Log::Any::Adapters to allow passing hashrefs in addition to the log message
  2. allow applications to specify localized context data for Log::Any to add to each log message in that scope
  3. allow system owners to globally specify a default adapter other than Null

To get the bigger picture, you might want to revisit the original blog post and the reply by dagolden.

Based on the follow-up discussion on- and offline, I've tried to come up with a pull request that implements the proposed changes. To give it a try, clone it, and use my sample adapter to produce some output:

About blogs.perl.org

blogs.perl.org is a common blogging platform for the Perl community. Written in Perl and offering the modern features you’ve come to expect in blog platforms, the site is hosted by Dave Cross and Aaron Crane, with a design donated by Six Apart, Ltd.