February 2010 Archives

Who can make LWP understand svn://?

I want LWP to understand the source control schemes, like snv://. I almost got to look into this for this week's project, but it got pushed down the wish list. It's something that I'm going to want later though (like, at the Vienna QA Workshop). Is this an easy project for anyone?

The future of CPAN is moving away from a monolithic, central repository. You're always going to have that available, but a lot of work to make localized, custom, and even historical repositories available. I'd like the CPAN tools to be able to pull from more than just FTP and HTTP sources.

For my DPAN work that creates customized CPAN-like repositories, a couple of clients want to version their DPAN repository under source control. That can be very handy to bisect problems in application deployments. When did the collection of distributions in the DPAN break our application? Checkout an earlier version of DPAN, deploy, and test. Do that until you find the distribution upgrades where the application breaks. I'd like to pull directly from source control without setting up a webserver too.

For another use case, consider David Cantrell's CP*AN project that breaks out CPAN into repositories as they work for specific Perl versions (CP5.6AN) or specific architectures (cpNETBSDan). Those could be branches in source control. If you can make the right source-control specific path and LWP knew what to do with it, you could easily switch repositories by just using the right branch.

The CPAN.pm understands. In practice, that's either FTP or HTTP (and David Golden is working on making that even better). If you put your source control behind a web server, you can just use HTTP. What if you want to talk directly to the source control server, using svn://, svn+ssh://, git://, or another scheme? So far, LWP doesn't know what to do with those. I want to do something like:

 use LWP::Simple;

 my $file = get( 'svn://...' );

The real goal is put that svn:// in the CPAN tool configuration:

 cpan> o conf urllist unshift svn://...

I don't need LWP to understand the entire interface to the source control systems: if it can fetch a single file from either the head of the repository or a named commit, that's good enough.

I almost have SDL_Perl working on Snow Leopard

I'm trying to get SDLPerl working on my 64-bit Snow Leopard machine with Perl 5.10.1, and after solving many other problems, I got to RT #49975, where it's time to make the Mac bundle.

Since I was compiling SDL myself, I also had to fetch the latest JPEG, PNG, and TIFF libraries, as well as SDL_Image. The build file in SDL_Perl is verbose, so it doesn't say what it found or what it didn't find. I compile and install all of those before I build the Perl module. After installing SDL_Perl, I have to build the bundle so I can get the SDLPerl program I need to run the applications. That's another set of problems.

First, I fixed the Darwin.pm script to use the same perl that I'm building against. Never, never, never use the literal name "perl" in your build systems. Always use $^X so you get the perl the build is using. In this case, I don't want the system perl.

Next, Chris Nandor clued me into selecting the right architecture. By default, when I try to build the bundle it looks like it is try to make a fat one. I didn't build SDL, etc. for fat though. I just have to tell it which architecture I want:

  % env ARCHFLAGS="-arch x86_64" ./Build bundle

Now it mostly compiles, but I'm not so sure those warnings are harmless:

Building SDL_Perl
gcc -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE  -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -pipe -fstack-protector  -I/usr/local/perls/perl-5.10.1/lib/5.10.1/darwin-2level/CORE  MacOSX/launcher.m -L/usr/local/lib  -lSDL -Wl,-framework,Cocoa    -fstack-protector  -L/usr/local/perls/perl-5.10.1/lib/5.10.1/darwin-2level/CORE -lperl -ldl -lm -lutil -lc -framework Cocoa -o "SDLPerl.app/Contents/MacOS/SDLPerl"In file included from /usr/local/perls/perl-5.10.1/lib/5.10.1/darwin-2level/CORE/perl.h:2424,
                 from MacOSX/launcher.m:14:
/usr/local/perls/perl-5.10.1/lib/5.10.1/darwin-2level/CORE/handy.h:108:1: warning: "bool" redefined
In file included from /System/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:39,
                 from /System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h:38,
                 from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6,
                 from MacOSX/launcher.m:11:
/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/stdbool.h:36:1: warning: this is the location of the previous definition
MacOSX/launcher.m: In function '-[SDLPerlMain launchPerl:]':
MacOSX/launcher.m:136: warning: passing argument 2 of 'Perl_sys_init3' from incompatible pointer type

It's time to try it out, though. I create the lander.pl tutorial example:

 % perl5.10.1 -MSDL::Tutorial::LunarLander=lander.pl -e1

I'm in the SDL_Perl directory still, so I need to give some long paths to everyone finds themselves:

 % SDLPerl.app/Contents/MacOS/SDLPerl `pwd`/lander.pl

This almost works, but lander.pl can't find any of it's files. The working directory is off, so I fix that up in lander.pl :

use File::Basename;
my $dir = dirname( $0 );
chdir $dir;

Now the application window starts up and it paints it background and the first instance of the lander. That's as far as it gets before it SDLPerl unexpectedly quits (the crash report is at the end of the post). It doesn't like the call to update in draw. Comment out that line and everything is fine except I can't see anything happening in the application window.

I look at some other examples and note that they don't use update. Instead, they use sync. I change the line in draw to use sync instead, and now it works, although it dumps core at the end (after the Perl script exits):

# in draw
#$app->update($background_rect);
$app->sync;

Now I get the nice animation, although it took me a couple of tries to figure out it wasn't interactive. I kept trying to land it myself with arrow keys!

And, the crash report:

Process:         SDLPerl [11003]
Path:            /Users/brian/Downloads/SDL_Perl-v2.2.6/SDLPerl.app/Contents/MacOS/SDLPerl
Identifier:      org.perl.sdl
Version:         2.2.0 (2.2.0)
Code Type:       X86-64 (Native)
Parent Process:  bash [16138]

Date/Time:       2010-02-11 18:37:53.719 -0600
OS Version:      Mac OS X 10.6.2 (10C2234)
Report Version:  6

Interval Since Last Report:          3874519 sec
Crashes Since Last Report:           76
Per-App Interval Since Last Report:  225 sec
Per-App Crashes Since Last Report:   9
Anonymous UUID:                      6CEDA89B-C48A-4DB4-A5EE-D4B45D11A877

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Application Specific Information:
abort() called

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libSystem.B.dylib               0x00007fff803abfe6 __kill + 10
1   libSystem.B.dylib               0x00007fff8044ce32 abort + 83
2   libSystem.B.dylib               0x00007fff80364155 free + 128
3   SDL_perl.bundle                 0x00000001006d1287 XS_SDL_UpdateRects + 311
4   org.perl.sdl                    0x00000001000872de Perl_pp_entersub + 1470
5   org.perl.sdl                    0x000000010007eff6 Perl_runops_standard + 22
6   org.perl.sdl                    0x000000010001cb75 perl_run + 869
7   org.perl.sdl                    0x0000000100001912 -[SDLPerlMain launchPerl:] + 270
8   org.perl.sdl                    0x0000000100001a69 -[SDLPerlMain application:openFile:] + 214
9   com.apple.AppKit                0x00007fff812bc4f0 -[NSApplication _doOpenFile:ok:tryTemp:] + 330
10  com.apple.AppKit                0x00007fff810a4d02 -[NSApplication finishLaunching] + 1084
11  com.apple.AppKit                0x00007fff810a460c -[NSApplication run] + 80
12  org.perl.sdl                    0x0000000100001c9a main + 559
13  org.perl.sdl                    0x00000001000012b4 start + 52

Thread 1:  Dispatch queue: com.apple.libdispatch-manager
0   libSystem.B.dylib               0x00007fff80376bba kevent + 10
1   libSystem.B.dylib               0x00007fff80378a85 _dispatch_mgr_invoke + 154
2   libSystem.B.dylib               0x00007fff8037875c _dispatch_queue_invoke + 185
3   libSystem.B.dylib               0x00007fff80378286 _dispatch_worker_thread2 + 244
4   libSystem.B.dylib               0x00007fff80377bb8 _pthread_wqthread + 353
5   libSystem.B.dylib               0x00007fff80377a55 start_wqthread + 13

Thread 2:
0   libSystem.B.dylib               0x00007fff803779da __workq_kernreturn + 10
1   libSystem.B.dylib               0x00007fff80377dec _pthread_wqthread + 917
2   libSystem.B.dylib               0x00007fff80377a55 start_wqthread + 13

Thread 3:
0   libSystem.B.dylib               0x00007fff803989ee __semwait_signal + 10
1   libSystem.B.dylib               0x00007fff8039887d nanosleep + 148
2   libSDL-1.2.0.dylib              0x00000001001b9dd6 SDL_Delay + 102
3   libSDL-1.2.0.dylib              0x00000001001b9e1a RunTimer + 42
4   libSDL-1.2.0.dylib              0x0000000100172327 SDL_RunThread + 71
5   libSDL-1.2.0.dylib              0x00000001001b52a9 RunThread + 9
6   libSystem.B.dylib               0x00007fff80396f8e _pthread_start + 331
7   libSystem.B.dylib               0x00007fff80396e41 thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x0000000000000003  rcx: 0x00007fff5fbfe8d8  rdx: 0x0000000000000000
  rdi: 0x0000000000002afb  rsi: 0x0000000000000006  rbp: 0x00007fff5fbfe8f0  rsp: 0x00007fff5fbfe8d8
   r8: 0x0000000000000e03   r9: 0x0000000000000000  r10: 0x00007fff803a8026  r11: 0x0000000000000202
  r12: 0x00000001007c3000  r13: 0x000000010022c000  r14: 0x0000000000000000  r15: 0x0000000105410008
  rip: 0x00007fff803abfe6  rfl: 0x0000000000000202  cr2: 0x00000001007be000

Binary Images:
       0x100000000 -        0x100141ff7 +org.perl.sdl 2.2.0 (2.2.0) <4F6A48AB-7E99-7C42-D489-3257648F096E> /Users/brian/Downloads/SDL_Perl-v2.2.6/SDLPerl.app/Contents/MacOS/SDLPerl
       0x100167000 -        0x1001cefff +libSDL-1.2.0.dylib ??? (???) <9141A0B2-FE4D-7BC7-C9A0-FA03DBF8E42D> /usr/local/lib/libSDL-1.2.0.dylib
       0x100206000 -        0x10020afff  libutil.dylib ??? (???) <59C14CE0-3608-D246-542A-283E9065261D> /usr/lib/libutil.dylib
       0x1002fb000 -        0x1002fcff7 +SFont.bundle ??? (???) <D8B8C13B-EDE8-E1D6-4AA9-B972BF49C46D> /usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/auto/SDL/SFont/SFont.bundle
       0x1006c3000 -        0x1006dafff +SDL_perl.bundle ??? (???) <A5ABC122-E449-394E-046E-26489A6AAAF0> /usr/local/perls/perl-5.10.1/lib/site_perl/5.10.1/darwin-2level/auto/SDL_perl/SDL_perl.bundle
       0x1006e1000 -        0x1006e7fff +libSDL_image-1.2.0.dylib ??? (???) <D328FA76-689B-07EC-FEB0-B48C2B04BF7C> /usr/local/lib/libSDL_image-1.2.0.dylib
    0x7fff5fc00000 -     0x7fff5fc3bde7  dyld 132.1 (???) <A43F7314-3A8C-4391-3237-46790EE6313A> /usr/lib/dyld
    0x7fff80003000 -     0x7fff80087fe7  com.apple.print.framework.PrintCore 6.1 (312.3) <CEF785BE-D1D8-962E-9BB6-B3B3C77D9245> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
    0x7fff80091000 -     0x7fff80092fff  liblangid.dylib ??? (???) <EA4D1607-2BD5-2EE2-2A3B-632EEE5A444D> /usr/lib/liblangid.dylib
    0x7fff80098000 -     0x7fff800a3ff7  com.apple.speech.recognition.framework 3.11.1 (3.11.1) <5CA110A2-0712-F774-E7CF-AA7A2A106DAC> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
    0x7fff802df000 -     0x7fff8035cfe7  com.apple.CoreText 3.1.0 (???) <22F7F996-E0D7-DCC1-E1F5-EF776EE9D6A6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreText.framework/Versions/A/CoreText
    0x7fff8035d000 -     0x7fff8051bff7  libSystem.B.dylib ??? (???) <3814B353-9EE2-E2D3-2D5D-9FE26D4AF5D6> /usr/lib/libSystem.B.dylib
    0x7fff8051c000 -     0x7fff8051dff7  com.apple.audio.units.AudioUnit 1.6.1 (1.6.1) <DF521F72-5BD1-F549-F480-3B6A4849FE00> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
    0x7fff8051e000 -     0x7fff805d2ff7  com.apple.ColorSync 4.6.2 (4.6.2) <C3CE9F94-E8D6-2D83-A03F-EA841CA09D98> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
    0x7fff805d3000 -     0x7fff806d8fe7  libGLProgrammability.dylib ??? (???) <5AC07B42-EBE9-C9C2-5E16-F772ADA54B30> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
    0x7fff80949000 -     0x7fff80a23ff7  com.apple.vImage 4.0 (4.0) <354F34BF-B221-A3C9-2CA7-9BE5E14AD5AD> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
    0x7fff80baa000 -     0x7fff80baaff7  com.apple.Carbon 150 (152) <4B7DC942-DD69-7AF4-9018-3F43B31C1A81> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
    0x7fff80bd7000 -     0x7fff80bedfef  libbsm.0.dylib ??? (???) <83676D2E-23CD-45CD-BE5C-35FCFFBBBDBB> /usr/lib/libbsm.0.dylib
    0x7fff80bee000 -     0x7fff80beeff7  com.apple.Accelerate.vecLib 3.5 (vecLib 3.5) <BA861575-B0DE-50F5-A799-BDF188A3D4EF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff80bef000 -     0x7fff80d06fef  libxml2.2.dylib ??? (???) <4355C785-9388-1061-6427-D004E92A3766> /usr/lib/libxml2.2.dylib
    0x7fff80d07000 -     0x7fff80d07ff7  com.apple.CoreServices 44 (44) <210A4C56-BECB-E3E4-B6EE-7EC53E02265D> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
    0x7fff80d0f000 -     0x7fff80d56ff7  com.apple.coreui 2 (113) <D77489FE-F9AF-101F-3CF0-4534FBC3905F> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
    0x7fff80f6a000 -     0x7fff8104efff  com.apple.DesktopServices 1.5.4 (1.5.4) <E942205A-1ECC-42D9-B363-890E1A6BA1EF> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff8109b000 -     0x7fff81a8ffff  com.apple.AppKit 6.6.3 (1038.25) <57EAD017-FB84-931F-EE83-3E8AFAF156BC> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
    0x7fff81ac0000 -     0x7fff81ac0ff7  com.apple.Accelerate 1.5 (Accelerate 1.5) <E517A811-E0E6-89D0-F397-66122C7A25A4> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
    0x7fff81b36000 -     0x7fff81ba0fe7  libvMisc.dylib ??? (???) <524DC30F-6A54-CCED-56D9-F57033B06E99> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
    0x7fff81bd7000 -     0x7fff81c8dfff  libobjc.A.dylib ??? (???) <4B6351E5-A293-D814-36E1-E75E35C25D86> /usr/lib/libobjc.A.dylib
    0x7fff81dfb000 -     0x7fff81dfeff7  com.apple.securityhi 4.0 (36638) <A233A831-1EED-7C89-967C-37336DC1EF59> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
    0x7fff81e43000 -     0x7fff81e98fef  com.apple.framework.familycontrols 2.0 (2.0) <CA23136F-678E-23BB-2947-50FB1324C521> /System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls
    0x7fff81ed9000 -     0x7fff81f95ff7  libFontParser.dylib ??? (???) <E1AE4F0B-C56D-B8F8-17D5-67968CA07275> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
    0x7fff81f96000 -     0x7fff81fcbff7  libcups.2.dylib ??? (???) <DA686312-7D2A-38B4-DA6E-39AF492D9D24> /usr/lib/libcups.2.dylib
    0x7fff81fcc000 -     0x7fff81fdaff7  libkxld.dylib ??? (???) <60D615F8-6AD1-0AFF-8303-6F3627296780> /usr/lib/system/libkxld.dylib
    0x7fff8200c000 -     0x7fff8204dfef  com.apple.QD 3.33 (???) <41322DEE-6154-B69C-CA7C-6CCCF469DDA6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
    0x7fff8204e000 -     0x7fff8209dfef  libTIFF.dylib ??? (???) <3AD55B23-F69F-AF4C-18BB-C37B875062CA> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff8209e000 -     0x7fff820a4ff7  com.apple.DiskArbitration 2.3 (2.3) <857F6E43-1EF4-7D53-351B-10DE0A8F992A> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
    0x7fff820a5000 -     0x7fff820b4fff  com.apple.NetFS 3.2.1 (3.2.1) <3C6C2D5E-C1E2-9FF9-97A2-4141A5660EBB> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
    0x7fff820b5000 -     0x7fff82228ff7  com.apple.CoreFoundation 6.6.1 (550.13) <65C48FB9-CE32-68C4-9457-D8392775ED55> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
    0x7fff82229000 -     0x7fff82244ff7  com.apple.openscripting 1.3.1 (???) <2243C17C-EE36-D5B6-3A3E-8258973FF789> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
    0x7fff82254000 -     0x7fff8240efef  com.apple.ImageIO.framework 3.0.1 (3.0.1) <4BA79C47-6E1B-F855-79B2-840BB1B464AB> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
    0x7fff82595000 -     0x7fff825d6ff7  com.apple.SystemConfiguration 1.10.1 (1.10.1) <199E5964-B414-05BE-7930-D63309134523> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    0x7fff825d7000 -     0x7fff8261dfe7  libvDSP.dylib ??? (???) <2DAA1591-8AE8-B411-7D01-68DE99C63CEE> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
    0x7fff8262a000 -     0x7fff8264eff7  com.apple.CoreVideo 1.6.0 (43.1) <4DA5C05D-A281-2F84-9069-6D50A57B4174> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
    0x7fff8264f000 -     0x7fff82653ff7  libmathCommon.A.dylib ??? (???) <95718673-FEEE-B6ED-B127-BCDBDB60D4E5> /usr/lib/system/libmathCommon.A.dylib
    0x7fff82835000 -     0x7fff82ab6fe7  com.apple.Foundation 6.6.1 (751.14) <8E48AD19-815A-FABC-E237-C1F82D8F0164> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
    0x7fff82ab9000 -     0x7fff82b16fef  com.apple.framework.IOKit 2.0 (???) <4437494E-1E7F-EE0F-9FCA-AC5BC46DFD57> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff82b17000 -     0x7fff8320b537  com.apple.CoreGraphics 1.536.13 (???) <BD88E0D2-0D7D-895B-461A-43711D761666> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
    0x7fff8320c000 -     0x7fff83249fef  libFontRegistry.dylib ??? (???) <1FC46471-9351-7B00-5BD5-25287517BEB0> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
    0x7fff8327b000 -     0x7fff83291fff  com.apple.ImageCapture 6.0 (6.0) <BF702F65-8E30-E318-1B58-AE6C0D5E5715> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
    0x7fff833e1000 -     0x7fff83825fef  libLAPACK.dylib ??? (???) <E14EC4C6-B055-A4AC-B971-42AB644E4A7C> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
    0x7fff83834000 -     0x7fff8384aff7  com.apple.MultitouchSupport.framework 204.9 (204.9) <E433FBE7-E981-9325-98C3-A97C3382CE53> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
    0x7fff8384b000 -     0x7fff84055fe7  libBLAS.dylib ??? (???) <EEE5CE62-9155-6559-2AEA-05CED0F5B0F1> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    0x7fff841cd000 -     0x7fff841d2fff  libGFXShared.dylib ??? (???) <64E3B385-49F2-D60B-470A-1CC5B897D0B1> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
    0x7fff841d5000 -     0x7fff841f7ff7  com.apple.opencl 12 (12) <7E9C9972-485E-0E21-31FA-92FBBBFC24EF> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
    0x7fff841f8000 -     0x7fff844f6fe7  com.apple.HIToolbox 1.6.2 (???) <3E8DB791-B929-21F5-A425-C519A02F7D75> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
    0x7fff844f7000 -     0x7fff84829fef  com.apple.CoreServices.CarbonCore 861.2 (861.2) <8D3CECD6-0184-C481-14DF-544F6C1BD4D9> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
    0x7fff8482a000 -     0x7fff8482cfff  libRadiance.dylib ??? (???) <BC1313E3-6DBE-D58C-C981-175C88FCDCDE> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
    0x7fff8526b000 -     0x7fff852a0fff  libGLImage.dylib ??? (???) <B1927FB2-23F4-850A-8217-1580968CF3A6> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
    0x7fff852cb000 -     0x7fff853effe7  com.apple.audio.toolbox.AudioToolbox 1.6.1 (1.6.1) <16B94CB8-A114-D4A3-5168-921EE7435737> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
    0x7fff853ff000 -     0x7fff85797fff  com.apple.QuartzCore 1.6.1 (227.8) <ACE60C62-19DD-506E-42A3-3BA9674EAAD1> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
    0x7fff85798000 -     0x7fff85838fff  com.apple.LaunchServices 362 (362) <0420B038-B12E-0976-A069-15894B398314> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
    0x7fff85869000 -     0x7fff8586efff  libGIF.dylib ??? (???) <8E5EC739-D938-6840-49C3-C9AC3A8C893D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
    0x7fff8586f000 -     0x7fff85874ff7  com.apple.CommonPanels 1.2.4 (91) <4D84803B-BD06-D80E-15AE-EFBE43F93605> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
    0x7fff858be000 -     0x7fff858dcfff  libPng.dylib ??? (???) <7B5BF30D-8A8B-BED3-72CD-CE2632075D55> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
    0x7fff858dd000 -     0x7fff85920ff7  libRIP.A.dylib ??? (???) <400BB95B-0897-CF2B-50E1-A60619B5D7F1> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libRIP.A.dylib
    0x7fff85921000 -     0x7fff85949fff  com.apple.DictionaryServices 1.1.1 (1.1.1) <CC593ECB-8FFA-BF81-0B0D-F8C606B31318> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
    0x7fff8594a000 -     0x7fff8595eff7  com.apple.speech.synthesis.framework 3.10.35 (3.10.35) <63C87CF7-56B3-4038-8136-8C26E96AD42F> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
    0x7fff8595f000 -     0x7fff85972fff  libGL.dylib ??? (???) <5F9DAF5F-C25C-B6C2-C9BC-3D91D723FD85> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
    0x7fff85ab6000 -     0x7fff85b82fff  com.apple.CFNetwork 454.5 (454.5) <34CC453F-9BFC-F6F6-78FE-304F19A8266F> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
    0x7fff85b83000 -     0x7fff85b83ff7  com.apple.Cocoa 6.6 (???) <68B0BE46-6E24-C96F-B341-054CF9E8F3B6> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
    0x7fff85b84000 -     0x7fff85b85ff7  com.apple.TrustEvaluationAgent 1.1 (1) <040B71B1-F8BD-1605-057E-E80DBDE1FE59> /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
    0x7fff85bea000 -     0x7fff85ca3fff  libsqlite3.dylib ??? (???) <5A15E12A-AE8F-1A36-BBC7-564E7D7AD0FB> /usr/lib/libsqlite3.dylib
    0x7fff85ca4000 -     0x7fff85ca4ff7  com.apple.ApplicationServices 38 (38) <10A0B9E9-4988-03D4-FC56-DDE231A02C63> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
    0x7fff85e29000 -     0x7fff85e3bfe7  libsasl2.2.dylib ??? (???) <76B83C8D-8EFE-4467-0F75-275648AFED97> /usr/lib/libsasl2.2.dylib
    0x7fff85ea4000 -     0x7fff86194ff3  com.apple.RawCamera.bundle 2.3.0 (505) <E65CF964-5AFF-805A-E24C-4A9E2E3D4759> /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
    0x7fff8682d000 -     0x7fff8685efef  libTrueTypeScaler.dylib ??? (???) <EC783F86-C443-89F7-E2BF-D74AA32001CF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib
    0x7fff8685f000 -     0x7fff868b0fe7  com.apple.HIServices 1.8.0 (???) <02FCB65A-4E6E-D521-4E56-FEDD983BF92C> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
    0x7fff868b1000 -     0x7fff8696eff7  com.apple.CoreServices.OSServices 352 (352) <991CA6C2-78C5-93CC-A7AA-7BF351991BC6> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
    0x7fff86a75000 -     0x7fff86ab0ff7  com.apple.AE 496.1 (496.1) <9B43962D-4AE5-7CB5-EA81-50C27AF5AD94> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
    0x7fff86ae1000 -     0x7fff86c1ffff  com.apple.CoreData 102.1 (250) <A1476D8D-7BF1-0104-2946-F16D23B7FCD1> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
    0x7fff86c20000 -     0x7fff86c7cfff  libGLU.dylib ??? (???) <9D686464-864A-5795-6E32-ED8E0EB2874D> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
    0x7fff86ec3000 -     0x7fff86ed0fe7  libCSync.A.dylib ??? (???) <F72E20A8-1CD0-7187-8519-17E61064C565> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCSync.A.dylib
    0x7fff86ed1000 -     0x7fff86f4efef  libstdc++.6.dylib ??? (???) <35ECA411-2C08-FD7D-11B1-1B7A04921A5C> /usr/lib/libstdc++.6.dylib
    0x7fff872b1000 -     0x7fff87536ff7  com.apple.security 6.0 (36910) <D87D83DF-FCC0-32CD-E56E-EC9A934F96C8> /System/Library/Frameworks/Security.framework/Versions/A/Security
    0x7fff8753f000 -     0x7fff875befff  com.apple.audio.CoreAudio 3.2.2 (3.2.2) <D76A416C-290C-98BD-2FAE-44ED8FF421B3> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
    0x7fff875bf000 -     0x7fff875d8fff  com.apple.CFOpenDirectory 10.6 (10.6) <0F46E102-8B8E-0995-BA85-3D9608F0A30C> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
    0x7fff87615000 -     0x7fff8763bfe7  libJPEG.dylib ??? (???) <B00CA749-B114-637B-3A76-C862E0390FDF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
    0x7fff8767b000 -     0x7fff8769cfff  libresolv.9.dylib ??? (???) <01C7C750-7F6A-89B3-C586-5C50A839019E> /usr/lib/libresolv.9.dylib
    0x7fff87ad0000 -     0x7fff87b1ffef  com.apple.DirectoryService.PasswordServerFramework 6.0 (6.0) <BD71B20B-C530-6D10-47A4-9838CF292911> /System/Library/PrivateFrameworks/PasswordServer.framework/Versions/A/PasswordServer
    0x7fff87ba9000 -     0x7fff87bbeff7  com.apple.LangAnalysis 1.6.6 (1.6.6) <413E033D-7A8A-4C46-6779-592D93BE2B81> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
    0x7fff87e85000 -     0x7fff87f15fff  com.apple.SearchKit 1.3.0 (1.3.0) <3403E658-A54E-A79A-12EB-E090E8743984> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
    0x7fff87f16000 -     0x7fff87fa2fef  SecurityFoundation ??? (???) <E8D8DEC7-341B-585F-1175-BDE1419255EB> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
    0x7fff88006000 -     0x7fff88017fef  libz.1.dylib ??? (???) <3A7A4C48-A4C8-A78A-8B87-C0DDF6601AC8> /usr/lib/libz.1.dylib
    0x7fff88054000 -     0x7fff88054ff7  com.apple.vecLib 3.5 (vecLib 3.5) <5B072584-9579-F54F-180E-5D425B37E85C> /System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
    0x7fff88061000 -     0x7fff88110fff  edu.mit.Kerberos 6.5.9 (6.5.9) <74E23AD1-6ED4-639E-8EF4-981D2EBDCA43> /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
    0x7fff88111000 -     0x7fff881c6fe7  com.apple.ink.framework 1.3.1 (105) <C13179C5-1D60-E307-7016-32285F7F35E7> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
    0x7fff881c7000 -     0x7fff881d6fef  com.apple.opengl 1.6.5 (1.6.5) <0D07EDA3-0775-0417-5648-BC0B423340DF> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
    0x7fff88225000 -     0x7fff882bffff  com.apple.ApplicationServices.ATS 4.1 (???) <2BEFA90F-4AAA-B929-57C6-153CAA775DB5> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
    0x7fff882c9000 -     0x7fff882cfff7  IOSurface ??? (???) <49C9D9BF-3E35-42DE-0A2F-C0318F8B0A76> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
    0x7fff882d0000 -     0x7fff882d3ff7  libCoreVMClient.dylib ??? (???) <ABDDDD2F-23B5-B247-FF8A-7790F28C1D9C> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
    0x7fff882d4000 -     0x7fff88492fff  libicucore.A.dylib ??? (???) <7165A473-3A42-A15A-C6B0-75DECF1C3ECF> /usr/lib/libicucore.A.dylib
    0x7fff88493000 -     0x7fff884ddff7  com.apple.Metadata 10.6.2 (507.4) <89D9A7A8-00D8-6143-31C9-708275853E91> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
    0x7fff88748000 -     0x7fff88768ff7  com.apple.DirectoryService.Framework 3.6 (621.1) <1B6C18CD-2257-1CEB-00C4-1BD8EB267DDE> /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService
    0x7fff88769000 -     0x7fff8876bfff  com.apple.print.framework.Print 6.0 (237) <70DA9755-5DC1-716B-77E2-E42C5DAB85A2> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
    0x7fff888cd000 -     0x7fff888d4fff  com.apple.OpenDirectory 10.6 (10.6) <72A65D76-7831-D31E-F1B3-9E48BF26A98B> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff88a05000 -     0x7fff88a09ff7  libCGXType.A.dylib ??? (???) <95B0C1D9-12F2-FC93-674F-3C1B25E0E48E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/libCGXType.A.dylib
    0x7fff88a0a000 -     0x7fff88a0dfff  com.apple.help 1.3.1 (41) <E311A81E-9870-A430-1E16-AFF6C92CE6E5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
    0x7fff88a0e000 -     0x7fff88a39ff7  libxslt.1.dylib ??? (???) <87A0B228-B24A-C426-C3FB-B40D7258DD49> /usr/lib/libxslt.1.dylib
    0x7fff88a9b000 -     0x7fff88ae7fff  libauto.dylib ??? (???) <8145CA34-EA03-11D2-5C60-02C1E5750593> /usr/lib/libauto.dylib
    0x7fff88b7b000 -     0x7fff88c89fe7  libcrypto.0.9.8.dylib ??? (???) <CB2A1AF3-BDC7-2BF6-25C7-5EEA1EF823D7> /usr/lib/libcrypto.0.9.8.dylib
    0x7fffffe00000 -     0x7fffffe01fff  libSystem.B.dylib ??? (???) <3814B353-9EE2-E2D3-2D5D-9FE26D4AF5D6> /usr/lib/libSystem.B.dylib

Model: MacPro4,1, BootROM MP41.0081.B07, 8 processors, Quad-Core Intel Xeon, 2.26 GHz, 8 GB, SMC 1.39f5
Graphics: NVIDIA GeForce GT 120, NVIDIA GeForce GT 120, PCIe, 512 MB
Memory Module: global_name
Bluetooth: Version 2.2.5f6, 2 service, 1 devices, 1 incoming serial ports
Network Service: Ethernet 1, Ethernet, en0
PCI Card: NVIDIA GeForce GT 120, Display, Slot-1
Serial ATA Device: HL-DT-ST DVD-RW GH41N
Serial ATA Device: WDC WD6400AAKS-41H2B0, 596.17 GB
Serial ATA Device: WDC WD15EADS-00P8B0, 1.36 TB
Serial ATA Device: WDC WD15EADS-00P8B0, 1.36 TB
USB Device: Hub, 0x05ac  (Apple Inc.), 0x911c, 0xfd100000
USB Device: Keyboard Hub, 0x05ac  (Apple Inc.), 0x1006, 0xfd110000
USB Device: Apple Keyboard, 0x05ac  (Apple Inc.), 0x0220, 0xfd112000
USB Device: USB2.0 Hub, 0x05e3  (Genesys Logic, Inc.), 0x0608, 0xfd130000
USB Device: officejet 5500 series, 0x03f0  (Hewlett Packard), 0x3a11, 0xfd132000
USB Device: USB2.0 Hub, 0x05e3  (Genesys Logic, Inc.), 0x0608, 0xfd133000
USB Device: Apple Cinema HD Display, 0x05ac  (Apple Inc.), 0x921c, 0xfd120000
USB Device: BRCM2046 Hub, 0x0a5c  (Broadcom Corp.), 0x4500, 0x5a100000
USB Device: Bluetooth USB Host Controller, 0x05ac  (Apple Inc.), 0x8215, 0x5a110000
FireWire Device: built-in_hub, Up to 800 Mb/sec
FireWire Device: iPod, Apple Computer, Inc., Up to 400 Mb/sec

Our first Effective Perl talks

At Frozen Perl 2010, Josh and I gave our first talks based on Effective Perl Programming, 2nd Edition.

I gave a day-long master class as the first version of what we are turning into a full training course. I covered regexes, Unicode, pack, advanced subroutines, and tricks with filehandles. Each of those sections covered most of the material from those chapters in the book, and during the course I picked up even more tricks that we'll add to the ="http://www.effectiveperlprog…

Why your talk won't be at OSCON

About a week ago, the call for proposals for the Open Source Conference closed. It's a bit fuzzy because many people only realize what month (or year) it is only after the submission link disappears, so we let a few extra proposals slip in. Don't ask now: it's too late. For reals this time.

As part of the Perl Track committee, I just reviewed all of the proposals where the submitter marked it as a "Perl" talk. Several other people from the Perl track also reviewed them. There are going to be some very nice presentations this year, and at least one demonstration of highly advanced Perl technology that you'll want to see twice in a row, and maybe a third time at the end of the conference.

The Perl track can accept around 15 to 20 talks, roughly. In reality, there are about four fewer than that because there are two outstanding Australian speakers who could tell us they were going to read the phone book and they'd still get more people to show up than any other talk, and they each give two talks. You're competing for the remaining, non-Australian slots.

Part of the non-Australian slots go to invited talks, too. Part of the committee's job is to hunt down and nag people to submit interesting topics, and sometimes even help potential speakers develop topics that the conference thinks will attract people. Those people tend to have the inside scoop on hot topics that we want at the conference.

From there, the committee starts with the submissions with the highest rating average and make their first picks from that. There are plenty of submissions that got perfect scores. Many of these are known speakers with a proven, long-term history of packed rooms and excellent exit scores. Maybe a quarter of the talks will come from this group.

Not even all of the submissions that get perfect scores will make it in. We have to balance the topics, and we want to cover diverse topics. If too many talks, although excellent on their own, would unbalance the conference, some won't make it. We don't need 10 talks on exciting new advances in web frameworks.

Now, the rest of the submissions are competing for the remaining half of the slots and the reviewers have to figure out how to separate the worthy ones from the unworthy ones. Remember, the immediately attractive talks have already been selected. The rest are the not-immediately possibly attractive talks.

Here's a short list of reasons why you might not get that acceptance email, and things to think about before you submit proposals to other conferences (or try again at OSCON 2011). Since we don't give individual feedback, you have to examine your own proposal to see if any of these apply. If you feel guilty that some did

  • The more categories you give your talk ('Databases', 'Tools & Techniques', 'Perl', 'Emerging Topics', 'Linux-enabled Jello Molds'), the more reviewers you attract. Each reviewer is thinking about the number of slots available in their track, so if you're trying to muscle into a category where you don't belong, those reviewers will rank you lower. You won't make it into the cream that got acceptances on the first pass. Figure out which two categories you would most want to be in and no more.

  • You want to be in the Perl track, and you think that since you used Perl for part of the project that it's instantly interesting to Perl people. It's not. People want to learn something about Perl that they can use in their own work. If you aren't going to teach them something about Perl as one of the major parts of your talk, you need to find a different track.

  • From your description, we can't tell what the audience will get from your talk. You probably hate marketing-speak as much as anyone else, but you didn't recognize it in your own submission. If your description sounds like you are recruiting users for your product or program, you probably didn't get the higher votes that could have helped you.

  • You assumed that we already know about your project, or that we know all the new things that have happened to your project since we stopped paying attention to it three years ago. Maybe it has had the most exciting and groundbreaking advances with resurgences of new users and you're about to go public and buy Google. If the handful of extremely busy reviewers don't read about that in the proposal, it's not going to be part of their vote.

  • Additionally, you might be the king of your section of the open source world, but you were too modest in your submission to tell us about yourself. Really, we don't know everyone, so don't assume that the unnamed group of people who decide your OSCON fate know who you are. In reality, everyone on all committees get to vote on all talks, so there's a good chance most of the potential reviewers don't know who you are. If they did, you were probably already accepted as a speaker.

  • You're doing the same talk year after year. You're talk might be good, but we can't keep showing the same talks every year. There's a limited number of slots, and all other things being equal, if it's your old talk and someone's equally good new talk, it's turns out to be a little less equal and not in your favor. Don't become complacent. You don't get bonus points for giving a talk at last year's OSCON.

  • It's an open source conference. If you're talking about something you can't show, well, it's not that open is it?

  • Or, finally, you just had bad luck. There might have been nothing wrong with your talk, but in the end we can only accept so many, have to work out various scheduling problems, or the stars just do not align. The committee doesn't have the final say on anything, so maybe we liked your talk and something else bumped it. Sometimes life sucks.

Updates for Net-Amazon-MechanicalTurk

I noticed How can I fix Net::Amazon::MechanicalTurk's failing tests? on Stackoverflow. There are a couple of patches in RT and another one on Dave Viner's blog under Amazon Mechanical Turk Perl Library Error. I applied the patches and uploaded an unauthorized release so CPAN Testers can have a wack at it.

If you are the author of this module, use it, or otherwise have an interest in its health, please let me know. I don't use it at all, but I know how to make broken distros work again. There are still lots of problems, but I only did the minimum to get the tests to pass.

About brian d foy

user-pic I'm the author of Mastering Perl, and the co-author of Learning Perl (6th Edition), Intermediate Perl, Programming Perl (4th Edition) and Effective Perl Programming (2nd Edition).