A CouchDB user story: Gregory (MadPink) Miller shares his CouchDB Udemy course

We were excited to talk with Gregory (MadPink) Miller recently about his new CouchDB Udemy course (yay for coupon codes!). The course itself helps students learn how to do the following:

  • Install and configure CouchDB
  • Understand differences between CouchDB and traditional databases
  • Create and edit documents and databases
  • Security options for CouchDB
  • Work with design documents and Map/Reduce to query data
  • Work with the Mango Query system to query data
  • Utilize replication and clustering
  • Perform many actions in bulk

After learning of this amazing resource, we were delighted to continue the conversation and learn more about how Gregory first discovered CouchDB and what his experience has been like employing it in applications.

How did you hear about CouchDB, and why did you choose to use it?

My primary programming language is Livecode which is a cross-platform rapid-application development platform. There is built-in support for SQL type databases, and I grudgingly used it, but was never very satisfied with tabular data. There were no other database drivers or libraries, and I was in the market for something new. Livecode has excellent support for REST APIs, so I began searching.

When I first came across CouchDB, I knew nothing about NoSQL databases… or better yet, I knew nothing but the traditional relational database management system (RDBMS) offerings. I was searching for methods of accessing MySQL through a REST API and for converting JSON to a format that could more easily be inserted into a database. Luckily I started asking questions on a forum and someone sent me a link to CouchDB.

I am going to admit that the old logo with the silhouette relaxing on a couch instantly endeared itself to me. I was practically hooked immediately. Once I downloaded and ran CouchDB, I was totally in love with it. I was amazed that I could finally structure my data exactly how I like it. Most of my app data tends to be in hierarchical trees that would take hours to reformat to be able to insert into a table. So if I want to summarize why I choose to use CouchDB it was, “My data, my way.” No more reformatting, no more having to link tables, no more inserting new columns and joins because I thought of one more thing I needed to add. CouchDB gives me a huge amount of flexibility.

Did you have a specific problem that CouchDB solved?

I actually had specific problems for 2 unrelated projects that I had no idea could be solved with this one simple change.

I had created an application for a local shop that allowed customers to browse images and search for specific kinds of work or examples from a particular artist. All data at the time was saved in local files on a single computer. The problem arose when their business expanded and the data needed to be shared among multiple computers. We tried local sharing, and a few other ideas, but none of the solutions were reliable. Dreading the work ahead, I resigned myself to reformatting the data to go into a MySQL database.

Meanwhile, at my full-time job for a research company, I was creating a CATI (computer-assisted telephone interviewing) system from scratch. The traditional model for this type of software is a server/client setup, where the server does all the heavy lifting, keeps track of call histories and makes all the decisions about what to do next. So I was storing data on the server, it was being translated in to JSON and sent to the client. But it was sloooooow and inefficient.

Discovering CouchDB fixed both my issues. At the shop, I set up CouchDB on one machine and without reformatting, I added all the existing data to a database. Less than a half hour later, all of the machines in the shop were accessing it. Back in the office, I ditched the server model entirely, and using CouchDB and a few design documents, made it so that the client computers could make all the decisions necessary to function. Things sped up considerably and again, I could use the data exactly how it was already structured in the program.

What would you say is the top benefit of using CouchDB?

  • Schemaless – I can format my data the way I want, and adding new keys to a record doesn’t require tons of preplanning or refactoring.
  • REST API – I can access my databases easily with any programming language, especially Livecode.
  • The Changes stream – I use Livecode as a backend system for mobile apps, and the _changes feed is great for syncing with local data.

What tools are you using in addition for your infrastructure? Have you discovered anything that pairs well with CouchDB?

Again, my primary programming language Livecode fits very well with CouchDB. I’ve created a library called “Daybed,” available on GitHub, that accesses CouchDB and synchronizes with local files.

What are your future plans with your project? Any cool plans or developments you want to promote?

At this point, I use CouchDB with almost every project I create. I am trying to replace old dated programs at work with new ones that use CouchDB as a backend. For example, we are still using a program based on MS Access that keeps track of all participants in research studies. I am working on a new program to handle all that with CouchDB, that would also integrate with the previously mentioned CATI program.

CouchDB is the backend for an iPad app I have on the Apple app store, with a Mac version coming soon. (Lite version also available)

I’m most excited about my Udemy course on CouchDB, I’m happy to provide a coupon code for CouchDB Blog readers. The course’s curriculum is available for more information.

 

Use cases are a great avenue for sharing useful technical information. Please consider joining the fun! Additionally, if there’s something you’d like to see covered on the CouchDB blog, we would love to accommodate. Email us!

For more about CouchDB visit couchdb.org or follow us on Twitter at @couchdb

CouchDB Weekly News, August 10, 2017

Releases

Releases in the CouchDB Universe

  • cloudant 2.6.0 (Python) – Cloudant / CouchDB Client Library
  • kivik 1.0.4 – Kivik provides a generic interface to CouchDB or CouchDB-like databases for Go and GopherJS.
  • loopback-connector-couchdb2 0.9.0 – The loopback-connector-couchdb2 module is the CouchDB 2.0 connector for the LoopBack framework that supports the advanced functionality originally found only in Cloudant but that is now available in CouchDB.
  • node-couchdb 1.2.0 – node-couchdb package provides an easy way to interact with CouchDB using preferred cache layer.

Opinions and other News in the CouchDB Universe

… and in the PouchDB Universe

CouchDB Use Cases, Questions and Answers

Use Case:

Stack Overflow:

no public answer yet:

PouchDB Use Cases, Questions and Answers

Stack Overflow:

no public answer yet:

For more new questions and answers about CouchDB, see these search results and about PouchDB, see these.

Get involved!

If you want to get into working on CouchDB:

  • We have an infinite number of open contributor positions on CouchDB. Submit a pull request and join the project!
  • Do you want to help us with the work on the new CouchDB website? Get in touch on our new website mailing list and join the website team! – www@couchdb.apache.org
  • The CouchDB advocate marketing programme is just getting started. Join us in CouchDB’s Advocate Hub!
  • CouchDB has a new wiki. Help us move content from the old to the new one!
  • Can you help with Web Design, Development or UX for our Admin Console? No Erlang skills required! – Get in touch with us.
  • Do you want to help moving the CouchDB docs translation forward? We’d love to have you in our L10n team! See our current status and languages we’d like to provide CouchDB docs in on this page. If you’d like to help, don’t hesitate to contact the L10n mailing list on l10n@couchdb.apache.org or ping Andy Wenk (awenkhh on IRC).

We’d be happy to welcome you on board!

Events

Job opportunities for people with CouchDB skills

Also in the news

Submit news to the CouchDB Weekly

Reach out to us with your news suggestions by sending us an email or by contacting us on Twitter @CouchDB.