Cashier Jobs Are Checking Out

This week, Amazon published a video showing their new shopping technology. They are implementing it in brick-and-mortar convenience stores called Amazon Go starting next year.

For the consumer, it appears to be a very simple and transparent process. It eliminates two very tedious parts of shopping: standing in lineups and paying for purchases. It also eliminates the need for cashiers. 


Retail Learning

The Cashier and Risk

Previous self-checkout systems have been cumbersome and slow. The biggest reason that the cashier is faster is because she doesn't use the same awkward system. She isn't following voice instructions, waiting for each prompt. She has more control because she is in a position of trust and accountability. If she comes up short at the end of her shift, some or all of that money may come out of her paycheque. That's a pretty serious incentive.

In fall of 2001, I took a seasonal job at the LCBO to help pay Toronto rent, only $900/month back then. I had started a graphic design business but work slowed in September and Christmas was coming up. The LCBO paid seasonal workers more than the minimum wage $6.85/hour, I think about $8.50/hour after union dues; I made less than permanent employees but paid dues without benefits as per The Rand Formula. I worked both cash and stock. The location was brand new and extremely busy. 

On a particularly hectic day, one of the $100 bills on the bottom of my till went missing, most likely stuck to the bottom and then falling on the floor when I went to the office. The policy there was the employee paid 50% of amount missing. It was devastating going home after a very long day knowing that I worked most of it for free. 

The General Public

The cashier does not just assume risk. They also endure a great deal of abuse from the general public, sometimes their own co-workers and managers. I was fortunate, selling a premium product in a predominantly affluent neighbourhood. Most people were very friendly and polite. AirMiles customers were often a nuisance but not abusive. That only happened to me once, with an elderly man trying to get an expensive bottle of wine for hardly anything. My manager was excellent and dealt with the situation but I was so shaken that I had to take a break.

This situation is very common, and anyone in retail has their own stories. It is as though some people have no outlet for their miserable attitude so they dump on someone who is captive. I try to be friendly and conversational to cashiers. Their jobs are dehumanizing enough.


The Responsible Consumer

Aside from being fast and convenient, Amazon's automated system refocuses responsibility on the consumer. That appears strange and unnatural compared to modern history. However, when humans lived in smaller groups, it would be unthinkable to steal from the local merchant. In a small community, word of your theft would spread quickly and would lower your social standing. In larger societies, we often rely more on social structures than the individuals within them.

Not All Customer Service Is Equal

Customer service can vary greatly between businesses or even specific individuals at the same business. It all seems pretty similar until you experience excellent service that goes way beyond the norm. Those are situations where you feel a human connection. You get a brief connection with a person you may never see again.

I used to live in a neighbourhood with a popular community grocery store. When faced with threat of closure, the community banded together to ensure it stayed open. Many seniors who shop there expect small talk as part of the transaction, more like what you encounter when shopping in small towns. Atlantic Canada was very much like that.

People crave genuine human interaction and some businesses will put that front and centre. Most will opt for efficiency. I think we'll see less grey area between the two.

Self Checkout

Self-Checkout Disasters

If you have ever used a grocery self-checkout system for more than a few items, you are probably quite familiar with its limitations. The machine gives you ongoing verbal instructions about what to do. You manage to get most of it right but can run into problems, which prompts someone to come over and you suddenly lose all time you intended to save. They're pretty awful and it is a bit surprising that they're so common.


Every month or two, I see a variant of an image showing one of those awful self-checkout solutions common to grocery stores. The caption claims that if we all stand in lines, businesses will need to hire more people. I wish that worked at DriveTest, Ontario's version of the DMV. 

This machine is easy to identify. You interact with it in a physical way. You can use it to make a purchase. It is a real life thing you can see. It is a loom that can be destroyed with a sledgehammer.

Netflix has changed the way people around the world watch television. Netflix has 86 million customers worldwide, employees just 3,500 people and makes about $6.8 billion in revenue. Hooking up rabbit ears won't stop people from watching Stranger Things and House Of Cards.

Will we see people posting like this about accountants and lawyers? Office administrators and sales people? When swaths of middle-managers become irrelevant due to automation, will they only receive sympathy when they're working at precarious cashier jobs?

Will standing in lineups save jobs from automation? When pigs fly.

Automation with Scribus and Python

Desktop publishing applications are able to create print-quality documents. The problem with them is that they often involve fiddling around, or “massaging” as its often referred to as. Combining programming logic with a layout or layout elements can produce a complex document quickly while retaining the the human elements.
In this example, I will use Scribus and Python to generate a document of numbered tickets and corresponding ticket stubs. Dialogs are used to ask the user the starting ticket number and the number of tickets to generate.

Why Use A Desktop Publishing Application

There is a good chance you've needed to use a desktop publishing application but used something else instead. Perhaps you were creating a newsletter, brochure, business cards or a flyer. While using a program like Microsoft Word or Adobe Photoshop can get the job done, they are built as word processors and graphics applications. 
A desktop publishing application is designed to create a printed document from a number of elements. Word processors and graphics applications feed their data into the desktop publishing application. The desktop publishing application can export many formats, from PDFs to press-ready colour separations with bleeds and crop marks.
Two common desktop publishing applications are Adobe InDesign and Microsoft Publisher. These are both suitable solutions but this example focuses on Scribus. Scribus is free, and runs on many platforms. While it lack some of the usability of InDesign, it is very similar to older desktop publishing applications such as QuarkXPress. I was a big fan of QuarkXPress and used AppleScript to help build a product catalogue based on a spreadsheet and a folder of EPS images.


Scribus is an open source desktop publishing application that runs on Winodws, MacOS X, Linux and an assortment of other operating systems. It supports the features you would expect from a commercial product used for production. Colour separations, CMYK and spot colours, ICC profiles, PDF export, pre-flight, text flow and many more professional features are included. Most professional software also provides some way of automating production.


Python is a simple and power programming language. It is often used to create web applications, linux desktop applications and even games. 

Putting Them Together

The Scribus website has a number of example Python scripts that you can use to learn from. Reviewing the example scripts will help you learn the functionality a bit but it can take a bit of work. What I discovered is that it was easier to create elements on the fly and assign the desired properties to them, rather than try to identify the elements on the page.

I've attached a Scribus template that defines the guides for the tickets. Create a single ticket on the master page. Then, duplicate the ticket 3 times horizontally by 2.125", and all four once by 5.5". You can see those values below in x and y. This will produce a master page with unnumbered tickets. Creating additional pages, whether manually or programmatically, will create 8 more tickets per page. Obviously, this layout uses letter size paper and would need to be adjusted for other paper sizes. 

#!/usr/bin/env python

ticketnumdefault = 2014001
ticketcount = int(scribus.valueDialog('Tickets', 'Please enter the number of tickets', '8'))
ticketnum = int(scribus.valueDialog('Ticket Number', 'Please enter the starting ticket number', str(ticketnumdefault)))
print ticketcount
print ticketnum
page = 1
col = 1
row = 1

for i in range(0, ticketcount):
	x = (.125 + (col - 1) * 2.125)
	y = (.25 + (row - 1) * 5.5)
	A = scribus.createText(x, y, 1.875, .25)
	scribus.setText(str(ticketnum), A)
	scribus.setTextAlignment(scribus.ALIGN_CENTERED, A)
	scribus.setTextColor("Grey", A);
	scribus.setFontSize(10, A)
	B = scribus.createText(x, y + 4.875, 1.875, .25)
	scribus.setText(str(ticketnum), B)
	scribus.setTextAlignment(scribus.ALIGN_CENTERED, B)
	scribus.setTextColor("Grey", B);
	scribus.setFontSize(10, B)
	col += 1
	ticketnum +=1
	if col > 4:
		col = 1
		row += 1
	if row > 2 and i < (ticketcount - 1):
		row = 1
		pagecount = scribus.pageCount()