SlideShare a Scribd company logo
1 of 55
Download to read offline
24 Uses for Perl6
Adventures in Module Land
Who?
● Simon Proctor
● Senior Developer at Zoopla
● Known as Scimon in most places
● Likes to talk about Perl6 people keep letting me
Why?
There are over 1200 modules in the Perl6 ecosystem as of
November 2018*
I thought it would be nice to highlight some.
* There are some duplicates due to modules existing in both Git and CPAN
Disclaimer(s)
● This is not a list of “best” modules merely ones I thought interesting
● Modules are listed alphabetically not ranked (with one exception).
● I picked 24 so I have 2 minutes to talk about each.
● Modules with documentation generally got preference.
● I wrote at least 1 of these.
NativeCall : From the Docs
“Call into dynamic libraries that follow the C calling convention”
NativeCall
● In core but has to be specifically imported
● Set of interfaces to work with dynamic libraries
● Allows for using existing compiled libraries easily in Perl6 code
● https://docs.perl6.org/language/nativecall.html
App::GPTrixie : From the Docs
“A tool to generate NativeCall code from C headers”
App::GPTrixie
● Give it a C headers file and a selection of options and it will create a basic Native
Call wrapper
● The final result will probably need a bit of work to get working but is a good base
point
● Allows for faster creation of higher level interfaces to shared libraries
● C++ support on the way.
App::Mi6 : From the Docs
“App::Mi6 - minimal authoring tool for Perl6”
App::Mi6
● Module development tool covers :
○ New Module creation
○ Testing
○ Documentation creation
○ Deployment to CPAN
● Highly recommended if you’re doing any module development even just
internally
Bailador : From the Docs
“Bailador is a light-weight route-based web application
framework for Perl 6”
Bailador
● A web application framework similar in usage to Dancer or Mojolicious
● Templating using Template::Mojo or Template::Mustache
● Features include :
○ Routing
○ Logging
○ Sitemap creation
○ Sessions
○ Configuration
BioPerl6 : From the Docs
“Collection of Bioinformatics classes, roles, and modules”
BioPerl6
● Attempting to redo the BioPerl code in Perl6
● Currently has the following models implemented :
○ Bio::PrimarySeq
○ Bio::Range
○ Bio::Root
● Looking for people to help
● See also BioInfo
Cairo : From the Docs
“Cairo 2D Graphics library binding for Perl 6”
Cairo
● Nice to use wrapper around the Cairo image library
● Creates files in a number of formats including
○ PNG
○ SVG
○ PDF
Color : From the Docs
“Format conversion, manipulation, and math operations on
colors”
Color
● Color object with operators to manipulate colours
● Handles different colour formats rgb, rgba, cmyk, hsl, hsv
● Manipulation options includes :
○ darken / lighten
○ desaturate / saturate
○ invert
○ rotate (around HSL colour wheel)
● Include custom operators for Color object manipulation
Config : From the Docs
“A perl 6 library for reading and writing configuration files”
Config
● Extensible Config file reader and writer
● Available parsers include:
○ JSON
○ TOML
○ YAML
Cro : From the Docs
“Cro is a set of libraries for building reactive distributed systems,
lovingly crafted to take advantage of all Perl 6 has to offer.”
Cro
● Uses Perl6 supplies to manage network requests and responses
● Fully threaded, no need for process management
● Handles out of the box :
○ HTTP/1.1
○ HTTP/2
○ HTTPS
○ Websockets
○ ZeroMQ
○ OpenApi 3
○ Various Authentication schemes including JWT
● For more information check out https://cro.services/docs
Data::Dump : From the Docs
“that's right folks, here's a quicky for your data dump needs. if
you have Terminal::ANSIColor installed then the output will be
so colorful your eyes might bleed.”
Data::Dump
● For when just say $_.perl isn’t enough
● Configurable options for :
○ Indentation
○ Colorisation
○ Recursion
○ Skipping Methods in Object
● Will give a dump of the input.
● Objects will dump the methods with signatures as well as attributes.
DDT : From the Docs
“Distribution Development Tool”
DDT
● Tool for creating modules
● Includes build, test and release stages
● Includes auto-generators for:
○ Classes
○ Roles
○ Package
○ Grammars
○ Modules
○ Tests
● Includes a watch option which can execute a given command
Desktop::Notify : From the Docs
“a set of simple bindings to libnotify using NativeCall”
Desktop::Notify
● Integrates with the Desktop Notification spec
● Simple interface to allow creating notifications
Jupyter::Kernel : From the Docs
“This is a pure-Perl 6 implementation of a Perl 6 kernel for
Jupyter notebooks.”
Jupyter::Kernel
● A Pure Perl6 implementation of a Jupyter binder
● Allows running Perl6 in a browser and Jupyter binder
● See also Net::Jupyter and iperl6kernel
Math::Constants : From the Docs
A few constants defined in Perl6
Math::Constants
● A selection of mathematical and physics constants including :
○ Gravitational constant as G
○ Speed of light as c, can also be used as a suffix (eg 3c)
○ Golden Ratio as either phi or φ
● And many more
Math::Matrix : From the Docs
“Create, compare, compute and measure 2D matrices”
Math::Matrix
● Matrix Mathematics system including:
○ transpose
○ invert
○ negate
○ add
○ multiply
○ dot product
○ tensor product
○ 22 ops
○ 16 boolean properties
○ And more
● In active development
Object::Delayed : From the Docs
“Export subs for lazy object creation”
Object::Delayed
● Adds two new keywords
● slack
○ Blocks defined with slack are evaluated when required.
○ Useful for lazy attribute / variable creation
● catchup
○ Blocks defined with catchup are evaluated asynchronously
○ If the block hasn’t finished evaluating when it’s required the code will block until it’s ready
OO::Monitors : From the Docs
“A monitor provides per-instance mutual exclusion for objects”
OO::Monitors
● Adds a new class keyword monitor
● A monitor has locking in place the ensures for a given instance only 1 thread can
be in it’s method at a time
● Simplifies thread safe coding practices
P5built-ins : From the Docs
“Implement Perl 5's built-in functions”
P5built-ins : From the Docs
● Meta module to import Perl6 implementations of Perl5 builtin functions like :
○ abs
○ fc
○ getgrpgid
○ log
○ -e
○ -z
○ __FILE__
○ __LINE__
● And many many more 89 functions, 9 file tests and 10 specific terms
● Very handy if you are porting Perl5 code to Perl6
Red : From the Docs
“Red - A WiP ORM for raku”
Red
● Perl6 ORM that leverages the Perl6 OO system
● Use traits to define relationships between objects and tables
● Currently Work In Progress looking for contributors
● https://github.com/FCO/Red : More info here
Sparrowdo : From the Docs
“Configuration management tool based on sparrow plugins
system.”
Sparrowdo
● DSL based system configuration tool for managing servers
● 28 Plugins currently available in the Perl6 Modules list
● Also includes Sparky a CI system
Stats : From the Docs
“Perl6 statistics modules. Currently has some basic statistics
functions revolving around averages.”
Stats
● Set of functions for doing stats on lists of numbers
○ mean
○ median
○ mode
○ quartiles
○ standard deviation
○ combined summary
SVG::Plot : From the Docs
“a simple 2D chart plotter for Perl 6.”
SVG::Plot
● Create SVG graphs including :
○ bars
○ stacked bars
○ lines
○ points
○ bubbles
○ pie charts
● Currently looking for documentation
Terminal::Print : From the Docs
“Terminal::Print intends to provide the essential underpinnings
of command-line printing, to be the fuel for the fire, so to speak,
for libraries which might aim towards 'command-line user
interfaces' (CUI), asynchronous monitoring, rogue-like
adventures, screensavers, video art, etc.”
Terminal::Print
● Library for printing to a terminal
● Geared towards fast updating terminal apps
● Looks really good for terminal based games
● Includes a selection of examples demonstrating its capabilities.
Trait::Env : From the Docs
“Trait to set an attribute from an environment variable.”
Trait::Env
● Allows for simple parsing of Environment variables into Object Attributes or
Variables
● Handles:
○ Booleans
○ Ints
○ Strings
○ Defaults
○ Arrays (JSON or separated strings)
○ Hashes (JSON or separated string)
● Simple mapping between variable name and Environment variable name
Uzu : From the Docs
“static site generator with built-in web server, file modification
watcher, live reload, i18n, themes, and multi-page support”
Uzu
● Static site builder with local web server for development
● Multiple templating options
○ Template6 (based on Template::Toolkit)
○ Mustache
○ Markdown (planned not)
● Internationalization built in
● Under development
Thoughts
● There’s a lot of modules available for Perl6
● But there’s lots of areas that are ripe for people to write modules for
● A lot of the modules could do with some more people involved
● And some of them could do with a bit more documentation
● NativeCall makes using system libraries really really easy

More Related Content

What's hot

Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer OSLL
 
Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!Sylvain Wallez
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the webMichiel Borkent
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threadsYnon Perek
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksStoyan Nikolov
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt CommunicationAndreas Jakl
 
Open Chemistry, JupyterLab and data: Reproducible quantum chemistry
Open Chemistry, JupyterLab and data: Reproducible quantum chemistryOpen Chemistry, JupyterLab and data: Reproducible quantum chemistry
Open Chemistry, JupyterLab and data: Reproducible quantum chemistryMarcus Hanwell
 
Gradle - small introduction
Gradle - small introductionGradle - small introduction
Gradle - small introductionIgor Popov
 
Avogadro 2 and Open Chemistry
Avogadro 2 and Open ChemistryAvogadro 2 and Open Chemistry
Avogadro 2 and Open ChemistryMarcus Hanwell
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright Andrei Alexandrescu
 
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2Antonios Giannopoulos
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools Yulia Shcherbachova
 
ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015Michiel Borkent
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Ovidiu Farauanu
 
Swift after one week of coding
Swift after one week of codingSwift after one week of coding
Swift after one week of codingSwiftWro
 
Modern Java Features
Modern Java Features Modern Java Features
Modern Java Features Florian Hopf
 

What's hot (20)

Source code analyzer
Source code analyzer Source code analyzer
Source code analyzer
 
Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!Inside the JVM - Follow the white rabbit!
Inside the JVM - Follow the white rabbit!
 
ClojureScript for the web
ClojureScript for the webClojureScript for the web
ClojureScript for the web
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threads
 
Robust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time ChecksRobust C++ Task Systems Through Compile-time Checks
Robust C++ Task Systems Through Compile-time Checks
 
06 - Qt Communication
06 - Qt Communication06 - Qt Communication
06 - Qt Communication
 
Open Chemistry, JupyterLab and data: Reproducible quantum chemistry
Open Chemistry, JupyterLab and data: Reproducible quantum chemistryOpen Chemistry, JupyterLab and data: Reproducible quantum chemistry
Open Chemistry, JupyterLab and data: Reproducible quantum chemistry
 
Gradle - small introduction
Gradle - small introductionGradle - small introduction
Gradle - small introduction
 
Avogadro 2 and Open Chemistry
Avogadro 2 and Open ChemistryAvogadro 2 and Open Chemistry
Avogadro 2 and Open Chemistry
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright
 
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2
New Indexing and Aggregation Pipeline Capabilities in MongoDB 4.2
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015ClojureScript loves React, DomCode May 26 2015
ClojureScript loves React, DomCode May 26 2015
 
Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)Cap'n Proto (C++ Developer Meetup Iasi)
Cap'n Proto (C++ Developer Meetup Iasi)
 
Swift after one week of coding
Swift after one week of codingSwift after one week of coding
Swift after one week of coding
 
Full Stack Clojure
Full Stack ClojureFull Stack Clojure
Full Stack Clojure
 
NS2 Object Construction
NS2 Object ConstructionNS2 Object Construction
NS2 Object Construction
 
C# basics
C# basicsC# basics
C# basics
 
Modern Java Features
Modern Java Features Modern Java Features
Modern Java Features
 
Triggers in MongoDB
Triggers in MongoDBTriggers in MongoDB
Triggers in MongoDB
 

Similar to 24 uses for perl6

Pentester++
Pentester++Pentester++
Pentester++CTruncer
 
Dfrws eu 2014 rekall workshop
Dfrws eu 2014 rekall workshopDfrws eu 2014 rekall workshop
Dfrws eu 2014 rekall workshopTamas K Lengyel
 
Serverless Clojure and ML prototyping: an experience report
Serverless Clojure and ML prototyping: an experience reportServerless Clojure and ML prototyping: an experience report
Serverless Clojure and ML prototyping: an experience reportMetosin Oy
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016maiktoepfer
 
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Sujit Pal
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
Wattpad - Spark Stories
Wattpad - Spark StoriesWattpad - Spark Stories
Wattpad - Spark StoriesRylan Halteman
 
Doctrine Project
Doctrine ProjectDoctrine Project
Doctrine ProjectDaniel Lima
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless worldMatthias Luebken
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixC4Media
 
Ln monitoring repositories
Ln monitoring repositoriesLn monitoring repositories
Ln monitoring repositoriessnyff
 
Ansiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxAnsiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxDamien Garros
 
SDEC2011 Mahout - the what, the how and the why
SDEC2011 Mahout - the what, the how and the whySDEC2011 Mahout - the what, the how and the why
SDEC2011 Mahout - the what, the how and the whyKorea Sdec
 
Android Frameworks: Highlighting the Need for a Solid Development Framework 
Android Frameworks: Highlighting the Need for a Solid Development Framework Android Frameworks: Highlighting the Need for a Solid Development Framework 
Android Frameworks: Highlighting the Need for a Solid Development Framework Mutual Mobile
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChang W. Doh
 
Powering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonPowering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonTatiana Al-Chueyr
 

Similar to 24 uses for perl6 (20)

Pentester++
Pentester++Pentester++
Pentester++
 
Paris.py
Paris.pyParis.py
Paris.py
 
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
 
Dfrws eu 2014 rekall workshop
Dfrws eu 2014 rekall workshopDfrws eu 2014 rekall workshop
Dfrws eu 2014 rekall workshop
 
Serverless Clojure and ML prototyping: an experience report
Serverless Clojure and ML prototyping: an experience reportServerless Clojure and ML prototyping: an experience report
Serverless Clojure and ML prototyping: an experience report
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016
 
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
Accelerating NLP with Dask on Saturn Cloud: A case study with CORD-19
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Wattpad - Spark Stories
Wattpad - Spark StoriesWattpad - Spark Stories
Wattpad - Spark Stories
 
Doctrine Project
Doctrine ProjectDoctrine Project
Doctrine Project
 
Who needs containers in a serverless world
Who needs containers in a serverless worldWho needs containers in a serverless world
Who needs containers in a serverless world
 
Data Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFixData Science in the Cloud @StitchFix
Data Science in the Cloud @StitchFix
 
Ln monitoring repositories
Ln monitoring repositoriesLn monitoring repositories
Ln monitoring repositories
 
Ansiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at robloxAnsiblefest 2018 Network automation journey at roblox
Ansiblefest 2018 Network automation journey at roblox
 
SDEC2011 Mahout - the what, the how and the why
SDEC2011 Mahout - the what, the how and the whySDEC2011 Mahout - the what, the how and the why
SDEC2011 Mahout - the what, the how and the why
 
Cooperative Data Exploration with iPython Notebook
Cooperative Data Exploration with iPython NotebookCooperative Data Exploration with iPython Notebook
Cooperative Data Exploration with iPython Notebook
 
Android Frameworks: Highlighting the Need for a Solid Development Framework 
Android Frameworks: Highlighting the Need for a Solid Development Framework Android Frameworks: Highlighting the Need for a Solid Development Framework 
Android Frameworks: Highlighting the Need for a Solid Development Framework 
 
MacGyver Learns Spark
MacGyver Learns SparkMacGyver Learns Spark
MacGyver Learns Spark
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
Powering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonPowering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and Python
 

More from Simon Proctor

An introduction to Raku
An introduction to RakuAn introduction to Raku
An introduction to RakuSimon Proctor
 
Building a raku module
Building a raku moduleBuilding a raku module
Building a raku moduleSimon Proctor
 
Perl6 operators and metaoperators
Perl6   operators and metaoperatorsPerl6   operators and metaoperators
Perl6 operators and metaoperatorsSimon Proctor
 
Perl 6 command line scripting
Perl 6 command line scriptingPerl 6 command line scripting
Perl 6 command line scriptingSimon Proctor
 
Perl6 signatures, types and multicall
Perl6 signatures, types and multicallPerl6 signatures, types and multicall
Perl6 signatures, types and multicallSimon Proctor
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tourSimon Proctor
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tourSimon Proctor
 

More from Simon Proctor (10)

An introduction to Raku
An introduction to RakuAn introduction to Raku
An introduction to Raku
 
Building a raku module
Building a raku moduleBuilding a raku module
Building a raku module
 
Multi stage docker
Multi stage dockerMulti stage docker
Multi stage docker
 
Phasers to stunning
Phasers to stunningPhasers to stunning
Phasers to stunning
 
Perl6 operators and metaoperators
Perl6   operators and metaoperatorsPerl6   operators and metaoperators
Perl6 operators and metaoperators
 
Perl 6 command line scripting
Perl 6 command line scriptingPerl 6 command line scripting
Perl 6 command line scripting
 
Perl6 signatures, types and multicall
Perl6 signatures, types and multicallPerl6 signatures, types and multicall
Perl6 signatures, types and multicall
 
Perl6 signatures
Perl6 signaturesPerl6 signatures
Perl6 signatures
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tour
 
Perl6 a whistle stop tour
Perl6 a whistle stop tourPerl6 a whistle stop tour
Perl6 a whistle stop tour
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 

Recently uploaded (20)

The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 

24 uses for perl6

  • 1. 24 Uses for Perl6 Adventures in Module Land
  • 2. Who? ● Simon Proctor ● Senior Developer at Zoopla ● Known as Scimon in most places ● Likes to talk about Perl6 people keep letting me
  • 3. Why? There are over 1200 modules in the Perl6 ecosystem as of November 2018* I thought it would be nice to highlight some. * There are some duplicates due to modules existing in both Git and CPAN
  • 4. Disclaimer(s) ● This is not a list of “best” modules merely ones I thought interesting ● Modules are listed alphabetically not ranked (with one exception). ● I picked 24 so I have 2 minutes to talk about each. ● Modules with documentation generally got preference. ● I wrote at least 1 of these.
  • 5. NativeCall : From the Docs “Call into dynamic libraries that follow the C calling convention”
  • 6. NativeCall ● In core but has to be specifically imported ● Set of interfaces to work with dynamic libraries ● Allows for using existing compiled libraries easily in Perl6 code ● https://docs.perl6.org/language/nativecall.html
  • 7. App::GPTrixie : From the Docs “A tool to generate NativeCall code from C headers”
  • 8. App::GPTrixie ● Give it a C headers file and a selection of options and it will create a basic Native Call wrapper ● The final result will probably need a bit of work to get working but is a good base point ● Allows for faster creation of higher level interfaces to shared libraries ● C++ support on the way.
  • 9. App::Mi6 : From the Docs “App::Mi6 - minimal authoring tool for Perl6”
  • 10. App::Mi6 ● Module development tool covers : ○ New Module creation ○ Testing ○ Documentation creation ○ Deployment to CPAN ● Highly recommended if you’re doing any module development even just internally
  • 11. Bailador : From the Docs “Bailador is a light-weight route-based web application framework for Perl 6”
  • 12. Bailador ● A web application framework similar in usage to Dancer or Mojolicious ● Templating using Template::Mojo or Template::Mustache ● Features include : ○ Routing ○ Logging ○ Sitemap creation ○ Sessions ○ Configuration
  • 13. BioPerl6 : From the Docs “Collection of Bioinformatics classes, roles, and modules”
  • 14. BioPerl6 ● Attempting to redo the BioPerl code in Perl6 ● Currently has the following models implemented : ○ Bio::PrimarySeq ○ Bio::Range ○ Bio::Root ● Looking for people to help ● See also BioInfo
  • 15. Cairo : From the Docs “Cairo 2D Graphics library binding for Perl 6”
  • 16. Cairo ● Nice to use wrapper around the Cairo image library ● Creates files in a number of formats including ○ PNG ○ SVG ○ PDF
  • 17. Color : From the Docs “Format conversion, manipulation, and math operations on colors”
  • 18. Color ● Color object with operators to manipulate colours ● Handles different colour formats rgb, rgba, cmyk, hsl, hsv ● Manipulation options includes : ○ darken / lighten ○ desaturate / saturate ○ invert ○ rotate (around HSL colour wheel) ● Include custom operators for Color object manipulation
  • 19. Config : From the Docs “A perl 6 library for reading and writing configuration files”
  • 20. Config ● Extensible Config file reader and writer ● Available parsers include: ○ JSON ○ TOML ○ YAML
  • 21. Cro : From the Docs “Cro is a set of libraries for building reactive distributed systems, lovingly crafted to take advantage of all Perl 6 has to offer.”
  • 22. Cro ● Uses Perl6 supplies to manage network requests and responses ● Fully threaded, no need for process management ● Handles out of the box : ○ HTTP/1.1 ○ HTTP/2 ○ HTTPS ○ Websockets ○ ZeroMQ ○ OpenApi 3 ○ Various Authentication schemes including JWT ● For more information check out https://cro.services/docs
  • 23. Data::Dump : From the Docs “that's right folks, here's a quicky for your data dump needs. if you have Terminal::ANSIColor installed then the output will be so colorful your eyes might bleed.”
  • 24. Data::Dump ● For when just say $_.perl isn’t enough ● Configurable options for : ○ Indentation ○ Colorisation ○ Recursion ○ Skipping Methods in Object ● Will give a dump of the input. ● Objects will dump the methods with signatures as well as attributes.
  • 25. DDT : From the Docs “Distribution Development Tool”
  • 26. DDT ● Tool for creating modules ● Includes build, test and release stages ● Includes auto-generators for: ○ Classes ○ Roles ○ Package ○ Grammars ○ Modules ○ Tests ● Includes a watch option which can execute a given command
  • 27. Desktop::Notify : From the Docs “a set of simple bindings to libnotify using NativeCall”
  • 28. Desktop::Notify ● Integrates with the Desktop Notification spec ● Simple interface to allow creating notifications
  • 29. Jupyter::Kernel : From the Docs “This is a pure-Perl 6 implementation of a Perl 6 kernel for Jupyter notebooks.”
  • 30. Jupyter::Kernel ● A Pure Perl6 implementation of a Jupyter binder ● Allows running Perl6 in a browser and Jupyter binder ● See also Net::Jupyter and iperl6kernel
  • 31. Math::Constants : From the Docs A few constants defined in Perl6
  • 32. Math::Constants ● A selection of mathematical and physics constants including : ○ Gravitational constant as G ○ Speed of light as c, can also be used as a suffix (eg 3c) ○ Golden Ratio as either phi or φ ● And many more
  • 33. Math::Matrix : From the Docs “Create, compare, compute and measure 2D matrices”
  • 34. Math::Matrix ● Matrix Mathematics system including: ○ transpose ○ invert ○ negate ○ add ○ multiply ○ dot product ○ tensor product ○ 22 ops ○ 16 boolean properties ○ And more ● In active development
  • 35. Object::Delayed : From the Docs “Export subs for lazy object creation”
  • 36. Object::Delayed ● Adds two new keywords ● slack ○ Blocks defined with slack are evaluated when required. ○ Useful for lazy attribute / variable creation ● catchup ○ Blocks defined with catchup are evaluated asynchronously ○ If the block hasn’t finished evaluating when it’s required the code will block until it’s ready
  • 37. OO::Monitors : From the Docs “A monitor provides per-instance mutual exclusion for objects”
  • 38. OO::Monitors ● Adds a new class keyword monitor ● A monitor has locking in place the ensures for a given instance only 1 thread can be in it’s method at a time ● Simplifies thread safe coding practices
  • 39. P5built-ins : From the Docs “Implement Perl 5's built-in functions”
  • 40. P5built-ins : From the Docs ● Meta module to import Perl6 implementations of Perl5 builtin functions like : ○ abs ○ fc ○ getgrpgid ○ log ○ -e ○ -z ○ __FILE__ ○ __LINE__ ● And many many more 89 functions, 9 file tests and 10 specific terms ● Very handy if you are porting Perl5 code to Perl6
  • 41. Red : From the Docs “Red - A WiP ORM for raku”
  • 42. Red ● Perl6 ORM that leverages the Perl6 OO system ● Use traits to define relationships between objects and tables ● Currently Work In Progress looking for contributors ● https://github.com/FCO/Red : More info here
  • 43. Sparrowdo : From the Docs “Configuration management tool based on sparrow plugins system.”
  • 44. Sparrowdo ● DSL based system configuration tool for managing servers ● 28 Plugins currently available in the Perl6 Modules list ● Also includes Sparky a CI system
  • 45. Stats : From the Docs “Perl6 statistics modules. Currently has some basic statistics functions revolving around averages.”
  • 46. Stats ● Set of functions for doing stats on lists of numbers ○ mean ○ median ○ mode ○ quartiles ○ standard deviation ○ combined summary
  • 47. SVG::Plot : From the Docs “a simple 2D chart plotter for Perl 6.”
  • 48. SVG::Plot ● Create SVG graphs including : ○ bars ○ stacked bars ○ lines ○ points ○ bubbles ○ pie charts ● Currently looking for documentation
  • 49. Terminal::Print : From the Docs “Terminal::Print intends to provide the essential underpinnings of command-line printing, to be the fuel for the fire, so to speak, for libraries which might aim towards 'command-line user interfaces' (CUI), asynchronous monitoring, rogue-like adventures, screensavers, video art, etc.”
  • 50. Terminal::Print ● Library for printing to a terminal ● Geared towards fast updating terminal apps ● Looks really good for terminal based games ● Includes a selection of examples demonstrating its capabilities.
  • 51. Trait::Env : From the Docs “Trait to set an attribute from an environment variable.”
  • 52. Trait::Env ● Allows for simple parsing of Environment variables into Object Attributes or Variables ● Handles: ○ Booleans ○ Ints ○ Strings ○ Defaults ○ Arrays (JSON or separated strings) ○ Hashes (JSON or separated string) ● Simple mapping between variable name and Environment variable name
  • 53. Uzu : From the Docs “static site generator with built-in web server, file modification watcher, live reload, i18n, themes, and multi-page support”
  • 54. Uzu ● Static site builder with local web server for development ● Multiple templating options ○ Template6 (based on Template::Toolkit) ○ Mustache ○ Markdown (planned not) ● Internationalization built in ● Under development
  • 55. Thoughts ● There’s a lot of modules available for Perl6 ● But there’s lots of areas that are ripe for people to write modules for ● A lot of the modules could do with some more people involved ● And some of them could do with a bit more documentation ● NativeCall makes using system libraries really really easy