Accepted Grants for 2010Q3 doesn't make a clear border line and I got 2x congratulations that my grant was accepted. The truth is only the first three each quarter are. I just "scored" at the last 5th, non-rejected place.
Recently in Perl Category
When I showed Benjamin (a college of mine) my TPF 2010Q3 grant proposal, we slipped to a discussion about deploying Perl software. Nice (and recent) list of different approaches can be found @modernperlbooks.com. To sum it up => TIMTOWTDI. Which is good, but none of those is perfect. The Perl+CPAN world is way too complex.
During out discussion with Benjamin I proposed an idea of shipping the application altogether with the OS. Insane? The base Debian system is ~190MB, all the rest is needed for the application. Then deployment will be a matter of running this system on a virtual machine, somewhere in the cloud or in a simple chroot. (btw any Linux distribution can have any other Linux distribution working in a chroot) The files will never clash, all the "machines" would be dedicated. No fear of putting files where they belong to.
Xacobeo a Perl GUI to visualize XML and perform XPath queries just entered Debian unstable - http://packages.debian.org/sid/xacobeo.
It is amazing what happened to the Python thanks to just one company. The killer feature of that company is that they can handle and manage millions of servers and even give them for a public usage => "..., there are no servers to maintain: You just upload your application, and it's ready to serve your users.". I would like this to be true one day for Perl too!
I really do. In coming months (years?) I'll try to plug together « MiniCPANInject + SmokeTesting + ContinuousIntegration + Virtualization + Debian + Monitoring » to create an architecture for Debian-Perl hosting. Actually who cares about OS used, when the uploaded code just works, right?... A hosting that is aware that one server is not enough for everyone and will offer an architecture for development, user-acceptance, staging and production environments to start with a project from $day == 1.
I wanted to get some CPAN authors sample. Not everyone as there are too much (> 8000). So I've created this two on-liners to get the CPAN authors whose module is packaged for Debian:
apt-cache search perl | perl -lane 'next if $_ !~ m/^lib(.+?)-perl\s/; $m=$1; $m=~s/-/::/g; print $m;' > /tmp/deb-perl.txt
zcat ~/.cpan/sources/modules/02packages.details.txt.gz | perl -MIO::Any -lae 'my %x; BEGIN { %x=map { $_ => 1 } split "\n", IO::Any->slurp("/tmp/deb-perl.txt") }; while (<>) { @F=split /\s+/; $m = lc $F[0]; if ($x{$m}) { (undef,undef,$a)=split "/", $F[2]; print $a; }; }' | sort | uniq | xargs echo
And here is the result (842 out of 8270 total):
AAR ABARCLAY ABH ABIGAIL ABLUM ABW ACOBURN ADAMK ADAMSON ADEO ADIE AEPAGE AFF AFN AGENT AGIERTH AGROLMS AGRUNDMA AGUL AIZVORSKI AJGOUGH AJPEACOCK AJUNG AKSTE ALEXMV ALEXP ALIAN ALLENDAY AMBS AMNESIAC AMS ANDK ANDREIN ANDREMAR ANDREWF ANDYA ANNO AORR APEIRON APERSAUD APLEINER APOCAL APPEL ARAK ARANDAL AREGGIORI AREIBENS ARISTOTLE ARJAY ARODLAND ARTHAS ARUNBEAR ASH ATOURBIN AUDREYT AUFFLICK AUTRIJUS AVAR AVIF AWESTHOLM AWRIGLEY AZAWAWI AZED BALDUR BARBIE BBB BBC BBEAUSEJ BBENNETT BBIRTH BCHOATE BDFOY BETTELLI BFAIST BHOLZMAN BIGJ BIGPRESH BINGOS BINKLEY BJKUIT BJOERN BLHOTSKY BLILBURNE BLOONIX BMC BOBTFISH BOOK BORISZ BORUP BOUMENOT BPEDERSE BPGN BPOSTLE BPOWERS BRAAM BRADFITZ BRAMBLE BRIANSKI BRICAS BRUCEK BRUMLEVE BSDZ BSUGARS BTROTT BURAK BUREADO BWARFIELD BZAJAC CADE CAPTTOFU CAUGUSTIN CBARRATT CCPRO CEBJYRE CERNEY CEVANS CFAERBER CFRANKS CFRETER CGILMORE CGRAU CHAMAS CHANG-LIU CHANSEN CHLIGE CHM CHOCOLATE CHOLET CHORNY CHROMATIC CHSTROSS CINE CJM CKERNER CKRAS CLACO CLAESJAC CLEISHMAN CLINTDW CLKAO CMOORE CMUNGALL CODECHILD CODEHELP COG CONKLIN COOK CORION CORLISS COSIMO COWENS CPB CRAKRJACK CRAZYDJ CREAMYG CRENZ CVICENTE CWEST CYING DAGOLDEN DAMOG DANBERR DANBOO DANIEL DANKOGAI DANPEDER DAPATRICK DARREN DAVEBAIRD DAVECROSS DAVIDCYL DBP DBRIAN DCANTRELL DCLINTON DCONWAY DCOPPIT DDICK DDUMONT DESPAIR DGOLD DHAGEMAN DIBERRI DIOCLES DJERIUS DJR DLAND DLUX DMAKI DMEGG DMOW DMUEY DOM DOMM DONEILL DORMANDO DOUGM DOUGW DOY DPARIS DPAVLIN DPRICE DROLSKY DRRHO DRTECH DSB DSCHWEI DSKOLL DSTAAL DSTUART DTOWN DTRISCHUK DUNCS DURIST DWHEELER DWRIGHT EBASSI EBHANSSEN EBOHLMAN ECALDER ECOCODE EDAVIS EDD EDECA EDPRATOMO EESTABROO EHOOD EIJABB EISEN ELIZABETH ELLIOTJS ELMEX ERYQ ESM ESSKAR ESUMMERS EVDB EVO EWILHELM EXIFTOOL EXOBUZZ EXODIST FANGLY FAYLAND FDALY FDESAR FERREIRA FERRENCY FGLOCK FIMM FITZNER FLETCH FLORA FLUFFY FOOF FOTANGO FRAJULAC FRANCKC FREQUENCY FREW FRODWITH FTASSIN FUSINV FVULTO FWILES GAAS GABOR GAISSMAI GAM GARNACHO GAVINC GBACON GBARR GBJK GBROWN GDSL GEOFFR GETTY GFUJI GGOEBEL GIRAFFED GLOVER GMCHARLT GMPASSOS GNUSTAVO GOMOR GPHAT GRAHAMC GRANTM GRICHTER GRODITI GROMMEL GSAR GTERMARS GUGOD GUIDO GUIMARD GWARD GWILLIAMS GWOLF GWYN GYEPI HACKER HANK HARDAKER HARTZELL HAYASHI HBENGEN HDIAS HEMBREED HINRIK HIO HMBRAND HORNBURG IAMCAL IAN IBB IGUTHRIE IKEBE ILMARI ILTZU ILYAM ILYAZ IMACAT IMALPASS INGY IROBERTS ISHIGAKI ISTERIN ITUB IVAN IVSOKOLOV IZUT JABLKO JALDHAR JAMADAM JAMES JAMESGOL JANPAZ JARW JASLONG JASONK JASONS JAW JAWNSY JAYBONCI JBAZIK JBISBEE JBURNETT JCZEUS JDHEDDEN JDPORTER JDUNCAN JEB JEF JEFFA JEFFMOCK JENDA JESSE JESUS JETTERO JEZRA JFITZ JGMYERS JGOLDBERG JGOULAH JHAR JHI JHOBLITT JHORWITZ JIMT JJNAPIORK JJORDAN JJORE JJSCHUTZ JKAMPHAUS JKEENAN JKIM JLAPEYRE JLATHAN JLAVOLD JMACFARLA JMCNAMARA JMEHNLE JMGDOC JMM JMORRIS JMS JNH JOESUF JOEY JONATHAN JOSEPHW JOSERODR JOSHUA JPEACOCK JPIERCE JPRIT JQUELIN JRED JRENNIE JREY JROBINSON JROCKWAY JROGERS JSHIRLEY JSIRACUSA JSMITH JSTENZEL JSTOWE JSWARTZ JUERD JV JWALT JWU JZUCKER KAKE KAMENSKY KANE KARASIK KASEI KAWASAKI KAZUHO KCK KCLARK KEN KENSHAN KENTNL KGALINSKY KGB KGRENNAN KILINRAX KIMRYAN KJOHNSON KMACLEOD KMELTZ KMX KNIGHT KNOK KOOS KORTY KRAEHE KRAIH KROKI KROW KRUSCOE KTHAKORE KUBOTA KURIANJA KWILLIAMS KWITKNR KWMAK LAMMEL LARRYSH LARSLUND LBAXTER LBROCARD LCONS LDACHARY LDS LEAKIN LEGART LEIFJ LEIRA LEMBARK LENDL LIMAONE LINDNER LLAP LMASARA LMC LUISMUNOZ LUKEC LUNARTEAR LUNATIC LUSOL LYOKATO MACGYVER MADGHOUL MAKAMAKA MAMAWE MANOWAR MANU MARCEL MARKJ MARKLE MARKOV MARKPF MARKSTOS MARKUSB MART MATISSE MATTIASH MATTLAW MAXB MBARBON MCAST MCMAHON MCNEWTON MDOOTSON MDXI MEHNER MERGL MERLYN MEWP MFROST MGRABNAR MHARNISCH MHOSKEN MHX MICB MIGO MIKEM MIKER MIKEWONG MILA MINGYILIU MIRK MIROD MISHIKAL MISHOO MIVKOVIC MIYAGAWA MIZZY MJCARMAN MJD MJEVANS MJEWELL MJP MKODERER MKUTTER MLEHMANN MMIMS MNAGUIB MNOONING MOCONNOR MOGAAL MORITZ MORTY MPIOTR MRA MRAMBERG MRASH MRDVT MROGASKI MRSAM MSCHILLI MSCHOUT MSCHWARTZ MSCHWERN MSERGEANT MSHELOR MSISK MSTEVENS MSTPLBG MSTROUT MTHURN MUIR MVERB MVORL MWARD MYSOCIETY NCLEATON NEELY NEILW NEVESENIN NEZUMI NI-S NICOLAW NIDS NIKC NIKIP NIKOLAY NJH NKH NKUITSE NOG NPEREZ NUFFIN NWETTERS NWIGER OALDERS OCTO OGASAWARA OLAF OLIMAUL OLIVER OLIVIERT OLLY OMEGA OPERA OVID PAJAS PALLOTRON PARDUS PAULG PCIMPRICH PDEEGAN PDENIS PDWARREN PEGI PENMA PEPE PERIGRIN PERRIN PERSICOM PETDANCE PETEF PETEK PEVANS PHAYLON PHISH PHOENIX PHRED PIJLL PINYAN PIP PJCJ PJF PKENT PLAVEN PLOBBES PMEVZEK PMH PMISON PMKANE PMQS PODMASTER POTYL PRATZLAFF PRAVUS PRBRENAN PRYAN PVANDRY RAM RANI RATCLIFFE RATTLER RAZINF RBERJON RBOW RBS RCAPUTO RCH RCLAMP RDB RDF REATMON REDTREE REHSACK RENEEB REYNOLDS RFRANKEL RGARCIA RGIERSIG RHANDOM RHANSON RIBASUSHI RIZEN RJBS RJOOP RJRAY RKHILL RKITOVER RKOBES RKRIMEN RMBARKER RMCFARLA ROAM ROBIN ROBM ROCKY ROKR ROLAND RONAN ROODE ROSCH ROSULEK RPETTETT RRA RRWO RSAVAGE RSCHUPP RSN RSOLIV RSPIER RUZ RVA RYBSKEJ SACAVILIA SALVA SAMPO SAMTREGAR SAMV SAPER SARTAK SBECK SBURKE SCANNELL SCHNUECK SCHUBIGER SCHWIGON SCOTT SCOTTW SCR SDOWD SERGEY SEWI SFINK SHERZODR SHEVEK SHLOMIF SIFUKURT SIMON SIMONFLK SIMONW SISYPHUS SIXAPART SJCARBON SJQUINNEY SJSZ SKA SLANNING SMCCAM SMCKAY SMRZ SMUELLER SNOWHARE SOENKE SONNEN SPADIX SPADKINS SPANG SPEEVES SPROUT SQUIRREL SREZIC SRSHAH SSCOTTO SSOTKA STBEY STEPHANB STEPHENCA STEVAN STEVE STEVENC STIGMATA STRUAN STRZELEC SUKRIA SULLR SUMMER SUNGO SUNNAVY SWALTERS SWHITAKER SWMCD SYP SZABGAB SZBALINT TAKERU TAKESHIGE TANIGUCHI TBONE TCHINCHOW TEEJAY TELS TEVERETT THALJEF THEPLER THINC THOR TIMA TIMB TIMBRODY TINITA TJENNESS TJMATHER TKURITA TLINDEN TMOERTEL TMONROE TMTM TMURRAY TNGUYEN TOBEYA TODDR TOKUHIROM TOMI TOMSON TOMZO TONVOON TONYC TPABA TPEDERSE TPG TREY TRIDDLE TRIPIE TSCH TSIBLEY TSUCCHI TURNERA TURNERJW TURNSTEP TVIERLING TWH TYEMQ TYPESTER ULPFR UMEMOTO UNOBE UNRTST URI VIDUL VIPUL VIY VPARSEVAL VPIT WADG WILLMOJG WINKO WITTEN WMCKEE WPMOORE WROSS WRW WYANT XERN XMATH XSAWYERX YANICK YANNK YENYA YEWENBIN YOSHIDA YUMPY YVES YVESAGO ZEFRAM ZENSPIDER ZEV
Joel shows that StackOverflow is (||was?) running on 2 servers (+1 backup) using C# and SQL Server. Impressive :-) seek to 24:56 to see the full performance+tech table.
There is also a Perl+Perl6 mentioned in this talk, seek to 38:00 to hear the #1 thing you should never do...
is just a base module responsible for loading extension (Data::Keys::E::*) during the object build time. It just makes sure one of the extensions supplied get() and set() method. The rest is up to the extensions.
get() should be called with one argument a $key and return value for it. set() should be called with $key and $value arguments returning modified (if it was) $key.
So far I've created this extensions:
- Store::Dir - folder storage
- Store::Mem - in memory storage
- Dir::Auto - auto create folder when needed
- Key::Adapt - change key with a callback
- Key::Auto - auto create key via callback
- UniqSet - a key can be set only once
- Value::InfDef - inflate/deflate values
- Locking - get/set locking
- Dir::Lock - uses additional folder to lock files
- Dir::LockInPlace - place locks directly on the stored files
How I want to use it now? Value::InfDef to help reading folders full of JSON files. Key::Auto to store data as Git does - based on the hash of data. Key::Adapt to easily access Debian distribution files in the pool folder or CPAN distributions files based on the AUTHORID/DISTRIBUTION in CPAN mirror folder structure.
For now there is just folder storage as I want to use it for some tasks, but it should be quite easy to create any key/value storage extension.
So the Perl QA Hackathon 2010 is over. My part in it was mainly to help with organizing, but with a specification from Gregoa and a help from Potyl a new debian-perl quality script was created - patchedit.
Patchedit works in two modes edit and check. In the edit mode it will fire-up an editor and optionally add a missing patch description fields. In the check mode it can test the fields and output TAP based on the ok/fail. Thanks to this and TAP::Formatter::HTML it was easy to create a page with the patch "health" status. Here is how:
find -name series | perl -MIO::Any -MFile::Basename=dirname -ne 'chomp; my $s = $_; my $bd=dirname($s); my @pl=map { $bd."/".$_ } grep { $_ !~ m/^\s*$/ } map { chomp; $_ } split("\n", IO::Any->slurp($s)); print map { $_."\n" } @pl;' | xargs prove --exec "patchedit check -o" -m -Q --formatter=TAP::Formatter::HTML > output.html
The output page can be found here.
You can watch the final stand-up video with the achievements at brian d foy blog.
I didn't know about this easy way to locate Perl modules in Debian packages.
$ dh-make-perl --locate Foo::Bar Using cached Contents from Fri Mar 26 10:25:51 2010 Foo::Bar is not found in any Debian package $ dh-make-perl --locate Moose::Meta::Class Using cached Contents from Fri Mar 26 10:25:51 2010 Moose::Meta::Class is in libmoose-perl package $ dh-make-perl --locate Test::More Using cached Contents from Fri Mar 26 10:25:51 2010 Test::More is in Perl core (package perl) since 5.6.2
So there is a ready made solution how to locate Perl modules in Debian packages. The '--locate' option is in Squeeze (testing) version of dh-make-perl or in the source repositiory.
From http://dev.catalystframework.org/svnweb/bast/revision?rev=8823
use Test::Deep qw(eq_deeply); ... return eq_deeply($bind_ref1, $bind_ref2);
vs
use Data::Dumper; ... local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1; return Dumper($bind_ref1) eq Dumper($bind_ref2);