2008Q3 Grant Proposal: Barcode support in Act

  • Author: Andrew Shitov
  • Title: Barcode support in Act
  • Synopsis: Integrate a set of tools into A Conference Toolkit that will allow on-site registration with barcodes.

Andrew Shitov

Project Title
Barcode support in Act

Integrate a set of tools into A Conference Toolkit that will allow on-site registration with barcodes.

Benefits to the Perl Community
Using barcodes during the registration process allows speeding up on-site registration at Perl workshops and conferences with more than 20...30 attendees. At international events it additionally reduces the difficulties with foreign names, when an attendee says his or her name to a person behind the registration desk. And one more small benefit is that attendees receive more confidence that they are approved when coming to the venue with personal barcode printed on paper.

Results will be presented in a set of patches to the code of Act.

Visible elements are:

  1. Approved attendees see a link to a page containing personal barcode (the link appears in user's profile).
  2. Generated barcode numbers appear in the CVS export with the list of users.
  3. Administrative page where organizers will scan barcodes of people coming to the venue (and a reduced off-line variant).
  4. Status "showed up" appears for those attendees in the CVS export list who was "scanned" during the registration.
  5. A page with on-line statistics that is visible in the internet and could be displayed at a big screen in the venue.

Project Details
Perl workshops and conferences usually require people first to register on a website. Those whose registration was approved by event organizers come to the venue early in the morning, and everyone who attended conferences know that a registration often is a synonym to the queue. One of the parts of the registration process is a recognition who the attendee is (to give the badge, put a mark in a list, etc.). The registration hall even at local events is a noisy place, in case of international events additional "noise" occurs when an organizer tries to understand foreign names.

The proposal is to use a barcode system to eliminate time lost and errors during the registration (at events which use Act as their official websites). When organizers approve an attendee, a link appears in the correspondent user's profile that leads to a page to be printed. That page contains attendee's name and unique barcode (of course, organizers can add any additional information such as address and a map with hints on how to reach the venue).

When people come to the registration desk, an organizer scans the barcode and immediately receives the full information which is needed to proceed with the registration. Every attendee is also automatically registered as "showed up", which allows 1) update on-line statistics of the event, 2) disable false second registration and 3) registers the time an attendee came.

People who come without printed barcode may register as well as usual by naming him- or herself.

The process of registration runs either directly at a website or at off-line client (for the case of broken network) which allows registering people but does not update any statistics online. To use off-line version organizers have to install Apache and MySQL (or PostgreSQL) on their notebook(s).

The only additional thing organizers have to have is a one-dimensional barcode scanner which is not expensive and available in shops that sell shop equipment. Modern scanners have standard USB-connection and do not need installation of any additional software. If several organizers are expected to work at the registration, than they may work in parallel with several scanners (off-line version does not synchronize databases at different notebooks).

Coding standard for generating barcodes is Code 39.

Project Schedule

  1. Install Act on a development server (the most wired part but it is already completed).
  2. Prepare database tables for storing additional information (barcode number itself and details of the on-site registration).
  3. Create a generator for making random unique code numbers.
  4. Automate producing images with real bar codes.
  5. Learn Act to generate barcodes and images when they are needed.
  6. Update Act so that is displays a link to a page-to-be-printed in the users' profile.
  7. Create a sketch for the page from paragraph 6.
  8. Update CSS styles to allow high resolution printing of barcode image.
  9. Add to Act a page visible to organizers, where the scanning will happen.
  10. Create a page with live statistics.
  11. Duplicate the code needed for off-line version and create installation scripts for it.

All those require about two months and are expected to be completed before Perl events in autumn of 2008.

I am a leader of Moscow.pm and an organizer of several Perl events in Russia and neighboring countries, namely Russian Perl Workshop "Perl Today" in 2007, Ukrainian Perl Workshop "Perl Mova" in 2008 and YAPC::Russia "May Perl" 2008. The barcode technique was tested and exploited at all these events, but every time with the help of sparse scripts and lots of manual work, so the main goal of the grant is sponsoring laziness.

Amount Requested


Sounds good. But you shouldn't be reimplementing bar code modules - there are plenty on CPAN (GD::Barcode:*). One thing that was added to ACT for YAPC::Asia was QR Code support, which I've been seeing pretty much everywhere these days, so modifying that code to add support for 2D barcodes should actually be little work.

I'd suggest to investigate the use of QR codes as well: it could allow the organisers to use a webcam, which is also integrated in many laptops. There seem to be modules in CPAN for both generating and decoding them.

Leave a comment

About this Entry

This page contains a single entry by Alberto Simões published on August 1, 2008 12:00 PM.

2008Q3 Grant Proposal: Bavl was the previous entry in this blog.

2008Q3 Grant Proposal: Improve POE::Component::IRC is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.