In the Richmond, VA area, I am the organizer for our SQL Saturdays. Among other jobs that this entails, this also means that I am working with SQLSaturday SpeedPASSes.

SpeedPASS History

According to the SQLSaturday FAQ, the SpeedPASS is your admission ticket to a SQL Saturday event. It contains a name badge, admission ticket, lunch ticket (if you paid for it), and a unique raffle ticket for each vendor.

What this means is that you need your SpeedPASS in order to attend the event, and if you choose to participate in the vendor raffles.

My history with SQL Saturday SpeedPASSes

I’ve had the opportunity to participate in many SQL Saturdays, both as an organizer and as a speaker. And I’ve been paying attention to how the events run, and how things can be done to improve upon them.

For the Richmond SQL Saturdays, we have not been successful in getting people to pre-print and bring their SpeedPASSes with them. In the past, we have approximately 40% of the attendees actually bringing their SpeedPASSes. This means that we end up needing to print the SpeedPASSes for the majority of the attendees.

Other SQL Saturday events have tried a multitude of ways to entice people to pre-print and bring their SpeedPASSes. This usually entails a specific raffle item available for just the people that did bring their SpeedPASSes with them.

Dealing with SpeedPASSes at the SQLSaturday event

In order to print these SpeedPASSes, we need to provide:

  1. Computer
  2. Printer
  3. Internet connection
  4. Admin level access to the SQL Saturday admin portal

What is entailed is that we need to browse to the SQL Saturday admin portal through an internet connection. We then have to go to the registration section, find the person, and download their SpeedPASS. Sometimes we even have to generate the SpeedPASS first. Once downloaded, we can print it out. The final step is for the SpeedPASS sections to be separated – the attendee needs to cut them apart.

What I’ve noticed many SQL Saturday events doing is to purchase a cheap printer for the day, and they raffle it off at the end of the day. This becomes an extra expense for the event. Furthermore, if there is a different raffle item for the enticement to bring their own, this is yet another expense.

What we’ve done in the past

In the past, we have downloaded the SpeedPASSes (which use the Invoice ID guid as the filename), and then used the registrations spreadsheet (which has both the Invoice ID and the persons name) to look up the person, get their Invoice ID, and then find that particular SpeedPASS to print out. Even with making a hyperlink column based on the Invoice ID to be able to open the file by just clicking on the link, this was very time consuming. Of course, this only worked for the folks that had registered prior to downloading the SpeedPASSes – for late registrations, we would still have to generate and download them from the admin portal. This method required at least two people to handle the SpeedPASSes for the attendees that didn’t pre-print theirs.

A couple of years ago (as described in this post) we decided to just pre-print all the SpeedPASSes for all the attendees. This allows us to not have to deal with a long line of people needing to get their SpeedPASS printed out – we only need to print those for attendees that registered after we downloaded and printed them. It still requires a volunteer to handle the late registrations, but they aren’t busy handling SpeedPASSes for a couple of hours.

Another decision we made was to purchase a good quality, high speed color laser printer. This will not be raffled off; instead we will store it and use it next year.

How has this worked out?

Well, the first year, this moved the line from the printer to a cutting station, where everyone used scissors to cut apart their SpeedPASS. We really didn’t have the space for this, so this created some congestion.

The second year, we tried custom printed SpeedPASSes that were printed onto perforated paper. This method had us working until early Saturday morning getting the process working and getting everything printed out.

The printer has reduced our printing costs. We now print almost everything that we need, instead of sending it off to a printing service.

How we did things this year

As things were wrapping up for our event last year, there was an important change made at the SQLSaturday site for dealing with SpeedPASSes. Previously, the admission ticket was sized differently from everything else, which created hassles in cutting and in using perforated paper (and why there were custom-printed SpeedPASSes – so that we could make them fit). However, the change was that all of the labels are now the same size. This means that perforated paper can now be used to print out the SpeedPASS PDF files that are generated at the SQLSaturday site.

Additionally, I was looking for ways to automate some of the manual process of merging the PDF files as described in the previous post, especially with the work necessary in the Excel spreadsheet. The end result is that we now have a new process that we used, and I’m sharing it with everyone to help them out.

The Perforated Paper

We purchased the perforated paper at Select the “Design your own” option, and make the following specifications:

Get the quantity that you need. I recommend creating an account and saving the order. For subsequent orders, you can go to that order and just re-order it – making the process a lot easier.

The PowerShell environment

In order to run the following script, you will need to set up the environment to enable running scripts, and you will need to download and install a module. You will need to run the following from an elevated PowerShell command window (elevated = running as administrator).

The PDF Merging assemblies

I’m using the PDFSharp v1.3.2 assemblies. They can be downloaded from // I used the SourceForge release. Ensure that you get the download. Unzip this folder to a location on your computer.

Getting the SpeedPASS data

There are two things that you will need from the SQLSaturday admin portal. The first is to download the spreadsheet of all of your registrations. Under the “Event Settings” menu, select “Manage Registrations”. On that screen, select the “Export to Excel” option at the top-left of the table. Download this file onto your computer.

Next you need to get all of the SpeedPASS files. Under the “Event Settings” menu, select “Manage SpeedPASS”. At the bottom of this page, click the button to “Create a zip file for all the individual SpeedPASS files”. Download this file, and extract the files to a directory.

The new PowerShell script

The new PowerShell script (and usage instructions) is at the end of this post. Use it to generate your merged SpeedPASS file.

Printing your merged SpeedPASS file

Now just open up the PDF file, and print it to your printer. I used the “Fit to printer margins” option. I recommend that you try a page on regular paper, and hold it up to the perforated paper to ensure that things will print fine before printing out the entire stack.

In conclusion…

This process helps us out with the burden of working with SQLSaturday SpeedPASSes. Once printed, they are separated into a few piles for the volunteers performing the check in of the attendees to easily get the pages necessary. The perforated paper avoids the need to have a cutting station for the attendees to cut the tickets apart. This year, the process went very smoothly. If you are a SQLSaturday organizer, I hope that this will help you out.

In my opinion, the only thing that would be better is to get rid of the SpeedPASS system and do something simplified. It’s just too much work as it currently is.

The new PowerShell Script

This script needs four parameters to run:

  1. The full location of the Registrations Excel spreadsheet file.
  2. The full location of the location of the PDFSharp.dll file.
  3. The directory where you extracted all of the individual SpeedPASS files.
  4. Who all you want to merge SpeedPASSes for. There are three options to use, based on the lunch status: All, Comped, and AllExceptComped. The Comped option allows you to separate the speakers / volunteers from everyone else.

When the script is run, it will create an output file in the parent directory of all of the individual SpeedPASS files. It will be named ‘SpeedPassMerge_” plus the date/time in “yyyymmdd_hh:mm:ss” format, plus the lunch status. It will contain the selected registrations SpeedPASSes (sorted by last name, first name).