Stuff
On Saturday I lured some friends over for a âstuffing partyâ where we stuffed Kickstarter reward packages and then our faces (this weekend was Canadian Thanksgiving).
We had to stamp, slice, cut, match, stick, stuff, and label packages destined for the USA, Canada, UK, Belgium, Netherlands, Germany, Australia, Japan, New Zealand, Denmark, Norway, Spain, France, Finland, Sweden, Switzerland, Mexico, South Africa, Malta, Italy, Austria, and Israel. There was a lot of stuff.
At peak operation we had three assembly lines working independently. As a factory foreman I feel I was harsh but fair. My workers were paid in chestnut pie and other treats. There were some rumblings of unionization but they never went anywhere.

In the end we stuffed 400 packages. I still have about 250 to go but the party was an enormous help. Thank you to everyone who came out.
Now that I have all the final rewards I can report on the costs (shipping is estimated until next week):
- Buttons x 2000 = $574 = $0.29 each from Six Cent Press
- Embroidered Patches x 1000 = $730 = $0.73 each from Custom Patches
- Certificate card stock x 350 = $40 = $0.11 each from a local print shop
- Gold Seal x 714 = $64 = $0.09 each from a local stationery store
- Lenticular Membership Cards x 1000 = $676 = $0.68 each from Snapily Pro
- Medals x 300 = $1,003 = $3.34 each from Awards Canada
- Fridge magnets x 500 = $1862 = $3.72 each from Fridge Magnets Canada
- Envelopes x 750 = $364 = $0.49 each from ULINE
- Shipping x 658 = (_estimated)Â _$3,626 _=Â _ $5.51 each using Canada Post
Since I ordered in bulk I still have some goodies left over which Iâm expecting to use if/when I reopen the club to new members. The grand totals are:
- Total cost of rewards to send out: $6,755
- Value of leftovers: $2,184
The rewards cost a bit more than my original rough estimate (8% instead of 5% of the total) but theyâre still in a reasonable range and there werenât any huge surprises so Iâm pretty happy.
Here are some things I discovered:
- The post office will give you as many adhesive address labels/customs forms as you want (I asked for 600) and I was able to print onto them with my printer, so I didnât have to address and declare/itemize everything by hand.
- Canada Postâs âLight Packetâ service (which I am using) is not available through their online Electronic Shipping Tools. For some reason itâs only available to eBay customers, or in-store. Luckily my local post office is happy to accept and process all the packages and then charge me for everything when theyâre done.
- It might save you a bit of money to print things on your own printer, but if the card stock youâre using is thick enough that you have to manually feed sheets one at a time to stop them getting jammed, it will be very annoying. And it probably wonât save you much after all because your toner will run out đ
To actually generate the rewards I wrote a bunch of Ruby scripts to process the member database, add my own special cases, generate images & labels and annotate them with text in specific positions. Here are the tools I used:
- Ruby (my favourite scripting language) and its built-in CSV parsing tools
- RMagick (for manipulating images)
- rqrcode_png (for generating QR codes)
In between physical reward prep Iâve been working hard on the Lexicogulator and itâs getting very close. I hope to have it ready in time for you to authenticate your identities using your fancy new membership cards :)
Other tasks have been slower going: eg. banging my head against a wall over what seems to be a pretty widespread iPhone 5 crash bug*. I still havenât found the solution but I think Iâve found a way to mitigate the bug somewhat so Iâm going to patch it for now and keep investigating.
Either way, Iâm looking forward to pushing Spaceteam v1.6 out the door very soon!
*For anyone curious: the bug is a sporadic memory stomp that overwrites a variable during an asynchronous networking call. However the variable has very limited scope (itâs a local variable captured by a dispatch_async block) so I donât know how to set a watchpoint to find out what is changing it. Quite frustrating.
