CouchDB Developer Profile: Michelle Phung

Michelle Phung is a project management committee (or PMC) member of the Apache CouchDB project. Michelle has a bachelor’s in computer engineering from San Jose State University, with a minor in mathematics. Currently she teaches computer science at New York University and has been an active contributor to CouchDB for the past 2 years.

Recently Michelle shared some of her insights about the project with us.

Do you want to talk about your background, or how you got involved in CouchDB?

A few months after I applied for a position at Cloudant, Joan Touzet called me for interviews and then eventually offered me a job, working on the Cloudant Dashboard for IBM. The Cloudant Dashboard is actually a fork of CouchDB’s Fauxton.
Getting the job felt fantastic and really exciting, but at the time I really didn’t know anything about NoSQL or CouchDB, or even what IRC was. All of my database experience was using MySQL and its variations. My team at that time was: Garren Smith, Robert Kowalski, and Ben Keen. Garren and Robert had been in the community for a while by then, and Ben just picks everything up really quick. They all really helped me figure out what open source means, what it meant to work on CouchDB, to be part of the community, and of course, coding.

What areas of the project do you work on?

I work on Fauxton (the admin console), some small parts of the website (the 404 page) and the Fauxton Visual Guide.

The visual guide, Andrea Lee designed it for us when we were at IBM together. I’m so happy she agreed to do it. There are still some aspects of her design I haven’t implemented yet, actually. 🙂 But the site is one of my favorite things.

The 404 page, Paul Davis designed.

What’s a recent development/event/aspect of the project that you’re excited about?

Getting 2.0 out was pretty exciting — everyone was able to rally. There was a lot of build up, and it’s been a few months since then, but it still feels recent in my mind.
More recently than that: a week ago, the legal team from Apache asked us to stop using ReactJS, a JavaScript framework, for “legal reasons.” At first I kinda just sighed, but then as the news started to sink in, I got excited. I felt like it’s an opportunity to restructure the code base, or clean it, or take a look at it in a different way. Although, realistically, we probably won’t be making any big changes, but the possibilities abound!

What do you think are the top three benefits of using CouchDB as a database solution?

1. The filtered replication is quite cool.
2. It’s robust, every node can update itself.
3. You get Fauxton!

What do you look forward to in the future of CouchDB?

I’d like to see new ideas for the next iteration of the UI.

I know we just switched to Fauxton, but front end technology and trends move really quickly and I wonder what will be next in that space. There are a lot of features in CouchDB that aren’t implemented in Fauxton. It’s always interesting to see how concepts take shape and get realized into a visual form.

What advice do you have for someone who just discovered CouchDB?

It was a new way of thinking for me. There is a learning curve, but it’s really interesting. Also, make stuff that will help the people in the world.

 

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

Have a suggestion on what you’d like to hear about next on the CouchDB blog? Email us!

CouchDB Developer Profile: Glynn Bird

The CouchDB community is made up of a unique network of individuals with different backgrounds and skill sets. Glynn Bird hails from Middlesbrough, UK and found his way to CouchDB via research and development for the steel industry, writing CRM systems, and eventually NoSQL. Now Glynn works for IBM Cloud Data Services as a Developer Advocate and Author. He recently shared his experience working with CouchDB with us.

Do you want to talk about your background, or how you got involved in CouchDB?

I started my career in the research and development arm of the steel industry, making sensors and control & instrumentation systems. I then moved into web development for a business directory service. During that time I was looking for a database that could store fairly complex JSON objects and ended up choosing CouchDB after evaluating it against other document stores. CouchDB was the only one that had an HTTP API, a free-text search feature, and the ability to scale up (in terms of data size and traffic) by adding more hardware to the cluster. I ended up choosing Cloudant as a hosted solution.

What areas of the project do you work on?

I’m not a CouchDB “core” developer – I don’t know a word of Erlang! I have worked on the Nano project which is the official Node.js client library for CouchDB. It started life as an open-source project written by Nuno Job who kindly donated it to the Apache Foundation.

Nano is a general purpose library but I’ve also written or worked on other libraries such as Silverlining for new users, nodejs-cloudant which is Nano plus some Cloudant-specific functions and cloudantlite for folks who want to learn the API.

I also enjoy building command-line utilities that interact with CouchDB via the API to provide backup, diff, csv import/export, design document migration, shell access and more.

What’s a recent development/event/aspect of the project that you’re excited about?

CouchDB’s replication engine is one of its major strengths and is going to see a significant iteration shortly. Combining a server-side CouchDB cluster with PouchDB running in a web browser means your web app can operate completely off the grid. This Offline First approach is central to the Progressive Web App movement which aims to allow web applications to compete with native, installable phone/tablet apps.

Building an app the replicates between a local and remote copy of the data often follows a “database per user” pattern. Check out the Hood.ie framework or the Envoy library which can help you get started.

What do you think are the top three benefits of using CouchDB as a database solution?

Schema flexibility  – if your data model is evolving, just modify the form of JSON you save.
Scale – just add servers! It’s not quite that simple, but it’s getting there.
High availability – CouchDB is lots of servers behind a load-balancer. When a node goes offline, there are others with the same data that continue to provide service.
Replication – oops that’s four!

What advice do you have for someone who just discovered CouchDB?

CouchDB doesn’t know about or ask for your database schema, but that doesn’t mean you shouldn’t think about your schema in advance. Consider the questions your application is going to ask of your data and how that can be achieved in a performant way using the querying, indexing and aggregation functions available.

Joan Touzet’s 2013 “Misconceptions about CouchDB” talk is essential viewing for a developer new to CouchDB, especially if they are coming from a relational background. Joan’s presentation pre-dates the “Mango” query language and the other “2.0+” features, but has otherwise aged well.

Other than that, ask the community who are very friendly and willing to answer your questions. Chat on Slack or IRC or raise question tagged couchdb on Stack Overflow.

 

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

Have a suggestion on what you’d like to hear about next on the CouchDB blog? Email us!