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 A5BA3199BC for ; Tue, 26 Apr 2016 08:06:05 +0000 (UTC) Received: (qmail 70787 invoked by uid 500); 26 Apr 2016 08:06:05 -0000 Delivered-To: apmail-couchdb-marketing-archive@couchdb.apache.org Received: (qmail 70746 invoked by uid 500); 26 Apr 2016 08:06:05 -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 70735 invoked by uid 99); 26 Apr 2016 08:06:05 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Apr 2016 08:06:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 0E207C0715 for ; Tue, 26 Apr 2016 08:06:05 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1 X-Spam-Level: * X-Spam-Status: No, score=1 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id REd_bjwT-a15 for ; Tue, 26 Apr 2016 08:06:02 +0000 (UTC) Received: from nms02.nmmn.com (nms02.nmmn.com [188.94.27.146]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 8F60F5F201 for ; Tue, 26 Apr 2016 08:06:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by nms02.nmmn.com (Postfix) with ESMTP id 70096546DF2 for ; Tue, 26 Apr 2016 10:05:55 +0200 (CEST) Received: from nms02.nmmn.com ([127.0.0.1]) by localhost (nms02.nmmn.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EbWZvL0+vgzT for ; Tue, 26 Apr 2016 10:05:52 +0200 (CEST) Received: from [192.168.0.105] (ip1f11946f.dynamic.kabel-deutschland.de [31.17.148.111]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by nms02.nmmn.com (Postfix) with ESMTPSA id F024E546DF1 for ; Tue, 26 Apr 2016 10:05:51 +0200 (CEST) Content-Type: multipart/signed; boundary="Apple-Mail=_7A6F31FA-7135-4E8E-B5C8-63F14DF3104E"; protocol="application/pgp-signature"; micalg=pgp-sha256 Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Subject: Re: Blogpost: "Databases aren't boring" X-Pgp-Agent: GPGMail 2.6b2 From: Andy Wenk In-Reply-To: <113E1784-4ED8-4C0E-85BD-2912A675E675@apache.org> Date: Tue, 26 Apr 2016 10:05:51 +0200 Message-Id: <371C2B80-DF1C-42D0-B609-3762A3B3AF56@apache.org> References: <75A2E329-7EF5-464A-AC72-A26F30A62679@apache.org> <70076AE3-50A2-4B43-A0C3-7757BCDD91D1@apache.org> <6DBD66FF-2F28-41AB-9DA9-84DF850BFDEF@apache.org> <113E1784-4ED8-4C0E-85BD-2912A675E675@apache.org> To: marketing@couchdb.apache.org X-Mailer: Apple Mail (2.3124) --Apple-Mail=_7A6F31FA-7135-4E8E-B5C8-63F14DF3104E Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Dear Marketing-Team, the blog post is now online: = https://blog.couchdb.org/2016/04/26/databases-arent-boring/ Please spread the word =E2=80=A6 All the best Andy -- Andy Wenk Hamburg - Germany RockIt! GPG public key: = https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0x4F1D0C59BC90917D > On 23 Apr 2016, at 16:07, Andy Wenk wrote: >=20 > ok fine. I=E2=80=99ll press the button Tuesday 10:00 CEST >=20 > Cheers >=20 > Andy > -- > Andy Wenk > Hamburg - Germany > RockIt! >=20 > GPG public key: = https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0x4F1D0C59BC90917D >=20 >=20 >=20 >=20 >> On 22 Apr 2016, at 17:35, Jan Lehnardt wrote: >>=20 >> Great job everyone, this looks fab! :) >>=20 >> I=E2=80=99d say lets keep this for Tuesday late morning EU hours, = Fridays are notoriously slow. >>=20 >> If anyone else has another good idea, I won=E2=80=99t be against it = :) >>=20 >> Best >> Jan >> -- >>=20 >>> On 22 Apr 2016, at 10:53, Andy Wenk wrote: >>>=20 >>> Here is the preview: = https://couchdbblog.wordpress.com/?p=3D973&preview=3Dtrue >>>=20 >>> Not sure if you can see it Robert. Please someone else have a quick = check. We can post it then? The question is when? >>>=20 >>> All the best >>>=20 >>> Andy >>> -- >>> Andy Wenk >>> Hamburg - Germany >>> RockIt! >>>=20 >>> GPG public key: = https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0x4F1D0C59BC90917D >>>=20 >>>=20 >>>=20 >>>=20 >>>> On 22 Apr 2016, at 10:47, Andy Wenk wrote: >>>>=20 >>>> I am creating a draft at the moment =E2=80=A6 will be back in 30 = Minutes with a link >>>>=20 >>>> Cheers >>>>=20 >>>> Andy >>>> -- >>>> Andy Wenk >>>> Hamburg - Germany >>>> RockIt! >>>>=20 >>>> GPG public key: = https://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0x4F1D0C59BC90917D >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>> On 22 Apr 2016, at 04:32, Robert Kowalski wrote: >>>>>=20 >>>>> forgot to add the images: >>>>>=20 >>>>> = https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-= not-boring/1-to-1.png >>>>> = https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-= not-boring/diff.png >>>>> = https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-= not-boring/first-prototype.png >>>>>=20 >>>>> On Fri, Apr 22, 2016 at 12:10 AM, Robert Kowalski = wrote: >>>>>=20 >>>>>> Hey there! >>>>>>=20 >>>>>> Here is the latest version, thanks to the awesome help of Jenn! >>>>>>=20 >>>>>> 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). >>>>>>=20 >>>>>> Thank you, >>>>>> Robert >>>>>>=20 >>>>>>=20 >>>>>> Original video: >>>>>>=20 >>>>>> https://dl.dropboxusercontent.com/u/1809262/rev-browse.mov >>>>>>=20 >>>>>> gif: = https://dl.dropboxusercontent.com/u/1809262/revision-browser.gif >>>>>>=20 >>>>>> Article: >>>>>>=20 >>>>>> --- >>>>>>=20 >>>>>> # Databases aren=E2=80=99t boring >>>>>>=20 >>>>>> It sounds super boring, sometimes scary. Let=E2=80=99s talk about = database >>>>>> 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. >>>>>>=20 >>>>>> 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 = discover what >>>>>> makes database development so interesting and exciting. >>>>>>=20 >>>>>> 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, like >>>>>> tracking? It is important to remember--we can be successful only = if our >>>>>> users are successful. >>>>>>=20 >>>>>> 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 up >>>>>> a lot of space. Some of the Fauxton developers recently had a = hackweek. As >>>>>> 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 = frictionless >>>>>> as possible?=E2=80=9D >>>>>>=20 >>>>>> Our goals: >>>>>>=20 >>>>>> - 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, = directly >>>>>> in the dashboard >>>>>>=20 >>>>>> 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 revision 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: >>>>>>=20 >>>>>> ![The first prototype](first-prototype.png) >>>>>>=20 >>>>>> 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 documents next to each >>>>>> other: >>>>>>=20 >>>>>> ![Both conflicting documents next to each other](1-to-1.png) >>>>>>=20 >>>>>> 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: >>>>>>=20 >>>>>> ![The diffing for both conflicting documents](diff.png) >>>>>>=20 >>>>>> 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): >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> >>>>>>=20 >>>>>>=20 >>>>>> Data management is also interesting from the technical point of = view. How >>>>>> can we display a lot of documents, but keep the application = snappy? >>>>>>=20 >>>>>> 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 >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> ## Conclusion >>>>>>=20 >>>>>>=20 >>>>>> 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, UX >>>>>> researchers, and designers. We also face interesting technical = problems and >>>>>> solve them with the best technology available. >>>>>>=20 >>>>>>=20 >>>>>> ## About the author >>>>>>=20 >>>>>> 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). >>>>>>=20 >>>>>>=20 >>>>>>=20 >>>>>> On Thu, Apr 21, 2016 at 12:50 AM, Robert Kowalski = wrote: >>>>>>=20 >>>>>>> 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 >>>>>>>=20 >>>>>>> On Thu, Apr 21, 2016 at 12:48 AM, Robert Kowalski = >>>>>>> wrote: >>>>>>>=20 >>>>>>>> here is the gif: >>>>>>>> = https://dl.dropboxusercontent.com/u/1809262/revision-browser.gif >>>>>>>>=20 >>>>>>>> On Tue, Apr 19, 2016 at 8:56 PM, Jan Lehnardt = wrote: >>>>>>>>=20 >>>>>>>>> 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! >>>>>>>>>=20 >>>>>>>>> I=E2=80=99d suggest we put this in a google doc and give it an = editorial >>>>>>>>> once-over (looking at Jenn with puppy-eyes ^^), but then this = is ready to >>>>>>>>> go. >>>>>>>>>=20 >>>>>>>>> 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). >>>>>>>>>=20 >>>>>>>>> Great job! :) >>>>>>>>>=20 >>>>>>>>> Best >>>>>>>>> Jan >>>>>>>>> -- >>>>>>>>>=20 >>>>>>>>>=20 >>>>>>>>>=20 >>>>>>>>>> On 19 Apr 2016, at 19:39, Robert Kowalski = wrote: >>>>>>>>>>=20 >>>>>>>>>> Hi there, >>>>>>>>>>=20 >>>>>>>>>> I went into a hip cafe this weekend, drank espressi and wrote = a >>>>>>>>> blogpost! >>>>>>>>>>=20 >>>>>>>>>> The draft is at >>>>>>>>>>=20 >>>>>>>>> = https://github.com/robertkowalski/couch-labs/blob/blog/blog/databases-are-= not-boring/databases-are-not-boring.md >>>>>>>>>>=20 >>>>>>>>>> If you want we can publish it on the CouchDB blog, but I am = also happy >>>>>>>>>> to publish it somewhere else. >>>>>>>>>>=20 >>>>>>>>>> btw.: seems GitHub does not support embedded videos in = markdown, so I >>>>>>>>>> linked it for the draft. >>>>>>>>>=20 >>>>>>>>> -- >>>>>>>>> Professional Support for Apache CouchDB: >>>>>>>>> https://neighbourhood.ie/couchdb-support/ >>>>>>>>>=20 >>>>>>>>>=20 >>>>>>>>=20 >>>>>>>=20 >>>>>>=20 >>>>=20 >>>=20 >>=20 >> -- >> Professional Support for Apache CouchDB: >> https://neighbourhood.ie/couchdb-support/ >>=20 >=20 --Apple-Mail=_7A6F31FA-7135-4E8E-B5C8-63F14DF3104E Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iQIcBAEBCAAGBQJXHyFfAAoJELZda+Oe05WIZZAP/jD5yzufppYZmvk4l8VxhXcQ IhJKfAhSJQ6am0lVxpocbEYNPfcugQxYhrVUBknf3VfL1ZJiXgJe1WGmRkHQaRtY jB6wJA4wiWyh0CFSwyYmW3KRbv5les2eoWxuwzT9bOuBtiyQxCCHBCtMZY/duHlD 78dJITsIyIk5OBZkOOMZhGaljLkwO+dtUFZzLGRPUiutycFaQ6IENTeUGw1MYiYk JxC7P76Cch/DNKuDvd0qwCrjfMBRTQhZgMQxdNNeQifKX850x42julHoHosGWh0+ 8evm6iYdipt/phZnTVKK3pwh9MVEdmPEdMW3rNhcxJ9//XtxD5s+udQKg6TjHTLT urFlkA7HGwJL4lJ81p2vxgzMLpi9YU/8LSKXXZyKbeolgi+KsdDs+BRxN3N6TW+a 0LgAUIVPp/BBn/tMCukguhw5019vUWSQ4KxpRC8xpwGydaxWVzuWxW/zjdU463ZQ Dy5U/ukL77TtNe9vCZrN3EQEFvrKDI9j4sRrPhWQXMeXgCLS7ZzPT9dyJ8rH2ahk E7aB64hZq4myf4QoZNU5CmW4t6+YqtkAc2TfO0xsaWMoUUxEk+849rrGi6V6coA1 j6mKiVCwPrC/sFJftoTj1DU9ROPkqT7bDyByXfaLLsN9BhC6PY2cl23X6oO90VOt IH4HRN/D10GdpD1Xb8+A =YwDY -----END PGP SIGNATURE----- --Apple-Mail=_7A6F31FA-7135-4E8E-B5C8-63F14DF3104E--