YAPC::EU 2016 Day 3

7 minute read

These are my notes from the talks I attended at the third day of YAPC::EU 2016.

Fraudulent Perl (Jason Clifford)

  • works at Net-A-Porter
    • Perl based; called “legacy”: that’s what gets used
  • now Yoox Net-A-Porter (after a merger)
  • needed to merge two lots of products into one company
    • were given an “enterprise platform”
  • CANDO - responsible for customer and order
    • handles fraud prevention; customer data; order data; payment data
  • try to work out how to handle fraud in a new platform which doesn’t yet exist and goes live in a year
  • language and culture barrier; uk and italy
    • Yoox was based in Bologna
  • tried to build a simple system to get things going
    • rules engine with simple web UI
  • data for new fraud solution was in the Yoox legacy platform
    • can’t get to the data though…
  • why choose Perl for new platform?
    • already written hardest parts in Perl
    • team of amazing Perl devs
    • Perl is battle tested
    • almost all needed libs already exist
  • new tool called Conrad
    • fraud rules engine
    • hotlist for blacklists, whitelists, greylists
    • search data
    • chargeback management
    • does everything for future fraud management teams
  • not all went well
    • unclear who stakeholder was
    • production env delays
    • SOA (service oriented architecture) means data now distributed, not in local DB -> has performance impacts
    • order page took 7-40 seconds to load
    • many new technologies: elasticsearch, threadmetrix, rabbitmq
  • metrics
    • produce metrics for almost everything
    • output via statsd to graphite
    • display in grafana
    • audit trail for rule engine decisions

The non-butterfly effect - a universe where Camelia didn’t flap her wings (Nicholas Clark)

  • what would have happened had Jon Orwant never thrown the mug?
  • what if there were no Perl 6?
  • Chrononauts
    • game where linchpins can flip, then send ripples through time
  • original idea from Carl Mäsak (masak)
  • there’s an alternate Larry in the “new” timeline
  • Chip Salzenberg wrote Topaz: attempt to rewrite Perl in C++
  • maybe call 5.6 Perl 6, since it should include Unicode, but took ages to be released
  • Parrot April Fool’s joke was from Simon Cozens
  • http://www.perl.com/pub/2000/11/perl6rfc.html critique from MJD
  • Reimplementations (applies to both universes)
    • take a long time
    • takes a long time to migrate
    • don’t make language fundamentally better
    • deep arch changes are hard
  • Comparision between both universes
    • core still neither easy nor fun
    • more re-implementations (see Ruby and Python)
    • 5.12 (and yearly releases) start later
    • and might be irrelevant anyway
  • want it all: hard in both universes
    • fast startup
    • meaningfully CPAN compatible
    • multicore concurrency
  • alternate universe different, but not necessarily better

Better Code Review? (Tom Hukins)

  • developer and consultant based in London
  • wants to provide food for thought for code reviews
  • beforehand
    • what matters?
      • security; bugs; style; suggestions
    • who should review the code?
      • junior and senior devs should look at the code
    • when?
      • how much time to spend?
    • put context in code (if necessary), to help reviewers
  • review
    • show problems
    • avoid preferences; mention why something is a best practice
    • be kind
  • approval
    • sometimes lots of detail in review; one can feel overwhelmed
    • one should learn from code reviews
    • dismiss considerately; explain why some things aren’t taken on board
    • disagreement happens
  • tools
    • find something which is good enough for the job
    • one can push code to a branch and ask someone to look at it; low frills but works
    • tools should be customisable
    • start simple
    • products:

Perl 5.24 and the Zen of Motorcycle Maintenance (Sawyer X)

  • change happens
  • lots of change
  • 5.25.4 released this month
  • releases take time, are rotated through people to improve the process
  • new dev releases are smoked
  • then all of CPAN is smoked with new dev version released
  • each year there is a stable release of Perl
  • security fixes are backported two versions back

… before 5.24

  • current_sub
    • __SUB__ holds name to the current subroutine one is in. Useful for subs used as callbacks which then call themselves recursively.
  • fc: fold case
    • compare unicode strings case-insentively
  • regular expression extensions
  • lexical subroutines
    • my sub <subname> {} -> for private subs
  • sub signatures
    • sub foo($bar, $bob)
  • key-value slices
  • postfix dereferencing
    • instead of @$arrayref use $arrayref->@*
  • variable aliasing via references
  • optimisations
    • integer allocations faster
    • regexp optimiser
  • strict regexp syntax
  • CGI.pm dropped

… now what’s in 5.24

  • removals
    • auto deref; can be used accidentally
    • lexical $_
    • nested declarations
    • explicit chdir to $HOME now barfs
  • fixes
    • integer overflow in line numbering
    • explicit braces in regexp -> braces have to be escaped in regexes
    • destructive search/replace in place
  • optimisations
    • simple arithmetic is faster
    • multi deref op; handles deep structures faster $sea->[-1]{'hole'}{'log'}....
    • context stack rework
    • cheaper sub calls
    • fixed string match
  • features
    • postdref is in
    • AmigaOS support again
    • Unicode 8
  • future
    • fixes
      • POSIX::tmpnam removed, use File::Temp instead
      • require ::Foo::Bar removed
      • explicit curlies in regexes gone
      • //xx removed (two xs on regexes)
      • no crash in typeglobs named *::::::
      • $foo::$bar fixed
    • optimisations
      • bareword constant strings are constant folded
      • subroutine signature optimisations
      • default collation in UTF8 locales on supported platforms
    • features
      • unicode 9.0
      • syntax imporovements for ref aliasing
      • ${^ENCODING} removed; use Filter::Encoding instead
      • recognition for version control markers (e.g. conflict markers)
      • unicode script extensions now on by default
      • :const subroutine attribute
      • remove usenet in all docs
      • indented HEREDOCs
  • Perl docs need lots of love; help requested!

A tale of a Perl start-up (Claudiu Campean)

  • owns the business Calendis (the start up)
  • A booking platform for non-HORECA businesses
  • Calendis is very much still a work in progress
  • “the booking.com of non-HORECA businesses”
  • non-HORECA: basically any type of business that uses appointments (e.g. doctors, hairdressers, workshops…)
  • HORECA: https://en.wikipedia.org/wiki/Horeca
  • calendar app which can also send clients appointment notifications
  • has customer database
  • generates reports; e.g. revenue generated per employee
  • book: Traction: by Gabriel Weinberg
    • How to get transaction in a marketplace
  • experience report
    • was hard to market the product; noone seemed to want the product
    • went to direct marketing, which although expensive, gave much more feedback about what clients want, what they do, their business processes, etc and this fed back into the requirements.

From 5.12 to 5.24: Upgrading a business application (Lukas Mai)

  • works for Jochen Schweizer
  • thousands of files, modules and tests in their codebase
  • updating from 5.12 to 5.24 required bumping the minimum versions of some modules
  • needed to fix some of the code; experience report
  • some code needed to be deleted, some simply needed to be updated
  • found modules which needed to be removed, and cruft in other modules
  • some issues are still unfixed, it’s unclear what the problem is
  • 5.24 was roughly 12% faster than 5.12
  • update was totally worth it

Ballistic programming as a bootstrap (ab5tract)

  • ballistic procss
    • select intended destination
    • estimate force
    • try
    • see how well you went
    • update initial conditions with new info
  • sort of like the waterfall process
  • “Ballistic Programming”: Ted Vessenes
  • landscape of Perl6 is immense and fun to explore
  • REPL is ballistic laboratory
  • the history of Terminal::Print: prints chars to terminal like ncurses
    • initially printed snow flake chars upwards in the terminal
    • Larry fixed the code so the snow goes downwards
    • initially golfed code in the repl
  • async
  • golf friendly
  • can print colours
  • needs
    • full docs
    • test suite
    • multi-buffer
    • maybe also a golfing plugin/module
  • Perl6 now has signal handling, which helps with the cleanup after a Ctrl-C signal
  • already in the modules in the Perl6 ecosystem

Lightning talks

PerlSum Documentation (Herbert Breunung)

  • wrote docs and content for a course
  • created the PerlSum project: (Perl Summary)
  • why not use the man pages? PerlSum goes into more breadth (depth?)

Catalyst + Angular 2 = <3 (Jussi Kinnula)

Self-organized criticality in Perl Modules: the sequel (J. J. Merelo)

  • analysed code on CPAN and found most repositories showed that the number of lines of code changed and how often such commits occur with that number of lines shows the same trend across repos

How OTRS “saves” me in ISP (Naim Shafiyev)

  • compared Jira, OTRS, RT for trouble ticket systems
  • used process management plugin(?) in OTRS
  • saved him lots of work

Stop Worrying and Love the Bomb (Nadim Khemir)

  • tries to convince audience to convert their existing CPAN modules into Perl6
  • had fun porting the code from Perl5 to Perl6
  • described Data::Dump::Tree (p6) which he’d ported from Data::TreeDumper (p5)

I know nothing (Eric de Hont)

  • IT-Gilde Tech Talks
  • gave a talk about Perl in this user group of sysadmins
  • told about his experience and showed many slides
  • learned a lot in the process

Changing image of Perl at conferences (Wendy Van Dijk)

  • has heard nasty, indifferent things about Perl at conferences
  • had been to FOSDEM last year and this year
  • managed to fill a free devroom at FOSDEM for a Perl room, even though FOSDEM had closed the Perl room; they said that Perl was basically dying
  • hopes to be present at FOSDEM 2017 with booth and devroom
  • OSCON booth since 2014
  • slowly changing attitude to Perl
  • now getting compliments about Perl; people using Perl again
  • need to help ourselves again; blog, write; etc

Fun with assistive tech (Job van Achterberg)

  • http://roledrinks.com; several chapters in different countries to discuss about accessibility
  • showed screen readering in action

Pins and needles: overlaying cpan (mst)

  • explained what shadowcat does
  • CPAN consultancy
  • carton good for handling deps; pins versions
  • upgrades can be difficult
  • wrote App::opan, CPAN overlay

A few words from YAPC::EU 2017 (theo)

  • YAPC::EU will be in Amsterdam next year