Glynn Bird

Developer Advocate @ IBM Watson Data Platform

Glynn started his career in the research and development arm of the steel industry, creating sensors and control systems. He then became a web developer for a business directory company building CRM systems, search technology and automated telephony systems. He now works for IBM in the UK as a Developer Advocate.

          `/+........-......` `::`                 
          `/+----...----...``` `:.                 
           -/---::/:::::://:-.  ::                 
              `://///++//:-----o+ `                
          `````.+////////::-::/o- ``               
       `````.```-++///////::/+o:   ```    `        
   ```   ```` ```-/+//////////:`             `     
 ````...````` `.//..--:::::---`.   ````            
 .```...--...:+ooo/::::--..---:+:-...``     ````   
 ..`````....-:::::::////--://:::--..``````` ``.-`` 

Sharing variables between Python & Node.js in Jupyter notebooks

They live apart and speak different languages, but these variables hold common values
Jupyter Python Node.js

Creating partial Cloudant indexes

Filter data before it’s indexed to get the most out of your storage

Detatching Cloudant attachments to Object Storage with Serverless functions

How to build a pipeline to move Cloudant attachments to object storage using IBM Cloud Functions
Cloudant OpenWhisk Object Storage

Using your own domain name with Cloudant

Secure your custom domain using serverless functions on the IBM Cloud
Cloudant OpenWhisk

Creating a Cloudant/Elasticsearch hybrid

Copying data from Cloudant to Elasticsearch using serverless OpenWhisk
Elasticsearch Cloudant OpenWhisk

Mapping the songs of Bruce Springsteen

Plotting geographical references from Springsteen lyrics on a map with Pixiedust
Pixiedust Cloudant Geo

Track your crypto-currency portfolio with serverless functions

Poll an API to get bitcoin pricing and store it in Cloudant using OpenWhisk
OpenWhisk Cloudant Serverless

Notebooks for Spreadsheet Users

Perform spreadsheet-like tasks in notebooks with this handy guide
Spreadsheet Notebook Data

Couchimport revisited

Updates to couchimport to allow multiple documents per line of CSV to be created.
Cloudant CSV ETL

Cloudant Envoy: Serverless Edition

The CouchDB one-database-per-user pattern, now with less infrastructure
Cloudant OpenWhisk Offline-First

Offline First Drum Machine

Offline-First drum machine modelled on a CR78 built with Vue.js and PouchDB
PouchDB Vue.js Offline-First

Building the fastest website in the world

From the Amp project and Google’s Lighthouse, to Offline First and service workers
Static GitHub AMP

Reading the open-source nutrition labels

The open-source projects that underpin various IBM cloud services.

Custom Indexers for Cloudant

Using JavaScript and Redis for problems that don’t fit Cloudant’s indexing engines.
Node.js Serverless Cloudant Redis

Nodebooks - Custom Node.js visualisations in Notebooks (part 3)

Using Node.js modules, adding HTML and images and connecting to Redis databases from a Notebook with Node.js.
Node.js Notebooks Jupyter Redis

Nodebooks - Sharing data between Node.js and Python (part 2)

See how you can use Python and Node.js code in the same Jupyter notebook and share data between the two languages, using Pixiedust to visualise the results
Node.js Notebooks Jupyter

Nodebooks - Node.js in Jupyter notebooks (part 1)

Developers can use notebooks too, for prototyping, data exploration and visualisation of results. If you're a Node.js developer, check out pixiedust_node for Jupyter notebooks
Node.js Notebooks Jupyter

Open Source for Fun, Learning, and Kudos

Reflecting on my career, and advice on getting started
Open-source Career

Custom Cloudant Replication

Use OpenWhisk to replicate a Cloudant database into many sub-databases, ready for replication. Read this worked example, using a bus timetabling display as a demo.
Cloudant OpenWhisk Replication

Serverless Autocomplete

Autocomplete is an excellent use of serverless technology because the autocomplete data set can reside in the same container as your API code. Find out how.
OpenWhisk Auto-complete

Querying Your PouchDB Database with SQL

You can now query your PouchDB databases with SQL using the pouchdb-silverlining plugin.
PouchDB Query SQL

CouchDB Writes: Piecemeal, Bulk, or Batch?

There are several ways of writing data to Cloudant, this article explores the trade-offs between each approach.
Cloudant Node.js

Querying Cloudant with SQL

Cloudant doesn't natively support SQL queries, but now the Silverlining library allows SQL queries to be converted into Mango-JSON which Cloudant does understand.
Cloudant SQL Node.js

Hacking vs. Prototyping vs. Production Code

Exploring the difference between knocking up a quick demo to producing prodction-ready code that others can build on. It uses the example of couchbackup, which went from hack to production this year.
Cloudant Node.js Backup

API Rate Limiting with qrate

Avoid 429 error codes by rate limiting the API calls you make to third-party API services. qrate is a drop-in replacement for async.queue. Find out how easy it is to use.
API Node.js Queue

Choosing a Cloudant Library

This articles the choices you have for Node.js libraries that talk to Apache CouchDB or Cloudant and the levels of abstraction they use.
Cloudant Node.js

Diff your databases

Introducing couchdiff, a tool to tell you the difference between two CouchDB databases.
CouchDB Node.js CLI

PouchDB - the Swiss army knife of databases

How I love PouchDB. Let me count the ways.
PouchDB CouchDB Cloudant Node.js

Serverless, Watson-powered chatbot for hotel

Create a concierge service for your small business using Watson and OpenWhisk
OpenWhisk Cloudant Watson Node.js

Moving data from DocumentDB to Cloudant

Export data from Azure's DocumentDB to CouchDB or Cloudant
DocumentDB Cloudant Node.js CLI

Alexa skills with Cloudant and OpenWhisk

Create your own Amazon Alexa skills using OpenWhisk.
OpenWhisk Cloudant Alexa

Moving DynamoDB data to Cloudant

Export Amazon DynamoDB data to CSV then import to Cloudant
DynamoDB Cloudant Node.js CLI

Analysing Cloudant data in notebooks

Use Runkit to analyse Cloudant data using JavaScript
Notebooks Cloudant Node.js

Scalable online-petition with OpenWhisk

Building scalable serverless systems with OpenWhisk and Cloudant
OpenWhisk Cloudant Node.js Serverless

Installing web apps with Electron

Distribute your web apps as installable applications on Mac, Windows & Linux.
Node.js Cloudant Electron CouchDB

Keeping secrets secret in Node.js

Tips on how to keep your API keys secret in Node.js applications

Dogfight - making retro game multiplayer

Turning a 1983 BBC Micro game into a web-base mulitplayer game.
RethinkDB Node.js Bluemix

silverlining Cloudant library

A very simple Cloudant Node.js library for CRUD, query and aggregation.
Node.js Cloudant

Creating a custom domain for Cloudant

Using Cloudflare in front of Cloudant allows you to have a custom domain, caching and more
Cloudflare Cloudant

Caching Cloudant Requests with cachemachine

Take the load off your back-end API by adding a simple Redis caching layer in front.
Redis Cloudant Cache

Blazingly Fast Geospatial Queries with Redis

Import geospatial data into Redis using Python and make super fast 'find nearest' queries
Redis Geo Python

Enhanced Cloudant Search with Watson

Add structure to your unstructured data with Watson Alchemy APIs for a better search experience
Watson Cloudant Search

Plug into the Cloudant Node.js Library

Now includes plugins for 429 retries, Promises and your custom designs.
Node.js Cloudant


Import CSV data into Cloudant/CouchDB, MongoDB or ElasticSearch
CSV Cloudant MongoDB ElasticSearch

Building Offline-First, Progressive Web Apps

Make web apps that sync offline, are installable on mobile phones and render on all devices.
PWA Cloudant PouchDB Envoy

Scaling Offline First with Envoy

Cloudant Envoy allows offline-first apps to maintain the 1-database-per-user model, while storing all the data in one database on the server side.
Envoy Cloudant Node.js Offline-First

Simple Autocomplete Service

Turn a list of strings into a performant autocomplete API service.
Redis Node.js Bluemix

Chrome Extensions with PouchDB

Create offline-first Google Chrome extensions that can sync with Cloudant/CouchDB.
PouchDB Cloudant JavaScript Chrome

OpenWhisk Microservices

Create microservices simply with OpenWhisk for event-driven computing..
OpenWhisk Cloudant Slack Microservices

Badge Scanner

An offline-first, web-based QR-code scanning app that syncs to Cloudant.
PouchDB Cloudant Node.js Offline-first

Searchable Game of Thrones data

Importing Game of Thrones character data into the Simple Search Service
Search Cloudant Node.js Bluemix

Multiplying Microservices

Adding simple metrics aggregation microservice for metrics collection.
Microservices Node.js Bluemix

Simple CouchDB & Cloudant backup

Three ways to backup your Cloudant or CouchDB databases.
CouchDB Cloudant Node.js Backup

Deploying Metrics Collector

Using Compose and Bluemix to deploy the Metrics Collector Microservice
MongoDB RabbitMQ Node.js Bluemix

Metrics Collector Microservice

Website and app metrics collector as Microservice using Redis/RabbitMQ/Kafka and writing to Cloudant/MongoDB/ElasticSearch
Metrics PubSub Microservices Queue

Metrics Collector Storage Microservice

Storage microservice to write web metrics to Cloudant/MongoDB/ElasticSearch
Metrics PubSub Microservices Queue

PouchDB in a Web Worker

PouchDB gives you offline-first storage in a browser. It can also run in a Web Worker to improve performance..
PouchDB JavaScript Offline-first Cloudant


Simple log sharing utility built with Node.js, Redis and Cloudant.
Logging Cloudant Node.js Bluemix

Simple Search Service

Created a faceted search engine by uploading a CSV file.
Search Cloudant Node.js Bluemix

Introduction to Queues

A look at the differences between the various queue and broker technologies, listed here in order of increasing complexity, resilience, and capacity
Microservices Redis RabbitMQ Kafka

Scaling Web Apps

How to use Message Hub (Kafka) or RabbitMQ to scale up a busy website
Microservices Kafka RabbitMQ


Password vault as a Chrome extension using PouchDB to store the data
Chrome Cloudant JavaScript PouchDB

Command-line tools for CouchDB

Backup, design doc migration, shells and JSON parsers on the command-line.
CouchDB Cloudant CLI

Greenkeeper Interview

Interview with the creators about their Node.js change management tool.
Interview Cloudant Node.js

Export Cloudant to CSS, RSS and iCal

How to turn Cloudant JSON into other data formats directly from Cloudant.
CSV Cloudant JavaScript

Slack to Cloudant

Writing data directly into Cloudant from Slack.
Slack Cloudant

Pro Forma

Offline-first data capture. Collect form data offline and sync later.
Offline-First Cloudant PouchDB


Offline-first e-book reader built with PouchDB & Cloudant.
PouchDB Cloudant Offline-First

Defensive coding in MapReduce

Cloudant allows custom Javascript to be run server-side to generate indexes for MapReduce and Lucene search indexes. This article outlines common pitfalls, their solutions and advocates for automated testing of such code.
Article Cloudant MapReduce

Spreadsheet to search

Turning your structured data into a faceted search engine is easy with Cloudant Search. Build scalable, highly available search tools for your data to give your users the best experience.
Faceting Cloudant Search

Cloudant Query Grows Up

A run-through of the features of Cloudant Query 'text' indexes for performing ad-hoc searches.
Tutorial Cloudant Query


CouchDB/Cloudant backup and restore utility. Backup your databases to text files and restore them, all from the command-line.
CLI CouchDB Cloudant Backup

Replication Guide

A guide to Cloudant/CouchDB replication; one-shot, continuous, sync, filtering and tuning.
CouchDB Cloudant Replication

Design Document Management

A guide to CouchDB/Cloudant design documents, how they work and how to manage change control.
Design Documents Cloudant CouchDB


CouchApp to generate traffic for the Raspberry Pi cluster of Cloudant.
CouchApp CouchDB Raspberry Pi

Raspberry Pi Cluster

A guide to building a distributed database with 13 Raspberry Pis.
Raspberry Pi Cloudant CouchDB


LED flashing utility for Raspberry pi
CLI Node.js Raspberry Pi IoT

House Prices

UK house price stats using MapReduce to index 30m property sales.
DashDB Cloudant Node.js Bluemix

Conflicts - Part Three

The third and final final part of a triology on CouchDB document conflicts, how they work and how to resolve and avoid them
Conflicts Cloudant CouchDB

Conflicts - Part Two

The second part of triology on CouchDB document conflicts, how they work and how to resolve and avoid them
Conflicts Cloudant CouchDB


Anagram solver built with a Cloudant's and a custom MapReduce index.
Bluemix Cloudant MapReduce


An offline-first word procesor built using PouchDB. It can optionally sync with a CouchDB-like database.
Cloudant Offline-First Node.js PouchDB

Conflicts - Part One

The first part of triology on CouchDB document conflicts, how they work and how to resolve and avoid them
Conflicts Cloudant CouchDB


Collaborative cryptic crossword tool built with PouchDB, Redis and Cloudant.
Bluemix Cloudant OAuth PouchDB Redis


Offline-first demo built with Raspberry Pi, CouchDB & Cloudant measuring temperature.
Offline-First Cloudant IoT Bluemix


Client-side programming demo using jQuery & Cloudant. Test your geographical knowledge.
jQuery Cloudant Bluemix


Programmable HTTP proxy that uses CouchDB/Cloudant to store configuration and to provide simple scaling.
Node.js CouchDB Cloudant


Node.js library for interaction with Yubico's API. Enables your Node.js app to authenticate Yubikey tokens for access control.
Yubikey Node.js


A CouchDB design document migration tool that allows you to switch in a new design doc and wait for it build before putting it live.
CLI CouchDB Cloudant Node.js


A simple CSV import for CouchDB/Cloudant. Import structured text into NoSQL from the command line.
CLI CouchDB Cloudant


CouchDB/Cloudant command-line shell. Enables you to interact with CouchDB as if it were a Unix file system.
CLI CouchDB Cloudant Shell


CouchDB/Cloudant command-line helper. Enables you to interact with Cloudant's HTTP API from the terminal without typing domain names, protocols, passwords, content-types etc.
CLI CouchDB Cloudant


A simple key/value cache layer using CouchDB/Cloudant as the storage mechanism. Useful if you have a Cloudant cluster to hand and don't want to maintain Memcache.
Cache Node.js CouchDB Cloudant


Host-it-yourself RSS Reader built with Node.js & Cloudant. Host on Cloud, PC or Raspberry Pi.
RSS CouchDB Cloudant Node.js