How-Tos / Advent Calendar
Each year a series of 25 articles is published rather humorously as the Catalyst Advent Calendar.
2012
Well we're retiring the Catalyst Advent Calendar after 2011, and instead of trying to write one article on Catalyst per day in December in 2012, we (as in the community) are going to try to write one article per month on Catalyst through 2012 and beyond. This doesn't mean that Catalyst is dying - This means that Catalyst is running the show.
2011
- Day 01 - 2011 Reflections - 5.90 and beyond.
- Day 02 - Checking for leaks in MyApp.
- Day 03 - Get fat this Christmas
- Day 04 - Keep your libraries organized
- Day 06 - Using Plack Middleware for Better Database Debugging
- Day 10 - The ControllerRole ChainAction Massacre (Part 1)
- Day 11 - Easy CRUD for your Catalyst App
- Day 15 - Login, Authorization and User Administration
- Day 16 - Deploy Catalyst Applications with Starman and Apache
- Day 17 - The ControllerRole ChainAction Massacre (Part 2)
- Day 18 - Turbocharge your SQLite App with WAL
- Day 22 - A Git Tutorial
- Day 23 - Using CatalystX::Syntax::Action for More Concise Controllers
- Day 24 - The Catalyst Advent Calendar
2010
- Day 01 - 2010 Reflections - The Chainsaw Song
- Day 02 - Creating an Easy to Manage Search Engine with Catalyst and ElasticSearch
- Day 03 - Painless Memcached Configuration With Catalyst & DBIx::Class
- Day 06 - Adding Simple Excel Support
- Day 07 - Using Gearman with Catalyst to Create a Simple Image Thumbnailer
- Day 08 - Extensible Search with Data::SearchEngine
- Day 09 - Internationalising Catalyst, Part 1
- Day 10 - Input Verification with Data::Manager
- Day 11 - DBIx::Class::InflateColumn::FS and X-Sendfile
- Day 12 - Adding Dynamic Menus to Your App with MenuGrinder
- Day 13 - Getting Started with Catalyst and jQuery (and jQuery UI)
- Day 14 - Stuffing your stash with closures
- Day 15 - Access the Twitter API through Catalyst
- Day 19 - Catalyst::Controller::REST, jQgrid, and You.
- Day 20 - Internationalising Catalyst, Part 2
- Day 21 - One Definition, One Place: Form::Sensible::Reflector::DBIC and Catalyst
- Day 22 - Creating reusable actions with Moose::Role - an example
- Day 23 - Moose::Role, Moose::Util and DBIx::Class based Models (multiaction revisited)
- Day 24 - Integrating Facebook into your Catalyst application
2009
- Day 01 - How Catalyst Happens
- Day 02 - Your Application, Phase Two - The database change
- Day 03 - Creating a simple blog with Catalyst, HTML::FormHandler, and DBIx::Class
- Day 04 -Socialize with FBConnect
- Day 05 - Writing Your Application Declaratively
- Day 06 - Running CGI Scripts Under Catalyst
- Day 07 - Catalyst::ScriptRunner
- Day 08 - Catalyst on Debian
- Day 09 - Developing Catalyst Applications with Padre
- Day 10 - Loadable Traits for Catalyst Components
- Day 11 - Configuration layouts
- Day 12 - How DBIx::Class::ResultSet::WithMetaData can help keep your controllers clean
- Day 13 - Trees in SQL
- Day 14 - Graphing Your Catalyst Application
- Day 15 - Transactions and DBIx::Class
- Day 16 - Delivering Static Media with Catalyst
- Day 17 - Efficiently Create Multiple Related Rows in DBIx::Class
- Day 18 - Keeping Your Model Reusable
- Day 19 - Writing REST web services with Catalyst::Controller::REST
- Day 20 - A Tour of DBIx::Class::Helpers
- Day 21- An HTTP API in 5 minutes
- Day 22 - An AJAX CRUD Interface with Catalyst and jQuery
- Day 23 - Plack - A Fantastic Layer To Make Your App Deployment Easier
- Day 24 - CiderWebmail
Previous calendars
Please note that some of the techniques in older articles may now be obsolete.
2008
- Day 01 - Responses from the Catalyst survey
- Day 02 - Catalyst and nginx
- Day 03 - Making sparklines with Chart::Clicker
- Day 04 - Catalyst and OpenBSD
- Day 05 - Super Simple Photo Gallery
- Day 06 - Getting the word out with Catalyst::View::Email
- Day 07 - Cat In A Box on a Stick
- Day 08 - Some notes on ACCEPT_CONTEXT, with and without antlers
- Day 09 - Creating PDFs (and more!) with Catalyst::View::Graphics::Primitive
- Day 10 - Dealing with Config::General's inability to provide single item arrays
- Day 11 - Doing Rails-style routes with Catalyst
- Day 12 - Custom URL styles with CatalystX::CRUD
- Day 13 - Using XHTML Strict mode during application development
- Day 14 - Making Catalyst Sites Shine with Varnish
- Day 15 - Setting up Catalyst environments with
pkgsrc - Day 16 - Catalyst 5.80
- Day 17 - Site Building Hotness with Edge Side Includes
- Day 18 - WrapCGI: CGI.pm in your Catalyst app
- Day 19 - Progressive Authentication with Catalyst (Using OpenID)
- no entries 20..23
- Day 24 - Catalyst AJAX With MochiKit
2007
- Day 1 - Getting started with ExtJS screen library
- Day 2 - Get more REST - Using YUI and JavaScript for REST
- Day 3 - Application Design Techniques
- Day 4 - Catalyst + Open Flash Chart: Fancy graphs with minimal fuss
- Day 5 - Adding Authentication to your Catalyst App
- Day 6 - Inline Authentication Without Redirection
- Day 7 - Rapid CRUD with Catalyst
- Day 8 - local::lib and Catalyst
- Day 9 - Catalyst with Ext+Ajax: Editable Data Grids
- Day 10 - Two great catalyst time savers - Catalyst::Controller::reCAPTCHA and CatalystX::Starter
- Day 11 - Making your Catalyst App Cache-friendly
- Day 12 - A Future Look at Mango
- Day 13 - Day 13 - $c->uri_for fun and profit
- Day 14 - Using Catalyst Models Externally and Multiple Configuration Files
- Day 15 - Catalyst Configuration: A to Z
- Day 16 - Advanced Search in web DBIx::Class based applications (with tags, full text search and searching by location)
- Day 17 - Running under Apache/mod_perl
- Day 18 - Handling Growing FastCGI Processes
- Day 19 - Intermix Bricolage and Catalyst::View::Mason
- Day 20 - HTML::FormFu - Handles forms, so you don't have to
- Day 21 - New Features in SQL::Translator::Diff
- Day 22 - DBIx::Class::Tutorial::Part1
- Day 23 - Pluggable Modules and Deployable Instances
- Day 24 - Using plain classes as Catalyst models
2006
- Day 1 - Getting started with Catalyst and Subversion
- Day 2 - Handel
- Day 3 - The Layout of a Catalyst Application
- Day 4 - FastCGI Deployment with Bells on
- Day 5 - Taming legacy websites with Catalyst and wget
Day 6 - Catalyst::Controller::BindLex- DEPRECATED- Day 7 - Testing with an External Web Server
- Day 8 - A YouTube Catalyst Application
- Day 9 - Web Services with Catalyst::Action::REST
- Day 10 - The Chained Dispatch Type
- Day 11 - Using Catalyst with Log4perl
- Day 12 - Producing PDFs with Template::Latex
- Day 13 - Adding Custom Headers
- Day 14 - Job Queue
- Day 15 - Streaming mp3s with Catalyst
- Day 16 - FastCGI, second visit
- Day 17 - Testing Catalyst Controllers
- Day 18 - I18N - Internationalization using Catalyst::Plugin::I18N
- Day 19 - HTML::Widget tricks
- Day 20 - Catalyst::Plugin::Flavour
Day 21 - Unicode- superseded by Using Unicode- Day 22 - LDAP Autocomplete
- Day 23 - Creating a Google Maps Mashup
- Day 24 - The Catalyst Community - A round up of what's where
2005
- Day 6 - Building PAR Packages
- Day 7 - mod_perl Deployment
- Day 8 - Don't Repeat Yourself
- Day 9 - YAML, YAML, YAML!
- Day 10 - Catalyst on shared hosting
- Day 11 - Caching
- Day 12 - Catalyst::Plugin::Subrequest
- Day 13 - DBIx::Class as Catalyst Model
Day 14 - Authentication/Authorization- obsoleted by interim authorization and authentication example- Day 15 - Sessions
- Day 16 - Adding RSS feeds
- Day 17 - FastCGI Deployment
- Day 18 - Catalyst::View::TT
- Day 19 - Testing
- Day 20 - XMLRPC
- Day 21 - A Catalyst Blog
- Day 22 - Action Types
- Day 23 - Static::Simple
Day 24 - Authorization- obsoleted by interim authorization and authentication example
How To Contribute An Article
If you'd like to contribute an article, either get on to IRC channel #catalyst-dev on irc.perl.org or post a message to the catalyst-dev list in November suggesting a topic and asking for feedback. Assuming the topic is accepted, ask for a Subversion login and password.
UPDATE: So far, contributions to the Advent Calendar have been made via the CatalystAdvent application. This has had several disadvantages, discussed on the mailing list. The Catalyst wiki may be a better platform for storing the Advent Calendar entries.
OLD: The site is run using the CatalystAdvent application. The code may be checked out of the Subversion repository at http://dev.catalystframework.org/repos/Catalyst/trunk/examples/CatalystAdvent. (Instructions on using Subversion are at http://svnbook.red-bean.com/)
Draft articles pending approval are held in the root/<year>/pen directory.
Approved articles are held below root/<year>.
E.g. root/2007/1.pod holds the day 1 article for 2007.
Draft articles are moved up to root/<year> once checked and approved.
Articles are written in POD format. If you're not sure about POD formatting, look at previous articles to see how to insert titles, quote code etc.
Example
Say you have been allocated day 10 in 2008.
Check out the CatalystAdvent app from Subversion
$ svn co http://dev.catalystframework.org/repos/Catalyst/trunk/examples/CatalystAdvent CatalystAdvent
Create CatalystAdvent/root/2008/pen/10.pod - you can check how it looks with
$ perldoc CatalystAdvent/root/2008/pen/10.pod
Submit the article
$ svn commit CatalystAdvent/root/2008/pen/10.pod
Drop a note on IRC or by email to catalyst-dev saying it's ready for approval
Showing changes from previous revision. Removed | Added

