An update of my Perl Myths talk (for http://ossbarcamp.com in Dublin, Ireland, September 2009). It covers jobs, cpan, community, best practices, power tools, and perl 6.
Perl Myths 200802 with notes (OUTDATED, see 200909)Tim Bunce
Perl programming has it's share of myths. This presentation debunks a few popular ones with hard facts. Surprise yourself with the realities.
THIS VERSION IS OUTDATED. PLEASE SEE http://www.slideshare.net/Tim.Bunce/perl-myths-200909
Repeating History...On Purpose...with ElixirBarry Jones
A dive into the highlights of Elixir that make it the ideal platform for the web...and how all these questions were answered figured out 30 years ago. Presented to Upstate Elixir in Greenville, SC on Nov 16.
Preparing an Open Source Documentation Repository for TranslationsHPCC Systems
As part of the 2018 HPCC Systems Summit Community Day event:
On display first is a poster from Robert Kennedy, Florida Atlantic University on, Distributed Deep Learning on TensorFlow.
Following, Jim DeFabia, presents his breakout session in the Documentation & Training Track.
Translating a manual once is not a terribly difficult task. However, our manuals are always evolving, so we needed a plan to update translations on a regular basis. This requires a process that is maintainable, repeatable, and robust. In this case study of our forays into documentation internationalization, you can learn from our successes and laugh at some of our missteps along the way.
Jim DeFabia is the Documentation Lead for HPCC Systems®. He entered the field of technical documentation in 1993 at Clarion Software/TopSpeed, where he helped revolutionize the industry by creating manuals that people could read and actually understand. It was at TopSpeed that he first met and worked with many of the HPCC Systems “Mavericks.” So it was like coming home when he reunited with these colleagues in 2001 as they were initially developing the HPCC Systems platform, which was then released to the Open Source community in 2011.
Bhasker V Kode , (Co-Founder & CTO - Hover.in ) talking about erlang + engineering efforts at the Commercial Users of Functional Programming 2009, Edinburgh
Perl Myths 200802 with notes (OUTDATED, see 200909)Tim Bunce
Perl programming has it's share of myths. This presentation debunks a few popular ones with hard facts. Surprise yourself with the realities.
THIS VERSION IS OUTDATED. PLEASE SEE http://www.slideshare.net/Tim.Bunce/perl-myths-200909
Repeating History...On Purpose...with ElixirBarry Jones
A dive into the highlights of Elixir that make it the ideal platform for the web...and how all these questions were answered figured out 30 years ago. Presented to Upstate Elixir in Greenville, SC on Nov 16.
Preparing an Open Source Documentation Repository for TranslationsHPCC Systems
As part of the 2018 HPCC Systems Summit Community Day event:
On display first is a poster from Robert Kennedy, Florida Atlantic University on, Distributed Deep Learning on TensorFlow.
Following, Jim DeFabia, presents his breakout session in the Documentation & Training Track.
Translating a manual once is not a terribly difficult task. However, our manuals are always evolving, so we needed a plan to update translations on a regular basis. This requires a process that is maintainable, repeatable, and robust. In this case study of our forays into documentation internationalization, you can learn from our successes and laugh at some of our missteps along the way.
Jim DeFabia is the Documentation Lead for HPCC Systems®. He entered the field of technical documentation in 1993 at Clarion Software/TopSpeed, where he helped revolutionize the industry by creating manuals that people could read and actually understand. It was at TopSpeed that he first met and worked with many of the HPCC Systems “Mavericks.” So it was like coming home when he reunited with these colleagues in 2001 as they were initially developing the HPCC Systems platform, which was then released to the Open Source community in 2011.
Bhasker V Kode , (Co-Founder & CTO - Hover.in ) talking about erlang + engineering efforts at the Commercial Users of Functional Programming 2009, Edinburgh
Concurrent Programming with Ruby and Tuple Spacesluccastera
Ruby threads are limited due to the Global Interpreter Lock. Therefore, the best way to do parallel computing with Ruby is to use multiple processes but how do you get these processes to communicate?
This session will provide some strategies for handling multi-process communication in Ruby, with a focus on the use of TupleSpaces. A TupleSpace provides a repository of tuples that can be accessed concurrently to implement a Blackboard system. Ruby ships with a built-in implementation of a TupleSpace with the Rinda library.
During the session, Luc will demonstrate how to use Rinda and will highlight other libraries/projects that facilitate interprocess communication and parallel computing in Ruby.
Go After 4 Years in Production - QCon 2015Travis Reeder
Being one of the first companies (Iron.io) to use Go in production, the first to publicly hire Go developers and organizers of the largest Go meetup in the world, Travis has a unique perspective on the language and the community around it. Since we started using it, it has become one of the fastest growing languages and is being used in almost all startups (and non-startups) in some way or another. After making the switch from Ruby to Go - there’s plenty to be said after 4 years. A discussion on performance, memory, concurrency, reliability, and deployment are key to exploring Go and it’s value in Production. See how it’s worked for Iron.io, strategies for finding talent and explore the community.
Explains working with GNU Gettext i18n framework in linux environments. Details in this slide are generic and could be used for learning purpose only. It does not include details about processes follow in C-DAC (GIST).
Geecon 2019 - Taming Code Quality in the Worst Language I Know: BashMichał Kordas
I don't know any other languages with more pitfalls, perils and gotchas than Bash. Still, we use it in almost every larger project for deployment or maintenance scripts, because there is no better, more powerful and more universal choice on Unix platform. However, there is ridiculous amount of things that could go wrong if you don't have deep understanding of shell scripting. Your experience about typical issues with Java or other JVM languages is definitely not enough here. You need to deeply understand Linux ecosystem and its history in order to write correct script... or you don't? I will prove to you that Bash could be tamed and made easy if proper code quality standards and static analysis tools are applied and enforced in your delivery pipelines. I'll share my opinions and experiences from a large banking project and I'll tell you which tools and style guides we use.
In Opera Software we use Perl extensively.
From internal systems to high traffic web sites and browser-integration services like Opera Link and Opera Unite.
Most of them are mission-critical systems, up and running 24x7.
2019-03 PHP without PHP Architecture @ Confooterry chay
An obscure but ubiquitous design pattern in PHP development is known as Funky Caching. Using real architectural examples as a lens to look at this one simple PHP design pattern, we see how we can design web architectures that are "organic, democratic, and lasting"
The last year has been a busy one in Perl land. Find out about the latest and greatest versions of Perl: Perl 5.10.1 and Perl 5.12. Find out how they have been developed, what useful new features they bring and what's coming in the future.
Concurrent Programming with Ruby and Tuple Spacesluccastera
Ruby threads are limited due to the Global Interpreter Lock. Therefore, the best way to do parallel computing with Ruby is to use multiple processes but how do you get these processes to communicate?
This session will provide some strategies for handling multi-process communication in Ruby, with a focus on the use of TupleSpaces. A TupleSpace provides a repository of tuples that can be accessed concurrently to implement a Blackboard system. Ruby ships with a built-in implementation of a TupleSpace with the Rinda library.
During the session, Luc will demonstrate how to use Rinda and will highlight other libraries/projects that facilitate interprocess communication and parallel computing in Ruby.
Go After 4 Years in Production - QCon 2015Travis Reeder
Being one of the first companies (Iron.io) to use Go in production, the first to publicly hire Go developers and organizers of the largest Go meetup in the world, Travis has a unique perspective on the language and the community around it. Since we started using it, it has become one of the fastest growing languages and is being used in almost all startups (and non-startups) in some way or another. After making the switch from Ruby to Go - there’s plenty to be said after 4 years. A discussion on performance, memory, concurrency, reliability, and deployment are key to exploring Go and it’s value in Production. See how it’s worked for Iron.io, strategies for finding talent and explore the community.
Explains working with GNU Gettext i18n framework in linux environments. Details in this slide are generic and could be used for learning purpose only. It does not include details about processes follow in C-DAC (GIST).
Geecon 2019 - Taming Code Quality in the Worst Language I Know: BashMichał Kordas
I don't know any other languages with more pitfalls, perils and gotchas than Bash. Still, we use it in almost every larger project for deployment or maintenance scripts, because there is no better, more powerful and more universal choice on Unix platform. However, there is ridiculous amount of things that could go wrong if you don't have deep understanding of shell scripting. Your experience about typical issues with Java or other JVM languages is definitely not enough here. You need to deeply understand Linux ecosystem and its history in order to write correct script... or you don't? I will prove to you that Bash could be tamed and made easy if proper code quality standards and static analysis tools are applied and enforced in your delivery pipelines. I'll share my opinions and experiences from a large banking project and I'll tell you which tools and style guides we use.
In Opera Software we use Perl extensively.
From internal systems to high traffic web sites and browser-integration services like Opera Link and Opera Unite.
Most of them are mission-critical systems, up and running 24x7.
2019-03 PHP without PHP Architecture @ Confooterry chay
An obscure but ubiquitous design pattern in PHP development is known as Funky Caching. Using real architectural examples as a lens to look at this one simple PHP design pattern, we see how we can design web architectures that are "organic, democratic, and lasting"
The last year has been a busy one in Perl land. Find out about the latest and greatest versions of Perl: Perl 5.10.1 and Perl 5.12. Find out how they have been developed, what useful new features they bring and what's coming in the future.
Perl is a script programming language, which has a lot of similarity in syntax to “c” language. This also includes UNIX like sed;awk;tr etc. Perl is an interpreted language which can be assembled before execution in “c” code/bytecode. Once Perl is compiled, it is as fast as any other compiled “c” program. The Perl language is often considered as the best choice for the development of CGI (i.e Common gateway interface) due to its good text manipulation feature; even though it conducts only binary files.
The blogs "Dynamic Language Weenies Victorious After All (http://diagrammes-modernes.blogspot.com/2007/07/dynamic-language-weenies-in-default.html)" and "Invasion of the dynamic language weenies? (http://blogs.adobe.com/shebanation/2007/03/invasion_of_the_dynamic_langua.html)" are based on “Invasion Of The Dynamic Language Weenies (http://www.hacknot.info/hacknot/action/showEntry?eid=93)”. Unfortunately http://www.hacknot.info/hacknot/action/showEntry?eid=93 is no longer easily accessible. I could manage to retrieve the article from Internet Archive (http://www.archive.org/).
Application Logging in the 21st century - 2014.keyTim Bunce
Slides for my talk at the Austrian Perl Workshop in Salzburg on October 10th.
A video of the talk can be found at https://www.youtube.com/watch?v=4Qj-_eimGuE
Slides of my talk on Devel::NYTProf and optimizing perl code at YAPC::NA in June 2014. It covers use of NYTProf and outlines a multi-phase approach to optimizing your perl code.
A video of the talk and questions is available at https://www.youtube.com/watch?v=T7EK6RZAnEA&list=UU7y4qaRSb5w2O8cCHOsKZDw
Slides for my talk at the London Perl Workshop in Nov 2013, featuring the Devel::SizeMe perl module.
See also the screencast at https://archive.org/details/Perl-Memory-Profiling-LPW2013
Slides for my talk at SkyCon'12 in Limerick.
Here I've squeezed four talks into one, covering a lot of ground quickly, so I've included links to more detailed presentations and other resources.
Slides for my Perl Memory Use talk at YAPC::Asia in Tokyo, September 2012.
(This uploaded version includes quite a few slides from the OSCON version that I skipped at YAPC::Asia in order to have more time for a demo.)
Slides of my Perl 6 DBDI (database interface) talk at YAPC::EU in August 2010. Please also see the fun screencast that includes a live demo of perl6 using a perl5 DBI driver: http://timbunce.blip.tv/file/3973550/
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Tim Bunce
Slides of my talk on Devel::NYTProf and optimizing perl code at the Italian Perl Workshop (IPW09). It covers the new features in NYTProf v3 and a new section outlining a multi-phase approach to optimizing your perl code.
30 mins long plus 10 mins of questions. Best viewed fullscreen.
Slides of my talk about the DashProfiler perl module, which enables lightweight always-on performance monitoring for critical sections of code. See
http://search.cpan.org/perldoc?DashProfiler
DBD::Gofer is the scalable stateless proxy driver for Perl DBI.
These are the slides for my lightning talk on DBD::Gofer given at the Italian Perl Workshop in 2008 (with a few extra slides added).
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Tim Bunce
The slides of my "State-of-the-art Profiling with Devel::NYTProf" talk at OSCON in July 2009.
I'll upload a screencast and give the link in a blog post at http://blog.timbunce.org
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
3. Realities
-
I'm positive about Perl
Not negative about other languages
- Pick any language well suited to the task
-
Good developers are always most important,
whatever language is used
4. Prefer ‘Good Developers’
over ‘Good Languages’
“For all program aspects investigated, the
performance variability that derives from
differences among programmers of the same
language—as described by the bad-to-good
ratios—is on average as large or larger than
the variability found among the different
languages.”
— An empirical comparison of C, C++, Java, Perl, Python,
Rexx, and Tcl. IEEE Computer Journal October 2000
http://www.cis.udel.edu/~silber/470STUFF/article.pdf
“In the script group, the Perl subjects may be more capable than the others, because the Perl language appears more than others to attract
especially capable people.” :)
5. Who am I?
- Tim Bunce
- Author of the Perl DBI module
- Using Perl since 1991
- Involved in the development of Perl 5
- “Pumpkin” for 5.4.x maintenance releases
- http://blog.timbunce.org
Perl 5.4.x 1997-1998
Living on the west coast of Ireland
7. ~ Myths ~
- Perl is dead
- Perl is hard to read / test / maintain
- Perl 6 is killing Perl 5
Another myth “Perl is slow” is squashed via Tim Bray:
http://www.tbray.org/ongoing/When/200x/2007/10/30/WF-Results
8. ~ Myths ~
- Perl is dead
- Perl is hard to read / test / maintain
- Perl 6 is killing Perl 5
9. - Perl 5 isn’t the new kid on the block
- Perl is 22 years old
- Perl 5 is 16 years old
- A mature language with a mature culture
Contrast with “fire and motion” elsewhere:
How many times Microsoft has changed developer technologies in those years?
http://search.cpan.org/perldoc?perlhist Perl 1.0 1987-Dec-18, Perl 5.0 1993-Jul-31 thru 1994-Oct-17
The Perl Foundation logo used with permission.
Use of a camel image in association with Perl is a trademark of OʼReilly.
11. You can guess where thatʼs leading...
From “The State of the Onion 10” by Larry Wall, 2006
http://www.perl.com/pub/a/2006/09/21/onion.html?page=3
12. Buzz != Jobs
- Perl5 hasn’t been generating buzz recently
- It’s just getting on with the job
- Lots of jobs
- - just not all in web development
-
Web developers tend to have a narrow focus.
“At a recent finance technology conference in New York, the top 3 foundational technologies (by number of references) mentioned over the course
of the conference by its speakers were: #3 - XML, #2 - SQL, #1 - Perl
There were no others mentioned.” -- Richard Dice, president, The Perl Foundation,
in reference to O'Reilly's Money:Tech conference, New York, Feb 6 & 7, 2008.
Where "foundational technology" means a building block technology.
14. “web developer”
Yes, Perl is stagnant in this area,
but these are just “web developer” jobs
PHP - Iʼm not going to focus on PHP because itʼs not a general purpose language.
15. “software engineer”
Perl is mentioned in many more
software engineer/developer jobs.
16. “foo developer”
Perl is the primary focus of more developer jobs.
Want a fun new job? Become a Perl developer!
The existence of “foo developer” job titles is a sign of maturity.
18. Massive Module Market
- Vast library of free code on “CPAN”
- Over 4,500 active ‘authors’ (making releases)
- Over 18,700 distributions (72,000 modules)
- A third of all CPAN distributions have been
updated in the 12 months!
Libraries are more important than languages.
Large user community leads to large contributor community
(given good community tools - more on that later)
http://stats.cpantesters.org/statscpan.html
http://search.cpan.org/recent
19. Top Modules
-Many gems, including...
-DBI DBD::* DBIx::Class Rose::DB::Object
-Catalyst Moose DateTime
-Algorithm::* Statistics::* Thread::*
-XML::* HTML::* WWW::* Parse::*
-Net::* Email::* POE::* Locale::*
-Test::* Devel::Cover Perl::Critic perltidy
Quality varies on CPAN, naturally. (See Acme::* for some fun.)
http://www.serpentine.com/blog/2008/02/19/peruse-popular-perl-packages/
“Moose is pretty much the most exciting thing Iʼve seen come out of the Perl 5 world in quite some time, and Iʼm really enjoying using it for my
projects”
(My apologies if your favourite module isnʼt included here.)
20. Comprehensive Perl Archive Network
377 mirrors in 56 regions (TLDs)
CPAN is a distributed replicated file archive that handles global distribution of perl modules.
CPAN is like a warehouse
Map image via http://cpansearch.perl.org/src/LBROCARD/Image-WorldMap-0.15/examples/cpan_mirrors/
http://mirrors.cpan.org/
Mirror status http://www.cs.uu.nl/stats/mirmon/cpan.html
21. Developer Services
Upload your perl module distribution
and you automatically get...
• global distribution and archiving
• namespace ownership and management
• a bug tracking queue at rt.cpan.org
• a forum at cpanforum.com
• smoke testing on many platforms
This is a mature environment with rich services.
Iʼll discuss smoke testing and quality a little later
22. search.cpan.org
The CPAN “shop window”
For each and every distribution:
Browse well formatted inter-linked docs
Links to forums, bug tracking, ratings,
annotated documentation, dependency
analysis, smoke test results, and more...
Over 600,000 unique visitors per month
Source for stats: google analytics
23. Example page for a distribution
Showing rich set of features
TOOLS Also has other tools, like grep'ing and diff'ing the distributions without downloading them.
24. Dependency Analysis available for all Modules
http://deps.cpantesters.org/?module=Moose;perl=latest
Dependencies need not be hell!
Shows tree of dependencies. Identify risks.
Refine the view to match you particular operating system and perl version
25. Rising Upload Rate
Steady growth in upload rate for over 10 years.
But could this be mostly just new versions of old code? Letʼs see...
26. Expanding Scope
Every month CPAN is gaining a lot of NEW code offering NEW functionality.
But could this be coming from a static pool of authors? Letʼs see...
27. Growing Community of
Contributors
Every month CPAN is gaining a lot of NEW contributors!
But is all this new code from new authors just a drop in an ocean of old code? Letʼs see...
29. It’s the Community!
Christy John: “This is by far the most important thing I have noticed. Perl people are humble. ... Most of them are well versed in many languages.
Actually all of them would tell you to learn other languages too and use one which suits you. I think the confidence is from the fact that once you
start coding in Perl you are unlikely to move into others” -- http://thejoysofcomputing.wordpress.com/2009/09/02/why-i-love-perl-already/
redspike: People are “the reason that I started to look at Perl in the first place and why I have come back to it several times ... The people were
fantastic, informative, erudite, witty, enthusiastic, genuinely interested in what you were doing or trying to do and had a love of the bizarre. ... I
started hanging out on IRC ... I felt I belonged and that I was valued.” -- http://use.perl.org/~redspike/journal/39576
Brian “INGY” Ingerson: “But in the final analysis, it's the Perl community that keeps me around. These people are my weird looseknit family.” --
http://osdir.com/Article1534.phtml
30. Perl Mongers Everywhere!
http://www.pm.org/groups/map.html
Perl Monger User Groups
Not all of these are active and some active groups arenʼt on the map.
31. Perl Mongers
Grass Roots Community & Conferences
Act: “A Conference Toolkit” is a multilingual, template-driven, multi-conference web site that can manage the users, talks, schedule and payment for
your conference
http://act.mongueurs.net/act-conferences.png
http://use.perl.org/article.pl?sid=08/04/29/0512200
http://www.yapceurope.org/events/conferences.yml
From: "Philippe Bruhat (BooK)": book@cpan.org
32. Languages chosen for
new OS projects in 2008
~17,000 Projects
47% 28% 20% 18% 11% 10% 6%
C Java JavaScript Perl PHP Python Ruby
Source http://www.blackducksoftware.com/news/news/2009-01-21
33. ~ Myths ~
D!
- TE
Perl is dead
B US
- Perl is hard to read / test / maintain
- Perl 6 is killing Perl 5
34. ~ Myths ~
D!
- TE
Perl is dead
B US
- Perl is hard to read / test / maintain
- Perl 6 is killing Perl 5
35. “True greatness is measured by how
much freedom you give to others,
not by how much you can coerce
others to do what you want.”
—Larry Wall
I greatly value the freedoms perl give me
Freedoms in the language, the community, the technology, the culture.
With freedom comes responsibility
You can write poorly in any language.
You can write beautiful code in Perl.
http://jeremy.zawodny.com/blog/archives/009873.html#comment-39486
36. Guidelines and Tools
Perl Best Practices
Perl::Tidy
Perl::Critic
Test::*
Devel::Cover
37. Already a growing culture of quality and testing when the book came out in July 2005
256 guidelines
More than one way to do it, but...
Agreeing on one set of sane guidelines
is more important than the exact details of the guidelines.
PBP makes it easy for a team to agree a baseline policy “Weʼll just follow PBP guidelines”
and just discuss local variations.
38. Perl::Tidy
- Perl code beautifier
- Works beautifully - can be trusted
- Supports many options for personal styles
- Perl Best Practices recommended options
Normalise the coding style of existing code.
Very simple and effective way to add clarity to a code base.
Now youʼve got pretty code,
but is it good code?
39. Perl::Critic
- Static Code Analysis for Perl
- Includes over 120 policies
- Most based on Perl Best Practices
- Grouped into levels and themes
- Configurable and extensible
for local policies and styles
An extensible framework for creating and applying coding standards to Perl source code
Perltidy address the layout of code.
Perlcritic addresses the semantics.
Now youʼve got pretty code,
that follows best practices,
but does it work?
41. Test::*
- Perl culture takes testing seriously
- Excellent mature innovative tools for testing
- Test Anything Protocol - producers/consumers
http://en.wikipedia.org/wiki/Test_Anything_Protocol
- Test harness can run tests in parallel
- Test::* modules make it easy to write tests
- Over 450 Test::* distributions on CPAN!
Also many ʻmockʼ modules for mocking objects and other functionality to ease testing
Test::Class provides xUnit styles tests. The test modules work together.
http://search.cpan.org/search?m=dist&q=Test%3A%3A&s=1&n=100
Now...
youʼve got pretty code,
that follows best practices,
has tests and the tests pass,
but how much code is actually exercised by the tests?
COVERAGE (next)
42. Devel::Cover
- Coverage Analysis for Perl
- Tells you what code has been executed
- Statement, branch, condition, subroutine, pod
- Produces drill-down reports in HTML
Includes documentation coverage analysis.
45. Your Power Tools
Perl Best Practices
Perl::Tidy
Perl::Critic
Test::*
Devel::Cover
46. ~ Myths ~
D!
- TE
Perl is dead
B US
D! / maintain
- Perl is hard to readE test
B US T /
- Perl 6 is killing Perl 5
47. ~ Myths ~
D!
- TE
Perl is dead
B US
D! / maintain
- Perl is hard to readE test
B US T /
- Perl 6 is killing Perl 5
48. Perl 6 saved Perl 5!
- “Perl 5 had already started dying, because
people were starting to see it as a dead-end
language.
- It seemed odd at the time, but when we
announced Perl 6, Perl 5 suddenly took on
a new life.”
—Larry Wall, 2002
http://www.perlfoundation.org/perl6/index.cgi?state_of_the_onion
49. Perl 6 saved Perl 5!
- In 2000 development of perl was struggling
- The Perl 6 RFC process “vented spleen”
- Perl 5 development has gone smoothly since
- Much refactoring driven by Perl5-on-Parrot
- Many new features inspired by Perl 6 work
Back around 2000...
Perl5 was getting very hard to maintain
Bickering on the mailing lists
Few volunteers for any real work
Lack of direction
Using Perl 5 as one of the backends for Perl 6.
50. Perl 5.10
- Perl 5.10.0 was released in December 2007
Five years after 5.8.0, two years after 5.8.8
- Refactored internals
many fixes, more speed, less memory
- Smart matching, named captures, state
variables, defined-or, field hashes, pluggable
regex engines, say, trie-based non-recursive
pattern matching, and more...
http://www.slideshare.net/rjbs/perl-510-for-people-who-arent-totally-insane
51. Perl 5.10.1
- Perl 5.10.1 was released in August 2009
- Many bug fixes, and optimized internals
- Source code moved to git
- Reorganized development process
- 5.10.x now strictly maintenance only
- Moving to more rapid release cycle
52. A Culture of Testing
- Another bonus from Perl 6:
- Strong test suites for Perl 5 code are needed
to ensure backwards compatibility
53. Perl Test Suite
-2002: Perl 5.8.0 had 26,725 core tests
+41,666 more for bundled libraries etc.
-2007: Perl 5.10.0 has 78,883 core tests
+109,427 more for bundled libraries etc.
-2009: Perl 5.10.1 has 92,697 core tests
+142,101 more for bundled libraries etc.
For perspective: in Jan 2008 Ruby has ~1,400 core tests plus ~14,000 for bundled libraries etc.
(Ruby now has http://rubyspec.org project but I donʼt know how many tests/assertions they have.)
See comments in http://www.oreillynet.com/onlamp/blog/2007/05/trust_but_verify.html
and http://reddit.com/info/1uzda/comments/
Stats from “make test” and “cd ./t && perl TEST -core”
54. Module Test Suites
-CPAN Testers Network (CPANTS):
- Automated smoke testing of all CPAN uploads
- Runs the test suite included in distribution
- ~ 60 different platforms
~ 20 different perl versions
- Immediate feedback for developers
Some by completely automated robots in virtual machines.
Some by users who submit reports as they download and test via the installer.
55. Version & Platform Coverage
http://birmingham.pm.org/talks/barbie/stats-of-cpan/slide431.html
57. Platform and Version Result Matrix
available for all distributions
Example results for DBI 1.609:
http://matrix.cpantesters.org/?dist=DBI+1.609
58. Milestones in the
Perl Renaissance
2001: Lexical file-handles, Test::Simple
2002: Module::Build, Test::Builder,
2003: PAR, Perl 5.8.1
2004: Perl 6 Apocalypse 12 (Roles), CPANTS
2005: PPI, Perl::Critic
2006: CPAN Testers, Moose, Strawberry Perl
2007: Devel::Declare, local::lib
2008: Padre, Enlightened Perl Organization
2009: Iron Man Blogging Challenge
http://www.modernperlbooks.com/mt/2009/07/milestones-in-the-perl-renaissance.html
All this happened after the Perl 6 project was announced.
Modern Perl, 21st Century Perl, is very different to 20th Century Perl.
59. ~ Myths ~
D!
- TE
Perl is dead
B US
D! / maintain
- Perl is hard to readE test
B US T /
- D!
Perl 6 isSTE Perl 5
killing
BU
60. ~ Myths ~
D!
- TE
Perl is dead
B US
D! / maintain
- Perl is hard to readE test
B US T /
- D!
Perl 6 isSTE Perl 5
killing
BU
61. Community Resources
“Awesome community.
Perl people tend to be laid-back and friendly.”
-perlbuzz.com - Headlines and articles
-perlmonks.org - Meditations and wisdom
-use.perl.org - News and blogs
-irc.perl.org - Real-time help and chat
Quote taken from comment on http://blog.timbunce.org/2008/02/14/perceptions-of-perl-views-from-the-edge/
62. Perl Makes You Happy!
,
ie n t ific a ppy
Un s c me h
bu t it make s
Source http://blog.doloreslabs.com/2009/05/the-programming-language-with-
the-happiest-users/
Based on 150 tweets (per language?) on a particular day.
69. Learn it once, use it many times. Learn as
you go. Many acceptable levels of
competence. Multiple ways to say the same
thing. No shame in borrowing. Indeterminate
dimensionality. Local ambiguity is okay.
Natural Language
Punctuation by prosody and inflection.
Principles in Perl
Disambiguation by number, case and word
order. Topicalization. Discourse structure.
Pronominalization. No theoretical axes to
grind. Style not enforced except by peer
pressure. Cooperative design. ``Inevitable''
Divergence. http://www.wall.org/~larry/natural.html
These principles are the essence of Perl, and havenʼt changed.
70. - “Perl 6 [...] is clearer, more direct, more
expressive, and without many of the old
false leads and rough edges in Perl 5.
- [...] a programmer looking at a Perl 6
program will instantly recognize that it is
"Perl"”
—Larry Wall
71. my @suits = < >;
my @ranks = 2..10, < J Q K A >;
# concatenate each rank with each suit
my @deck = @ranks X~ @suits;
# create hash of card to points value
my %points = @deck Z ( (2..10, 10, 10, 10, 11)
X+ (0,0,0,0) );
# grab five cards from the deck
my @hand = @deck.pick(5);
# display my hand
say ~@hand;
# tell me how many points it's worth
say [+] %points{@hand};
A very simple example showing some very basic features.
Things that were fiddly in Perl 5 are trivial to express in Perl 6.
72. Perl 6 will run your
Perl 5 code
Will have a choice of runtime compilation or once-off source code translation.
73. “It’ll never be finished”
What does finished mean?
Is Perl 5 finished?
74. “If we'd done Perl 6 on a schedule, you'd have it by
now. And it would be crap.”
—Larry Wall
“do it right” and “it's ready when it's ready”
“Truly radical and far-reaching improvements over
the past few years.”
Itʼs given the design team the freedom to look deeply into issues.
To re-balance the design and grammar as it evolved, in ways that wouldnʼt be possible after a release.
75. When will it be done?
- “We're not doing the Waterfall [model of
development] we're doing the Whirlpool,
where the strange attractor whirls around with
feedback at many levels but eventually
converges on something in the middle.”
—Larry Wall
in 'What criteria mark the closure of perl6 specification'
76. - “feedback at many levels”
“In other words, a whirlpool sucks, but the trick is to position your whirlpool over your intended destination, and you'll eventually get there, though
perhaps a bit dizzier than you'd like."
-- Larry Wall, in 'What criteria mark the closure of perl6 specification'
77. Multiple Implementations
-Perl 6 compilers:
- Pugs - initial experimentation in Haskell
- KindaPerl6 - perl5 - aiming to self-host
- Mildew - built on SMOP runtime, C non-VM
- Elf - perl6 compiler written in perl6
- Rakudo - built on Parrot Compiler Toolchain
-All sharing a common test suite
Mildew & SMOP: http://www.perlfoundation.org/perl6/index.cgi?smop
Rakudo: http://rakudo.org
78. Pugs - 850,000 Lines of Code in 2 Years
An extraordinary amount of work.
Valuable feedback into the ʻwhirlpoolʼ of design and evolution.
Test suite is the official Perl 6 test suite
79. Rakudo Development Takes Off after Pugs
The next spin of the whirlpool
http://moritz.faui2k3.org/tmp/commits.png
generated by tools/commit-stats.pl in the Rakudo repository.
82. Perl 6 Projects
- Perl 6 is starting to get jobs done:
- HTTP::Daemon - web server
- mod_perl6 - apache module
- Perl6::SQLite - database
- SVG::Plot - generate charts in SVG
- Web - web application framework
- November - a wiki
- See http://perl6.org for more
Also http://github.com/perl6/perl6-examples/
83. Implemented in Perl 6
proto - a lightweight installer for perl6 projects http://use.perl.org/~masak/journal/38876
http://github.com/masak/proto/blob/master/projects.list
84. Coded in Perl 6
- >35,000 lines of tests
- >10,000 lines of examples
- >10,000 lines in the Rakudo compiler
- >1,600 lines in the November wiki
- (figures from mid-2008)
- (line counts don’t mean much for Perl 6)
86. Perl 6 on Parrot
- "Rakudo" short for "rakuda-do"
- Japanese for "Way of the Camel"
- "rakudo" also means "paradise"
- The most advanced Perl 6 implementation
87. - An advanced virtual machine designed for
dynamic languages
- Register based with Continuation Passing
control flow
- Already supports over 50 languages
about 20 of which are non-toy
Python, Ruby, PHP, Lua, Lisp, TCL, ...
Many innovative features.
Will use LLVM for JIT.
88. Parrot Compiler Toolkit
- Write a compiler in an afternoon!
- “Parrot is really quite wonderful. [...] Parrot
lets you implement your own languages
using Perl 6 rules for the grammar and Perl
6 for the compiler.”
- Simon Cozens
http://blog.simon-cozens.org/post/view/1323
89. Rakudo Progress
Over 15,000 tests pass. Great progress in a little over a year.
Note that the number of tests keeps increasing.
http://rakudo.de/ and http://rakudo.org/status
90. “Rakudo Star”
-Not “finished”
-Not “Perl 6.0.0”
-but a “useful” and “usable” release of Perl 6
-in “Spring 2010”
http://use.perl.org/~pmichaud/journal/39411
A star is rising!
92. Perl
has a massive library of reusable code
has a culture of best practice and testing
has a happy welcoming growing community
has a great future in Perl 5 and Perl 6
is a great language for getting your job done
for the last 20 years, and the next 20!
93. Any questions?
http://perlmonks.org
http://search.cpan.org
http://rakudo.org/how-to-help
http://blog.timbunce.org