I was browsing Cloudant questions on Stackoverflow last night and came across a question about how to securely access Cloudant from directly from a browser. Summarising:
How do I securely pass my database credentials to the browser without the user being able to see them?
Over my time at Cloudant I’ve been asked variants of this questions many times. It makes me think that Cloudant and CouchDB’s HTTP interface is a bit of a siren’s call, luring unwary travellers onto security rocks.
One of my most often repeated pieces of performance advice when using CouchDB or Cloudant is to avoid using include_docs=true
in view queries. When you look at the work CouchDB needs to do, the reason for the recommendation becomes obvious.
Apple’s 2016 in review, on the new Macbook Pro lineup:
Apple has built some laptops that nicely handle the needs of the vast majority of its users. It’s easy to look at the volume numbers on what sells and convince yourself that these edge cases aren’t worth building a device for. That seems to be what Apple’s done with these new laptops.
But here’s the problem: sitting in this niche of excluded users are some of Apple’s strongest supporters, the influencers that create word of mouth, and to me, most importantly it includes a significant number of the developers Apple depends on to create it’s Mac and IOS apps.
Couldn’t agree more.
On the surface, Cloudant’s document API appears to be a reasonably simple way to upload JSON data to a key value store and update the JSON data for a particular key. However, the reality is more complicated – isn’t it always? – and understanding what’s happening is important in using Cloudant effectively and becoming an advanced user of the database.
The takeaway point is this: a document in Cloudant is a tree and Cloudant’s document HTTP API is essentially a tree manipulation API.
Google’s Maglev paper describes a high-performance software-based load balancing system. Like many of the systems that Google has described in the literature, Maglev applies commodity hardware and horizontal scaling to a problem in a novel way. These are some notes on the parts most interesting to me.