The meeting first night was in a large beer bar in the centre of Nuremberg.
We went back to the Best Western to find a certain exPumpkin already resident in the bar.
Despite several of the well named Bitburgers we managed to arrive at the
conference venue on time the following morning. Since my knowledge of German was
limited to a C grade 'O' Level last century my review talks will be mostly
limited to English talks. Apologies in advance to those giving German talks
(not unreasonable considering the country). Hopefully other blog posts will
cover these.
Masak spoke about the dialectic between planning (like physics) and chaos (like
biology) in software development.
Tobias gave a good beginners guide to Perl 6 in German and I was able to follow
most of the slides since I knew more Perl 6 than German and even learnt a thing
or two.
20 years ago, I really wanted the chat2.pl domain name, to commemorate the one piece of code I ever contributed to the core. I even wrote the .pl administrators, and got no response.
This is a silly post. I am going to show you a contrived example of Perl code that is emulating what 8-bit assembler code does to loop through a 16-bit value. Why?
I have an ongoing researching project involving the Atari 2600 Video Console System, which has a MOS 6502 microcontroller at its heart. Assembler is not my native tongue and it helps to unpack these squirrelly bits into Perl to verify my understanding.
In a larger sense, though, seeing other ways to implement common tasks is salutary. If nothing else, you may appreciate how much lift you get from using higher level languages.
ZipRecruiter.com is a website where job seekers can find jobs all over the world, and employers can list their open positions. Not only will those positions be listed on ZipRecruiter.com, they will be pushed to more than one hundred job boards and social networks. Job seekers get free email alerts with postings that are tailor-made for their skill set and location.
This post is a follow-up to MacPorts openssl versus Perl. That post told of a problem with a recent MacPorts openssl upgrade, and gave a workaround.
The right thing to do, however, is to use the current openssl. That involves finding all Perl modules that use openssl and re-installing them.
To do this, I wrote a small Perl script that traversed @INC looking for binary files. It spawned the file command to determine whether they were Mach-O files. If they were, otool -L was used to determine whether they actually linked to openssl. The script requires Perl 5.10, but uses only core modules. The file and otool commands come with Mac OS X, at least with OS 10.11 El Capitan. The script itself is available as a GitHub gist.
In my case all I found was Net::SSLeay. So I took my MacPorts openssl back to the current version using the same commands detailed in the previous post to do the downgrade, and then did the following in the cpan client:
cpan> test Net::SSLeay
cpan> # to make sure it passes
cpan> force install Net::SSLeay
cpan> # forced because it is already installed
Those two tricks are especially useful when refactoring big codebase from Perl 5 to Perl 6. Such process may take weeks or even a months, and you will encounter two cases:
1. Some features are still in Perl 5, some are fully refactored to Perl 6. So you want to run separate Perl 5 and Perl 6 test files on single prove command. Prove is not very smart. It does not peek into test files to use correct interpreter (Perl 5 is assumed) and it does not recognize ".t6" extension some people use. But there is a solution. First create your test files.
originally wanted to make a small history about GPTrixie, but it will probably be boring and you can probably look at the commit history to have an idea of how it evolved. Instead, we will see how to rewrite my Gumbo binding using GPTrixie.
What is Gumbo?
Gumbo is a standalone C99 library that parse HTML5. It's heavily tested and it's project endorsed by google. Gumbo on github
What is GPTrixie?
GPTrixie is a tool that extracts definitions from a C header to transform them into their perl6 NativeCall counterpart. This definition is partially false since it actually extract the C definition from a XML file produced by GCCXML. C parsing is something a compiler like clang or GCC are more likely to do a better job than me with my poor compiler knowledge. Anyways you can find it at GPTrixie on github or just install it with panda install App::GPTrixie
For CPAN::Meta I've added validation tests for all existing YAML loaders, so you can see what's going on, and which version is conforming or fails.
YAML::XS, YAML::Tiny, CPAN::Meta::YAML, YAML::Syck do pass now, YAML fails.
I have also patches for Parse::CPAN::META and CPAN-Meta-YAML to use the new versions, but only in cperl, no PR yet.
I'm going to go over a bunch of the technical challenges that I faced building the Tabletop.Events, as well as some that are still yet to come. If you want to see what it takes to build a massive new app from scratch, talk about how to build a business around an app, or just learn about some novel solutions to hard problems, then join us at MadMongers on Tuesday, March 8th at 7pm.
[This is a post in my latest long-ass series. You may want to begin at the beginning. I do not promise that the next post in the series will be next week. Just that I will eventually finish it, someday. Unless I get hit by a bus.
IMPORTANT NOTE! When I provide you links to code on GitHub, I’m giving you links to particular commits. This allows me to show you the code as it was at the time the blog post was written and insures that the code references will make sense in the context of this post. Just be aware that the latest version of the code may be very different.]
Last time I said that I had three things left to do for Date::Easy before it was ready for CPAN:
Add a Time::ParseDate fallback to the ::Datetime class.
Figure out how to handle the UTC version of datetimes.
(Hopefully) fill out the POD.
This time, I’m reminded of the wise words of the great sage Meatloaf: two outta three ain’t bad.
This is only of interest to Mac users who link their Perl against
MacPorts code, but if you are such a person, you may find this useful.
This morning I found that Perl code that used LWP::Protocol::https was
failing, but only when run by the test harness.
After some flailing around I managed to track this to the fact that I
had just updated MacPorts, and taken openssl from 1.0.2f_0 to 1.0.2g_0.
I still do not know the precise cause of the failure, but it was exposed
by the fact that the test harness (whether ExtUtils::MakeMaker or
Module::Build) set PERL_DL_NONLAZY=1.
Downgrading to the old openssl did not fix the problem of course, but
made the symptoms go away. The short version of the procedure is
In my last YAML post I said libsyck is not maintained anymore.
I had a look, and this is wrong. Even if _why does not work on it anymore, (he came back btw recently), it is maintained and made some progress in libsyck, which is not reflected in the YAML::Syck perl part.
It is a mess, I admit, but easier fixable than the YAML::XS mess.
So I took libsyck upstream, which is at 0.70, and merged it with our changes which are at 0.61. Our perl-specific changes are a complete mess, so I cleaned that up to be acceptable upstream into a new 0.71.
merge back various changes from upstream (my own WIP version 0.71)