The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Task::BeLike::GETTY - be like GETTY (without the insanity hopefully) -- use what drives his gears

VERSION

version 20150205.000

TASK CONTENTS

Perl itself

perl 5.010001

You should have at least 5.10.1

Useful Command-Line Tools

App::Ack

Because grep is outdated

Working with CPAN distributions

App::cpanminus

Because I don't want useless crap on my screen.

App::CPAN::Fresh

Installs latest version of the dist... for the people who cant wait to get their own release on other machines ;)

Object orientated working

Moo

Cause it cost nothing and makes the code nice.

MooX

An easier way to load Moo and MooX plugins for it.

Moose

The ultimate power in the universe to make classes

MooseX::NonMoose

Sometimes something else wanna be a Moose!

Application Frameworks

MooX::HasEnv

Depend attributes on environment variables in Moo.

MooX::Cmd

MooX::Cmd together with MooX::Options gives you the ability to make easy multicommand application.

MooX::Options

MooseX::Getopt

If you use Moose, then you should go this way for making options possible in your application.

String::ProgressBar

Make nice progress bars in your application.

Event driven, non-blocking environment

Reflex

Because POE is really outdated (and too complex)

Reflexive::Client::HTTP

Never saw a non-blocking environment which not used some HTTP client somewhere in the process hehe :).

Database

DBIx::Class

There is no other way to access a database

DBIx::Class::Candy

Use this to define your DBIx::Class result classes.

DBIx::Class::AlwaysUpdate

DBIx::Class::TimeStamp

DBIx::Class::EncodedColumn

DBIx::Class::InflateColumn::DateTime

DBIx::Class::InflateColumn::Serializer

Very useful in combination with JSON to get a simple random data storage field.

DBIx::Class::EncodedColumn::Crypt::Eksblowfish::Bcrypt

Best way to get a transparent (one way) encrypted field, like password.

Templating

Text::Xslate

The fastest template engine, but needs a bit more understandment, but can be used with many template syntaxes (more or less identical of course).

Web frameworks

Catalyst::Runtime

For serious web application development

Catalyst::Plugin::ChainedURI

A more simple way to get a specific url in Catalyst then with the given tools inside of Catalyst.

Catalyst::Plugin::CustomErrorMessage

An error should be nice.

Catalyst::Plugin::Session

Catalyst::Plugin::Session::State::Cookie

Catalyst::Plugin::Session::Store::File

Catalyst::Plugin::Unicode::Encoding

Never forget to load this. You want utf8.

Catalyst::Authentication::Store::DBIx::Class

Catalyst::Plugin::Authentication

Catalyst::Plugin::Captcha

Catalyst::Plugin::StackTrace

Make a crash more useful, show a stack trace.

Catalyst::View::TT

Catalyst::View::JSON

Catalyst::View::Email::Template

Yeb

A very simple straightforward Web DSL, perfect for beginners.s

Web::Simple

For the simple stuff (more for experienced users)

Plack

The base for all those frameworks, and the best way to make your own base for a webframework, even tho, you normally should be happy with Web::Simple and Catalyst, but it gives interesting background knowledge to know Plack and PSGI. See http://plackperl.org/.

Plack::Middleware::Debug

The so far best debugging console from the author of Plack directly.

Web Development Helper

CSS::Minifier::XS

JavaScript::Minifier

Twiggy::Server

An AnyEvent webserver which allows to make websocket servers.

PocketIO

socket.io compatible websocket implementation.

Validation

Syccess

A very simple concept to validate hashs based on any way you want.

Email::Valid

Best thing so far to check for a valid email.

Translation

Locale::Simple

A simple way to integrate gettext translations into Javascript and Perl with the same API. It has anything included you need, you just need to have the gettext tools installed. You can check for a tool msgfmt that is inside there, if you are unsure, if you installed the proper gettext package of your distribution.

Installation Tools

Installer

Install a giant group of requirements (of any kind) automatically into one directory.

Tools for authoring CPAN Distributions

Dist::Zilla

Dist::Zilla::PluginBundle::Author::GETTY

This pluginbundle gives you directly all Dist::Zilla plugins I use. Its a package that tries to be very efficient. Many people dislike that it generates the changes out of the git log. It is btw also used to generate this Task.

File::ShareDir::ProjectDistDir

Essential for working sane with the share directory of a distribution in development context.

Testing

Test::More

Simple, straightforward, thats what you need.

Test::Dirs

For comparing resulting directories.

File::Temp

For getting temporary directories. Very handy for tests.

Making your own DarkPAN / GreyPAN

CPAN::Repository

Dist::Data

Module::Data

Path::ScanINC

Other Libraries I Use

Data::Printer

Nicest debugging output ever.

DateTime 0.77

Version 0.77 required because: provides CLDR support with fewest known bugs

Working with timestamps is just wrong.

DateTime::Format::Epoch

As reference to remind that you can find YOUR specific DateTime string definition out of the many DateTime::Format:: distributions.

DateTime::Format::Strptime

A very flexible format handler, if you really cant find what you need.

DateTime::Format::Human::Duration

A good way to display a time duration to humans.

JSON

The most effective data storage way ...

JSON::MaybeXS

... and make it quick!

YAML

If you want the data in the worst case created or modified by humans, then this is the way to go.

Path::Tiny

Path::Class

IO::All

The best sugar to access files and their data.

Config::INI

I like INI files.... dont hate me.

Devel::NYTProf

The most heavy overall debugging possible. Try it out once, to know what you have.

Scalar::Util

Nice toolset, check it out and get it known.

Text::Markdown 1.0.24

Version 1.0.24 required because: has trust_list_start

For making nice GitHub README and wiki pages.

HTTP::Message

You will need HTTP::Request and HTTP::Response. Use it with LWP::UserAgent or Reflexive::Client::HTTP.

LWP::UserAgent

A simple way to make a blocking HTTP request based on HTTP::Request.

URL::Encode

URL encoding

URI

Handling URLs itself, making parameter and so on. Very useful, still dislike the API somehow.

Sanity-Check

These are just here to make sure other things work properly.

Mozilla::CA

Crypt::SSLeay

LWP::Protocol::https

IO::Socket::SSL

AUTHOR

Torsten Raudssus <torsten@raudss.us>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.