Return-Path: X-Original-To: apmail-couchdb-marketing-archive@minotaur.apache.org Delivered-To: apmail-couchdb-marketing-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 70E8719EF9 for ; Fri, 22 Apr 2016 02:32:31 +0000 (UTC) Received: (qmail 98997 invoked by uid 500); 22 Apr 2016 02:32:31 -0000 Delivered-To: apmail-couchdb-marketing-archive@couchdb.apache.org Received: (qmail 98957 invoked by uid 500); 22 Apr 2016 02:32:31 -0000 Mailing-List: contact marketing-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: marketing@couchdb.apache.org Delivered-To: mailing list marketing@couchdb.apache.org Received: (qmail 98945 invoked by uid 99); 22 Apr 2016 02:32:30 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Apr 2016 02:32:30 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 334E3180517 for ; Fri, 22 Apr 2016 02:32:30 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.308 X-Spam-Level: * X-Spam-Status: No, score=1.308 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=kowalski-gd.20150623.gappssmtp.com Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id D1q27lPapvyc for ; Fri, 22 Apr 2016 02:32:27 +0000 (UTC) Received: from mail-vk0-f47.google.com (mail-vk0-f47.google.com [209.85.213.47]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 630275F2F2 for ; Fri, 22 Apr 2016 02:32:27 +0000 (UTC) Received: by mail-vk0-f47.google.com with SMTP id n67so105120786vkf.3 for ; Thu, 21 Apr 2016 19:32:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kowalski-gd.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to; bh=YDNVIc/iTq4s1AbVL7z5uJJStlQLdYP5PtsyJscDmtc=; b=QIAqJhuo+UY7AOVHKJ8J1oFXCNVvPQSEWC5r245nBnFZmqfB2JJ+/WTwhpbESQcOgv FUjuyeIvO0PyORAaJN0WzXPi3QOccGO+1GxypgGaIH7bWlLh+9jNL+B67WFWg9ZQsXvY bpUrofJyHm1zVYhdfk9UgeYqny+PcsHpF+nfgjwnod9u9RIQy5K/6TzwrPWBHZRY9QG3 /TwWSN0s2opeGaJAXIE/7rVX/u3eJzI+Oo4QE8HdHtqJQZxdROxF/tCTMSgSE0PKExSy HLkPc6ZuA/EXvEw9CJIA1oNFWisNqXsSt3jQD/UNiJI97yF6iotkP2pP9ZJghPE89n7X Nd1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to; bh=YDNVIc/iTq4s1AbVL7z5uJJStlQLdYP5PtsyJscDmtc=; b=OX4YsUPm5NQxDRSPCFC9c2RIcprGzmboSxZLs9LyT4PLR1ikwuDZAvoh2k0LVFAdbr oEwjS16MZz0Yvp3ohL7n6sMl6LXmec2T3F5itl9LEHfmdb8Jhds2gp7Yvt1SvULGfo0J cOBHXDQ+4lP2RSouJqqvD7CCWQgkhHebrR4PvCH5slJCoonhIv/hW6QmKPuQn4F4b63H L/wQem7hC2d7VnUCPOu+blTtK1EF/PjOwC0biBttiWk4r3OjzcCMOxw1WUmyi1qXhIwL Uw7sRpRWclQVbIkqryWbcmL6ErTO2B8v6nAW/MdZSXxDnaoHSygr+C2HQtDQ6AUH+RKh BDfw== X-Gm-Message-State: AOPr4FVcRnwvYMzVUK1yhuyZNXGuSSSzOqAEHvGewzWTO9cza2ZaWy6Bx1Vnd+xuACDlzX4EVsKISb5ROn5IzA== MIME-Version: 1.0 X-Received: by 10.31.142.203 with SMTP id q194mr9241975vkd.95.1461292346617; Thu, 21 Apr 2016 19:32:26 -0700 (PDT) Received: by 10.31.170.200 with HTTP; Thu, 21 Apr 2016 19:32:26 -0700 (PDT) X-Originating-IP: [62.214.5.194] In-Reply-To: References: <75A2E329-7EF5-464A-AC72-A26F30A62679@apache.org> Date: Fri, 22 Apr 2016 04:32:26 +0200 Message-ID: Subject: Re: Blogpost: "Databases aren't boring" From: Robert Kowalski To: marketing@couchdb.apache.org Content-Type: multipart/alternative; boundary=001a1143a7283bd0d8053109a334 --001a1143a7283bd0d8053109a334 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable forgot to add the images: https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-n= ot-boring/1-to-1.png https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-n= ot-boring/diff.png https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-n= ot-boring/first-prototype.png On Fri, Apr 22, 2016 at 12:10 AM, Robert Kowalski wrote: > Hey there! > > Here is the latest version, thanks to the awesome help of Jenn! > > I am leaving for Cuba in 6 hours, it would be cool if someone could > publish it. The feature is already merged. Please decide how you want to > handle the video (embedded youtube, gif or something else). > > Thank you, > Robert > > > Original video: > > https://dl.dropboxusercontent.com/u/1809262/rev-browse.mov > > gif: https://dl.dropboxusercontent.com/u/1809262/revision-browser.gif > > Article: > > --- > > # Databases aren=E2=80=99t boring > > It sounds super boring, sometimes scary. Let=E2=80=99s talk about databas= e > development, data management, and database administration. Sounds boring, > right? I promise: it isn=E2=80=99t. I mainly develop for [Fauxton]( > https://github.com/apache/couchdb-fauxton), the UI for CouchDB we=E2=80= =99ll > release with 2.0. We are developing, designing, and concepting a UI for > administration and data management. > > When I tell fellow developers and designers that I develop a database, > many of them look scared. Sometimes they also look bored, because people > rarely imagine data management is exciting. Some of them might think of > boring database courses in college. In this article we=E2=80=99ll discove= r what > makes database development so interesting and exciting. > > One of our main objectives is to make data management as frictionless as > possible for the user. How can we lower the entry barrier for new users, > but still support our power users? How can we display data in an accurate= , > detailed way, but still have a high density of information? How do we > measure our success without traditional systems to measure engagement, li= ke > tracking? It is important to remember--we can be successful only if our > users are successful. > > A recent example where we want to make our users more successful is > [eventual consistency and MVCC]( > http://guide.couchdb.org/draft/consistency.html). Large numbers of > conflicts can be problematic; they will slow down the database and take u= p > a lot of space. Some of the Fauxton developers recently had a hackweek. A= s > part of one project we asked ourselves: =E2=80=9CHow can we make conflict= detection > and resolution a first class citizen in CouchDB and make it as frictionle= ss > as possible?=E2=80=9D > > Our goals: > > - Conflict detection should be as easy as possible > - Make conflict resolution as easy as possible and provide necessary > tooling > - Help to avoid situations where a large number of conflicts become > problematic > - Provide better education and tutorials for conflict resolution, directl= y > in the dashboard > > We focused mainly on conflict resolution as our time was limited to one > week. A document with conflicts has different revisions, and Couch elects > one as the =E2=80=9Cwinning revision.=E2=80=9D How to choose the right re= vision and get rid > of the other ones? Our project, codenamed =E2=80=9CThe Revision Browser,= =E2=80=9D was born. > We wanted to provide a way to easily diff revisions, and inspect the > revision tree. We also wanted an easy way to delete conflicting revisions > and select other revisions as a winner. The first, ugly prototype had two > dropdowns: > > ![The first prototype](first-prototype.png) > > We are a distributed team, so use video calls for evaluating the > iterations. We demo the current, incomplete work. Whenever possible, we > test ad-hoc changes directly in the browser during the session. One > addition that came up during our demos was to provide another view mode > next to the =E2=80=9Cdiff mode=E2=80=9D. It shows both conflicting docume= nts next to each > other: > > ![Both conflicting documents next to each other](1-to-1.png) > > After the hackweek we had some work left to bring the project over the > finish line. I am happy to announce that we have a minimum viable product > now: > > ![The diffing for both conflicting documents](diff.png) > > The feature was created in close collaboration with other developers and > UX researchers. [Here is a video showing the new features in action]( > https://www.youtube.com/watch?v=3D3G8d7PzMVsk): > > > > > > > Data management is also interesting from the technical point of view. How > can we display a lot of documents, but keep the application snappy? > > The revision browser is written in React. The code itself is pretty > concise as we recently added ES 2015 / ES6 support to Fauxton. Thanks to > our test coverage, we can refactor large parts of Fauxton. Recently, we > changed the whole infrastructure underneath without much trouble. > Interested in the code? It is available at: > https://github.com/apache/couchdb-fauxton/pull/670 > > > > ## Conclusion > > > Despite its image, data management and database administration IS > interesting. We face hard problems from a product point of view. They are > challenging and it is fun to solve them in a team including developers, U= X > researchers, and designers. We also face interesting technical problems a= nd > solve them with the best technology available. > > > ## About the author > > Robert Kowalski is a passionate software engineer and CouchDB contributor= . > He enjoys traveling and recently released a book about command line tools > in Node.js, [The CLI Book](http://theclibook.com). > > > > On Thu, Apr 21, 2016 at 12:50 AM, Robert Kowalski wrote= : > >> here is the original source of the video (maybe to create better gifs i >> my does not suffice?): >> https://dl.dropboxusercontent.com/u/1809262/rev-browse.mov >> >> On Thu, Apr 21, 2016 at 12:48 AM, Robert Kowalski >> wrote: >> >>> here is the gif: >>> https://dl.dropboxusercontent.com/u/1809262/revision-browser.gif >>> >>> On Tue, Apr 19, 2016 at 8:56 PM, Jan Lehnardt wrote: >>> >>>> ooooh, I really like this, the feature and the writeup! Thanks for >>>> offering to post >>>> it on the CouchDB blog. I=E2=80=99d be very much in favour! >>>> >>>> I=E2=80=99d suggest we put this in a google doc and give it an editori= al >>>> once-over (looking at Jenn with puppy-eyes ^^), but then this is ready= to >>>> go. >>>> >>>> The video could maybe be a gif, so we can tweet/share it more easily, >>>> if you are up for converting it (or anyone, really). >>>> >>>> Great job! :) >>>> >>>> Best >>>> Jan >>>> -- >>>> >>>> >>>> >>>> > On 19 Apr 2016, at 19:39, Robert Kowalski wrote: >>>> > >>>> > Hi there, >>>> > >>>> > I went into a hip cafe this weekend, drank espressi and wrote a >>>> blogpost! >>>> > >>>> > The draft is at >>>> > >>>> https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-= are-not-boring/databases-are-not-boring.md >>>> > >>>> > If you want we can publish it on the CouchDB blog, but I am also hap= py >>>> > to publish it somewhere else. >>>> > >>>> > btw.: seems GitHub does not support embedded videos in markdown, so = I >>>> > linked it for the draft. >>>> >>>> -- >>>> Professional Support for Apache CouchDB: >>>> https://neighbourhood.ie/couchdb-support/ >>>> >>>> >>> >> > --001a1143a7283bd0d8053109a334--