SlideShare a Scribd company logo
Using Redis for Kiosk Registration
Command and Control
Ted Knudsen - CTO Smartwaiver
Smartwaiver - Online Digital Waivers
• Founded in April 2012
• Over 20+ million digital waivers created
• Corporate Headquarters in Bend OR (in Old Mill District)
• Customers all over the world but majority are US based.
• Saturday is always the busiest day of the week for waivers.
Background
• Started at Autodesk in 1993 with SAP Enterprise software
• Tealeaf Technology (online user experience) from 2000-2010
• Message Bus (email service) - Cofounder 2010 - 2015
• Smartwaiver (digital waivers) - Dec 2015
• Hobbies: Trail running and climbing
• Favorite Brewery - Crux
My Redis History
• My first NoSQL experience started in Dec 2010 with Redis 2.0
• I have used every major release of Redis over the past 7 years in a
production environment
• With Message Bus, Redis was a critical component in the infrastructure
used to send billions of emails
• Current Production version: 3.2.6 with Redis Enterprise self hosted at
AWS
Smartwaiver Stack
Cloud – AWS
DB – MySQL on RDS
Caching – Redis Enterprise
Queues – Simple Queue Service (SQS)
Storage – S3
Deployment – Ansible
Languages – PHP (5.6) and Python (Ansible)
Waivers at Kiosks
Smartwaiver provides to customers an
app (iOS or Android) to create a kiosk
for signing waivers.
In most cases, the kiosk is an Apple
iPad locked in a case and the users
are directed to sign the waiver before
participating in an event.
We currently have over 4000 active
kiosks creating waivers.
Kiosk 2.0 – Command and Control
Goals for Kiosk 2.0
• Auto registration
• Ability to prepopulate a waiver with a participant’s information from a
remote source
We’ll take a look at how we solved these problems with Redis.
Kiosk 2.0 – Hack Day
I knew I wanted to have Redis at the heart of the communications between
the kiosks and the control center. But I wasn’t sure exactly how to do it
and decided to dedicate a day to explore the possibilities. It was a
productive Hack Day!
Kiosk 2.0 – Kiosk Registration
The registration process was loosely modeled after the process some
SmartTV’s use to link a service to the device.
• The kiosk makes the registration call to the API (/kiosks/xyz-123/register)
• This creates a key which is the registration code and the unique ID of the
device
• Entering the registration code in the kiosk manager on the website then
links the device to the account in the database.
Kiosk Registration
This is the high level view of how the
kiosk registration works.
Kiosk 1
Kiosk Manager
Enters: 453212
/kiosks/xyz-1234/register
KEY: 453212
VALUE: xyz-1234
Expires: 300
Kiosk Registration
After starting the application on the
iPad the user is prompted with the
following screen. They then press on
the “I Have a Smartwaiver Account”
button to create a registration code.
Kiosk Registration
The registration code is presented to
the user which is used in the kiosk
manager screen to link the kiosk to the
account.
In Redis – the registration code is the
key and has a 5 minute expiration
This simple solution requires no
backend “cleanup” for missed
registrations.
And another added benefit is the kiosk
never requires any data input.
Kiosk Registration
In the kiosk manager, the user enters
the registration code.
In the backend, the API checks for the
key with the registration code in Redis
and if found it then links the device to
the account in the database with the
device ID.
Kiosk 2.0 – Kiosk “Commands” in Redis
The second goal was to create a way to send commands to a kiosk to control
its behavior.
• Each kiosk checks on a timer for a “command”.
• A “command” is just a hash key with an expiration of 5 minutes. The key
is the device ID of the kiosk.
• The hash contains the action and JSON data payload.
Kiosk 2.0 – Pre-Populating a Waiver
The first command we have implemented is to pre-populate a waiver with
participant information.
Pre-populating a waiver with a participant’s information speeds up the
process of completing a waiver. Making the process as easy as possible is a
goal for Smartwaiver.
Kiosk Control
This is the high level view of how the
kiosks communicate back to Redis for
a command.
Load Balancer – ELB
API Server – EC2 Instance
Redis
Enterprise
Kiosk 1
Action: autofill
Payload: JSON
Kiosk 2 Kiosk 3
Kiosks check for a
command
Load Balancer
API Server
Kiosk Control
To make it easy to send participant
information to a kiosk we created a
Chrome Extension that can be used to
enter the information from just about
any source (online CRM, registration
form, etc) with some simple
copy/paste operations.
Kiosk Control
The extension shows which kiosk is
available for receiving a command.
Kiosk availability is determined via
data from Redis. Each kiosk updates
its status (when online) via the API on
a regular basis.
Kiosk Control
After confirming the data the
information is stored in Redis as a
command with the data from the
participant.
The kiosk from Step 3 will read the
command and start the waiver process
for that participant.
Demo with a Kiosk
Smartwaiver and Redis
Of the 4000 active Kiosks, over 2000 have now
updated to the new version 2.0
We will be releasing the Chrome extension in
June and we will see what the adoption rate is
over the summer (which is the busiest time of
the year for us).
I always use Redis in my development tool kit
and while there are always many ways to solve
a problem I have found that using Redis is
usually the cleanest and easiest.
Thanks!
Contact us:
Smartwaiver
626 NW Arizona Ave Ste #2
Bend, OR 97702
ted@smartwaiver.com
www.smartwaiver.com

More Related Content

PDF
RedisConf17 - Explosion of Data at the Edge in Equinix
PPTX
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
PDF
RedisConf17 - Real-time Intelligence with Redis-ML and Apache Spark
PDF
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
PDF
RedisConf18 - Transforming Vulnerability Telemetry with Redis Enterprise
PDF
RedisConf18 - Redis on Google Cloud Platform
PPTX
Redis TimeSeries
PDF
Novinky v Oracle Database 18c
RedisConf17 - Explosion of Data at the Edge in Equinix
RedisConf17 - Roblox - How Roblox Keeps Millions of Users Up to Date with Red...
RedisConf17 - Real-time Intelligence with Redis-ML and Apache Spark
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
RedisConf18 - Transforming Vulnerability Telemetry with Redis Enterprise
RedisConf18 - Redis on Google Cloud Platform
Redis TimeSeries
Novinky v Oracle Database 18c

What's hot (20)

PDF
RedisConf17 - Amadeus - Redis-Cluster operator
PPTX
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
PPTX
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
PDF
Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...
PDF
RedisConf17 - Redis Powers Next-gen Ambient Intelligence Platform
PDF
Redis Tames The Caching Herd: Jon Hyman
PDF
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
PDF
Building Microservices with Apache Kafka by Colin McCabe
PDF
Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...
PDF
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
PDF
Low-latency real-time data processing at giga-scale with Kafka | John DesJard...
PPTX
Redis Streams for Event-Driven Microservices
PDF
Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...
PDF
Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...
PDF
5 lessons learned for successful migration to Confluent cloud | Natan Silinit...
PDF
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
PDF
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
PDF
Stream Processing with Apache Kafka and .NET
PPTX
Navigating the obdervability storm with Kafka | Jose Manuel Cristobal, Adidas
PPTX
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
RedisConf17 - Amadeus - Redis-Cluster operator
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...
RedisConf17 - Redis Powers Next-gen Ambient Intelligence Platform
Redis Tames The Caching Herd: Jon Hyman
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
Building Microservices with Apache Kafka by Colin McCabe
Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
Low-latency real-time data processing at giga-scale with Kafka | John DesJard...
Redis Streams for Event-Driven Microservices
Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...
Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...
5 lessons learned for successful migration to Confluent cloud | Natan Silinit...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
Stream Processing with Apache Kafka and .NET
Navigating the obdervability storm with Kafka | Jose Manuel Cristobal, Adidas
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
Ad

Similar to RedisConf17 - Smartwaiver - Using Redis for Kiosk Registration Command and Control (20)

PDF
Design - Start Your API Journey Today
PPTX
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
PPTX
Get Ready for Coinbase Node
PPTX
Coinbase Node
PDF
DACHNUG50 HCL Volt MX Go.pdf
PPTX
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
PDF
vinay-mittal-new
PPT
z Technical Summit Track 3 Session 4 Developing mobilefirst app for z
PPTX
Modern EPOS System for Retail business
PPTX
Docker12 factor
PDF
Design - Start Your API Journey Today
PDF
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
PDF
Design - Start Your API Journey Today
PDF
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
PPTX
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
PPTX
Bina systems Cloud Applications
PDF
Delivering New Digital Experiences Fast - Introducing Choreo
PDF
Octo API-days 2015
PDF
Top 7 wrong common beliefs about Enterprise API implementation
PDF
Making Blockchain Real for Business at the "z Systems Agile Enterprise Develo...
Design - Start Your API Journey Today
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
Get Ready for Coinbase Node
Coinbase Node
DACHNUG50 HCL Volt MX Go.pdf
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
vinay-mittal-new
z Technical Summit Track 3 Session 4 Developing mobilefirst app for z
Modern EPOS System for Retail business
Docker12 factor
Design - Start Your API Journey Today
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
Design - Start Your API Journey Today
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
Bina systems Cloud Applications
Delivering New Digital Experiences Fast - Introducing Choreo
Octo API-days 2015
Top 7 wrong common beliefs about Enterprise API implementation
Making Blockchain Real for Business at the "z Systems Agile Enterprise Develo...
Ad

More from Redis Labs (20)

PPTX
Redis Day Bangalore 2020 - Session state caching with redis
PPTX
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
PPTX
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
PPTX
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
PPTX
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
PPTX
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
PPTX
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
PPTX
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
PPTX
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
PPTX
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
PPTX
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
PPTX
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
PPTX
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
PPTX
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
PPTX
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
PPTX
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
PDF
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
PPTX
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
PPTX
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
PPTX
Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...
Redis Day Bangalore 2020 - Session state caching with redis
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
cuic standard and advanced reporting.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Machine learning based COVID-19 study performance prediction
PDF
Empathic Computing: Creating Shared Understanding
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
20250228 LYD VKU AI Blended-Learning.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Spectroscopy.pptx food analysis technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Review of recent advances in non-invasive hemoglobin estimation
cuic standard and advanced reporting.pdf
Network Security Unit 5.pdf for BCA BBA.
The Rise and Fall of 3GPP – Time for a Sabbatical?
Dropbox Q2 2025 Financial Results & Investor Presentation
The AUB Centre for AI in Media Proposal.docx
Diabetes mellitus diagnosis method based random forest with bat algorithm
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Electronic commerce courselecture one. Pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Encapsulation_ Review paper, used for researhc scholars
Machine learning based COVID-19 study performance prediction
Empathic Computing: Creating Shared Understanding
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Assigned Numbers - 2025 - Bluetooth® Document

RedisConf17 - Smartwaiver - Using Redis for Kiosk Registration Command and Control

  • 1. Using Redis for Kiosk Registration Command and Control Ted Knudsen - CTO Smartwaiver
  • 2. Smartwaiver - Online Digital Waivers • Founded in April 2012 • Over 20+ million digital waivers created • Corporate Headquarters in Bend OR (in Old Mill District) • Customers all over the world but majority are US based. • Saturday is always the busiest day of the week for waivers.
  • 3. Background • Started at Autodesk in 1993 with SAP Enterprise software • Tealeaf Technology (online user experience) from 2000-2010 • Message Bus (email service) - Cofounder 2010 - 2015 • Smartwaiver (digital waivers) - Dec 2015 • Hobbies: Trail running and climbing • Favorite Brewery - Crux
  • 4. My Redis History • My first NoSQL experience started in Dec 2010 with Redis 2.0 • I have used every major release of Redis over the past 7 years in a production environment • With Message Bus, Redis was a critical component in the infrastructure used to send billions of emails • Current Production version: 3.2.6 with Redis Enterprise self hosted at AWS
  • 5. Smartwaiver Stack Cloud – AWS DB – MySQL on RDS Caching – Redis Enterprise Queues – Simple Queue Service (SQS) Storage – S3 Deployment – Ansible Languages – PHP (5.6) and Python (Ansible)
  • 6. Waivers at Kiosks Smartwaiver provides to customers an app (iOS or Android) to create a kiosk for signing waivers. In most cases, the kiosk is an Apple iPad locked in a case and the users are directed to sign the waiver before participating in an event. We currently have over 4000 active kiosks creating waivers.
  • 7. Kiosk 2.0 – Command and Control Goals for Kiosk 2.0 • Auto registration • Ability to prepopulate a waiver with a participant’s information from a remote source We’ll take a look at how we solved these problems with Redis.
  • 8. Kiosk 2.0 – Hack Day I knew I wanted to have Redis at the heart of the communications between the kiosks and the control center. But I wasn’t sure exactly how to do it and decided to dedicate a day to explore the possibilities. It was a productive Hack Day!
  • 9. Kiosk 2.0 – Kiosk Registration The registration process was loosely modeled after the process some SmartTV’s use to link a service to the device. • The kiosk makes the registration call to the API (/kiosks/xyz-123/register) • This creates a key which is the registration code and the unique ID of the device • Entering the registration code in the kiosk manager on the website then links the device to the account in the database.
  • 10. Kiosk Registration This is the high level view of how the kiosk registration works. Kiosk 1 Kiosk Manager Enters: 453212 /kiosks/xyz-1234/register KEY: 453212 VALUE: xyz-1234 Expires: 300
  • 11. Kiosk Registration After starting the application on the iPad the user is prompted with the following screen. They then press on the “I Have a Smartwaiver Account” button to create a registration code.
  • 12. Kiosk Registration The registration code is presented to the user which is used in the kiosk manager screen to link the kiosk to the account. In Redis – the registration code is the key and has a 5 minute expiration This simple solution requires no backend “cleanup” for missed registrations. And another added benefit is the kiosk never requires any data input.
  • 13. Kiosk Registration In the kiosk manager, the user enters the registration code. In the backend, the API checks for the key with the registration code in Redis and if found it then links the device to the account in the database with the device ID.
  • 14. Kiosk 2.0 – Kiosk “Commands” in Redis The second goal was to create a way to send commands to a kiosk to control its behavior. • Each kiosk checks on a timer for a “command”. • A “command” is just a hash key with an expiration of 5 minutes. The key is the device ID of the kiosk. • The hash contains the action and JSON data payload.
  • 15. Kiosk 2.0 – Pre-Populating a Waiver The first command we have implemented is to pre-populate a waiver with participant information. Pre-populating a waiver with a participant’s information speeds up the process of completing a waiver. Making the process as easy as possible is a goal for Smartwaiver.
  • 16. Kiosk Control This is the high level view of how the kiosks communicate back to Redis for a command. Load Balancer – ELB API Server – EC2 Instance Redis Enterprise Kiosk 1 Action: autofill Payload: JSON Kiosk 2 Kiosk 3 Kiosks check for a command Load Balancer API Server
  • 17. Kiosk Control To make it easy to send participant information to a kiosk we created a Chrome Extension that can be used to enter the information from just about any source (online CRM, registration form, etc) with some simple copy/paste operations.
  • 18. Kiosk Control The extension shows which kiosk is available for receiving a command. Kiosk availability is determined via data from Redis. Each kiosk updates its status (when online) via the API on a regular basis.
  • 19. Kiosk Control After confirming the data the information is stored in Redis as a command with the data from the participant. The kiosk from Step 3 will read the command and start the waiver process for that participant.
  • 20. Demo with a Kiosk
  • 21. Smartwaiver and Redis Of the 4000 active Kiosks, over 2000 have now updated to the new version 2.0 We will be releasing the Chrome extension in June and we will see what the adoption rate is over the summer (which is the busiest time of the year for us). I always use Redis in my development tool kit and while there are always many ways to solve a problem I have found that using Redis is usually the cleanest and easiest.
  • 22. Thanks! Contact us: Smartwaiver 626 NW Arizona Ave Ste #2 Bend, OR 97702 ted@smartwaiver.com www.smartwaiver.com