Ayende @ Rahienhttps://www.ayende.com/blog/Ayende @ RahienCopyright (C) Ayende Rahien 2004 - 2021 (c) 202460RavenDB and Two Factor Authentication<p style="text-align:left;">RavenDB is typically accessed directly by your application, using an X509 certificate for authentication. The same applies when you are connecting to RavenDB as a user. </p><p style="text-align:left;">Many organizations require that user authentication will not use just a single factor (such as a password or a certificate) but multiple. RavenDB now supports the ability to define Two Factor Authentication for access.</p><p style="text-align:left;">Here is how this looks like in the RavenDB Studio:</p><p style="text-align:left;"><img src="data:image/png;base64,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" style="float: right"/></p><p style="text-align:left;">You are able to generate a certificate as well as register the Authenticator code in your device. </p><p style="text-align:left;">When using the associated certificate, you&rsquo;ll <em>not</em>&nbsp;be able to access RavenDB. Instead, you&rsquo;ll get an error message saying that you need to complete the Two Factor Authentication process. Here is what <em>that</em>&nbsp;looks like:</p><p style="text-align:left;"><img src="data:image/png;base64,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" style="float: right"/></p><p style="text-align:left;">Once you complete the two factor authentication process, you can select for how long we&rsquo;ll allow access with the given certificate and whatever to allow just accesses from the current browser window (because you are accessing it directly) or from any client (you want to access RavenDB from another device or via code).</p><p style="text-align:left;">Once the session duration expires, you&rsquo;ll need to provide the authentication code again, of course. </p><p style="text-align:left;">This feature is meant specifically for certificates that are used by people directly. It is not meant for APIs or programmatic access. Those should either have a manual step to allow the certificate or utilize a secrets manager that can have additional steps and validations based on your actual requirements.</p><p style="text-align:left;">You can read more about this feature in <span style="text-decoration:underline;"><a style="color:inherit;" href="https://github.com/ravendb/ravendb/discussions/18122">the feature announcement</a></span>.</p> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/themes/prism.min.css" integrity="sha512-/mZ1FHPkg6EKcxo0fKXF51ak6Cr2ocgDi5ytaTBjsQZIH/RNs6GF6+oId/vPe3eJB836T36nXwVh/WBl/cWT4w==" crossorigin="anonymous" referrerpolicy="no-referrer" />https://www.ayende.com/blog/200769-B/ravendb-and-two-factor-authentication?Key=ea0dc59c-4896-4dee-ad3f-c28873ad14a0https://www.ayende.com/blog/200769-B/ravendb-and-two-factor-authentication?Key=ea0dc59c-4896-4dee-ad3f-c28873ad14a0Wed, 06 Mar 2024 12:00:00 GMTRavenDB Cloud Global Status vs. Product Status<p style="text-align: left;">One of the interesting components of RavenDB Cloud is status reporting. It turns out that when you offer X as a Service, people <em>really</em>&nbsp;care about your operational status.</p> <p style="text-align: left;">For RavenDB Cloud, we have <span style="text-decoration: underline;"><a style="color: inherit;" href="https://status.ravendb.net/">https://status.ravendb.net/</a></span>, which will give you some insights into the overall health of the system. Here are some details from the status page:</p> <p style="text-align: left;">&nbsp;</p> <p style="text-align: left;">The interesting thing about this page is that it shows <em>global</em>&nbsp;status, indicating issues affecting large swaths of users. For instance, Azure having issues in a whole region in the image above is a great example of one such scenario. Regular maintenance, which we carry over the span of days, is something that we report, but you&rsquo;ll usually never notice (due to the High Availability features of RavenDB).</p> <p style="text-align: left;">It gets more complicated when we start talking about individual instances. There are many scenarios where the overall system health is great, but a particular database may suffer. The easiest example is if you run out of disk space. That affects that particular instance only.</p> <p style="text-align: left;">For that scenario, we are reporting Production Monitoring Alerts within the RavenDB Cloud portal. Here is what this looks like:</p> <p style="text-align: left;">&nbsp;</p> <p style="text-align: left;">&nbsp;</p> <p style="text-align: left;">As you can see, we report specific problems on those instances, raising that to your awareness. That was actually needed because, for the most part, RavenDB itself handles those sorts of things via High Availability, which means that even if there are issues, you&rsquo;re likely to not feel them for a while.</p> <p style="text-align: left;">Resilience at the cluster level means that even pretty severe problems are papered over and the system moves on. But there is only so much limping that you can do. If you are running at the bare edge of capacity, eventually you&rsquo;ll trip over the line.</p> <p style="text-align: left;">Those Production Monitoring Alerts allow you to detect and act upon those issues when they happen, not when they bring down production.</p> <p style="text-align: left;">This aligns with our vision for RavenDB, the kind of system where you don&rsquo;t need to have a full-time babysitter monitoring the system. Instead, if there is a problem that the database cannot solve on its own, it will explicitly notify you, in advance.</p> <p style="text-align: left;">That leads to a system that is far healthier all around and means that you can focus on building your system, rather than managing database minutiae.</p>https://www.ayende.com/blog/200737-B/ravendb-cloud-global-status-vs-product-status?Key=00cf8c60-ab4f-401e-a133-76ecc0c9b243https://www.ayende.com/blog/200737-B/ravendb-cloud-global-status-vs-product-status?Key=00cf8c60-ab4f-401e-a133-76ecc0c9b243Mon, 04 Mar 2024 12:00:00 GMTCode review & Time Travel<p style="text-align:left;">A not insignificant part of my job is to go over code. Today I want to discuss how we approach code reviews at RavenDB, not from a process perspective but from an operational one. I have been a developer for nearly 25 years now, and I&rsquo;ve come to realize&nbsp;that when I&rsquo;m doing a code review I&rsquo;m actually looking at the code from three separate perspectives.</p><p style="text-align:left;">The first, and most obvious one, is when I&rsquo;m actually looking for problems in the code - ensuring that I can understand what is going on, confirming the flow makes sense, etc. This involves looking at the code <em>as it is right now</em>. </p><p style="text-align:left;">I&rsquo;m going to be showing snippets of code reviews here. You are not actually expected to follow the <em>code</em>, only the concepts that we talk about here.</p><p style="text-align:left;">Here is a classic code review comment:</p><p style="text-align:left;"><img src="data:image/png;base64,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CBkUfGPYYDNFREREREStGZsPERERERHFOAYFREREREQxjkEBEREREVGMY1BARERERBTjGBQQEREREcU4BgVERERERDGOQQERERERUYxjUEBEREREFOMYFBARERERxTgGBUREREREMY5BARERERFRjGNQQEREREQU4xgUEBERERHFOAYFREREREQxLq5WMeM+H+/ah28MG2ymGq+8vBylpaU4f/48KisrUV1do+cnJMQjKSkJKSkpaNeuHZKTk/V8IiIiIiK6cJq1pqC0tAwHDx7E0aNHgeoyJJYdw8Gd76Hw7+tRc2o/+vXpgZSOXVCuPnvkiFqmPivrEBERERHRhdNsNQXHjh1Hadl5dOrcAXEq2//uuj9i547tOH+2BIcPHUJ1fCIGDxuOUWNvxTXfHIUUdETZ+TKUlJxCu3Yp6NGju9kSERERERE1pyYPCmpqanD48GHUIAmdOrVD9flTWPrSYnSIP4MjB4tx6shXSIgHahGPM2XlOHjiLDp27YF///kSXO65Aokp7XH85HG0ia9G7969ER/Pbg9ERERERM2pyYMCaQJUWZOEdskpKC05iCWLfoWzJw+ja4dk1FZXYVjaQKT274uU5CScPVeG/cVf4R///BhFx5LwwpKl6NxzAEqrE1BTVYaU+Cr06dPHbJmIiIiIWpsTp8+g5EwpSssrUFlZZea2DElJiSrP2wadOrZDt84dzdyWqUmDAmkydKa0ColJ7dAG5XjzteXY7/0It2aMQd9egxGPWpXZLwXKz6v/SlFRLs2FSnSfg//ZuA09+g/Gz3+1GGW1KSivSURS9Vl0aZ/IpkRERERErYwEA4eOnUJblanu0rE92rdLQVJiAuLi4swnLm2Sha6sqsa50vM4deYcylRQc1mPLi02OGiytjnSQbjkbBkq49qrKK8CB74oxNYtb+OWb49E13ZJqFAnrKK0HDXltaiqUnFIdQJqK2uRpJLQtW0HDOrXA5/v3IHP/rkD1dXVqKoByuI6qsixjJ2PiYiIiFqRLw8fx7GTZzCwT08M7t8bXTt3QJukxBYTEAhJq6RZ0i7HIMcixyTH1hI1WVBw+vQpnK9tqzP0NSpq+vPq1ejVrTO6dkhBG1SiquyUmn8GNbXl6iTWoKr6vIquzqO6pgIJiTVol1SrosS2eOedTaioqFCBQxUqKmtQVp2st11vu5dhsicdk5cUmhn1s352OlI9c7DeTNdfIZZPUtuYtAxeNVWS83NMnjAHfy62ll4wxX/Fzx5+DNnbzHQz2v+n53C/2pc9hNqnfO5nf/rKTEVh24rw23UtX4H3zGzLB8h2rHv/sg/MfMt7yxzLHn4Or1/o60NERBRjJNNcUVmFIYP6oEO7FDO35ZNjkWOSY2uJgUGTBAXyHoJz56tQWhWH8ioVAKgM/d59XiQmxCGutgpJCUDnzglo3zYebRKrEZdQgTZqPKltHJLa1CI+oRo9unTCmdMnsW1rPsrKylBVU6sCjFqUVSWgtKxS76MlO/LFZ/iksBBHSs2MC+S9tVvQ58ph2PmROzPc9L7C+4evxs9ffA4vyzBZ7XNV8Az6LzedMNPR+Aqvf9TLv92fjsbBVY7MuwQ9q45g7E+t5T+/+QhW/uKv2G8W7//TJ7jMLHv5xZkYe3S1IyD5ADtwl1km6wJ5K/zrEhERUdOSJkPnysqR2q9Xi6oViJYckxybHKMca0vSJEGBfjFZVRIqapNxtho4du44jhzZh47JEhS0xclzHXHiZBmOHz6F0qMlwOkqnDtyGiWny+E9fAKHVTK6tZN+CMDRQ0ewr6gYFdXxansJqEQiztck6X20ZJ6sN/HPz9/EtKFmxgWhMr2fDcM1WVfja5+93cyl4H3xvaxbMdBMYYTaJ47goG+fEhCsBiY/hylXmllRCdhu/1sx4coT2PGBlbHf/8EnOHbld/C9/noSA2//Dr529BO8b/Y78PZ7fcv0tsYOw7FPdpiM/w2YkXWDHhMDb7gaPY4eYVBARETUTKQPQd9e3VplQGCTY5NjlGNtSZokKJA3FZdXJejS/Joa4NNPP0VKm2SUnDqNUydO4vPPPsX/3fJ/8c+PP8GpUyU4cvgYvHv2YueOnTh57ATOqHldunRBYmIi+vbti379+ulmSNZQi/OVCXofDVK1F3+ePRY3eNKR+vWxmJejghKtBP9YOQf3jhyOVFl2xTcx+Zktam4QQZoieZfcoda7A8t3mxlVxVg/9w58+wr/tk6bRaLO5+v4Cq//InRTFt00Z9kHruYuEZvgbPsEO6+8GjeqzO81joy0RTLpAc1lpBmOo5Q9ME3Z24KsE8L+P72t9u3PrOsM+IvPYcYIM9lgX+HgUaBPn756/P1PTuBrw/0Ze9lP3WP123/wCNCzlz/IcJBaFdw8Tp0vIiIiampSci6dikM2GTL5rVTP3VgZmNewl5lm2U3CbHNejpluQnKMcqwtqbagSYKCyspKlJ6vQW1NnO4PMHhQqi7Z796tKw599SUKvV58XvA5Thw9joryahU8SHOgSh1A7NzxT5w8dBxt2iRi0KABiI+PU+NtHEGB+nyVtY+G+GTpb/D215/Hb//4U/xb+2KsnLcY+XrJUXyyIxnjs9/AB++9iee+m4z8lQ/gPxp4Y+T/4m5k/c9RXDXtRfx13cv4t9I3sLLALIxIMt+LkdfT35Tl5cm9kPebFe7mN5+txo7h9vJhOLbpd2Ez6O99tMuXYb5xuLOEPBpWmnZcPdOXpms+Wo2dZmlQpv+CBBDL8EO87CiFbzLbNiDv6DBc06Dg4gP8eVNAEOHojyDn9le3S7BBRERETU0eOypPGQqvBzyXfYRNOe4Mzqd/WYsDnVrWU33kWOWYW4omCQqqq2tQVZug+xJUVdbg+PHjSIyPR21VNdIuT8U3rroS1w6/Dqmpl6N///5ISmqDnj17o2fXbrjj1tuQnnYFEhLi0L1HN3Tv3h3lFWX6JWgSNMhQVR2n99EgE36KxfcOx1XX34upt/UHTu7Ap7q0Pg1TFv4S378+DT0vS8f3Z92DUWqut7AhHZPzsP6Px9ApYxZ+85OxuCptOL7/7C8xxVdKHkHxDuxQGd0pzkz0iHEY23MXdjg71V55l7+kXS8/gUOhggKVQV8nTYd8n7/a1awmIpOmCY5M8o1Zd+FrZjyo/rfiVyaAyMLvVEY7IKhpLMnA6/4D9zagNN9qvnTw5pnu2ooR9zqCHhUcuGpKiIiIqKnIewjksaPhHcOA/sOxafUb+NTMAT5CztojuOrKaDNWlwY5VjnmlqJJggJRIcX58Qk6M1+pxuUJRN26dka/Xr0wJO1yXPP1r6FH967o0K492rRJQruUZAzsPwAd1L+dUlJkVXTr1k2tX6XbYumgoLpWDSowUENDXa32bevU3hlhlsP71m/w2I8m4tYx38YNE+wahAZQgYRXpfHqK4ejk5kFdETUj6ktPoJjdZq09EWfnvIyuAhNhELQbe2xCytNKfj9KkO8EyeQtzbKDsdB0xS9gbc/hilX7sK6+jxlKIz3pNlUnnQ4fszRJCk0q3mRoWsD3tYdjsPVBNyYNRNjsQV/vgBPaiIiIoo18mIyeQ9BJAMmTML4wjxs+sjMeHs1/px8DzIDWgmUbFuGmd+1moHf8N0HsHKnPJTGPP1x9gr8ecZYfF0tu/XHq/BpwTJkXStNk4Zj8nx3c/Hyz1f5tqM/a78/7eQ2LL/f3wR95vIClXs0T6ic8DDm/eCb+HqY5kxyrA15GVv++9vx+FPPYk3ORjPHT+bLcPzESTPHEm6daDVJUJCQEI84taWqymqVma9FUlKSyslXoU1CIsqkE/LZszj05X41qxwVlWWIS6jB+fJSHDt6UEUTFWijcv3ybgOvdzcSk+J1UyGrlkBqC2qhQgS9j6ZUsnoO7vjJapz/l19i8R//hL/9aaauKQjK3L+nz/nbhZVXOSK/Qf0xQP3zSeFea1pUfYkjh8x4JP17hezg6srcRs20tZ9smhrZw09Ho8dnn0Rfeh+YJhUoqCt2wUlAsK73TLz8hKPDsRYscJLO1d1wmR04SEBQj2CCiIiILrKeE5GZUYicDVZUsOlvueg59iZcpaeM4lX46f25GLLofRR5P8JvM49i3k+W+WsXtn0GPLYWf1s4EeXv/AJ3/6wc97/3Ef6adTnyV6zAW448Wv72Ekxd8z4+X/MEPP/8BZ5YJPstxsoZWdh05Yt4z1uAz/8wEUefm4PldqCyuxi9HnsX/1yTBY+Z1VR++4fXdaZfMvpOMi3zZfh8j7tlS6h16qNJctoSBKQkSjMi6+XIbdu2RefOnbHznx/h+JHD+GJfIU6fOgbUVuLsuVM4V1qiMv7nkRBXowKDQypoOI2ysnPYu9erA4HqKn8nY/k3Ma7aCjSa0OljxVaUmJyMzueK8dbSP4SuKUi7Eld1BT59azGWv1OIT3N+gflLHRcjcTRGZahAY80zmLlkCz7duQXLH/5N9O846H8Nrum5Cyudz9BXmdmVzuY/9WGa/tRZ1+zHapLUD5f1dHbI/QDZq3aZcUU/Pchd0i8dcdVVDK74r8h21gro9HfDNTdEE9RYHZqDvtfANINyNmNyunHiaPVr4e9boTs497wa39IBgNpu3i58bWxgMGGoNDr3uf9Pv2tEfwUiIiIKJykpUb8BOLJOuPk7Y3Fg9WpsKs/DptX9kfmvw80yy4G1q7G+tAD/cbuU8A/HrcsKgMJiHDDLMSID/9Y/GT0nZehC31G334Nr2yXjqn+V6dMod1QV3HxPll6WnD4ZmTcC//jyqNrWWqzfVo78JXfgCk86rrh9mconFuKIXTqanoHxX0s2E8HJscox19ekzLG6X+6kzFvMHMsVQ9LUcLleJuNOodapjyYJClJSUtA+pUa/7jk+Pl4HBb179kJJSQlOHD+Oo4ePqMx+NT799BPk5KzFe+9tQcGunWrZUZw8fhjlZaU4evQozp49qzsql5wp0duyhjikJNXofTSlAd+fhelfU/nJZ+7Ad7+3GCX/Yt00wY3GjOcmY1T5Nsz/8URk/aET/u2edLNMqOn5KzD3OynIX/QA7p66CAcyZ+L7l5nFEfXF956wnqFvd3q9fxUw5cWGtJ03mXf91KFAffGtq7thZ560m1f7vFcy1IvNPj/BNZOHmc+JGzDjp87l0hE3TJ+C/r1cn7Xa/kdbOv8lDoXNjDubQZnBbvsv/Rh0p2xr/i8/uRo/D6hR2LkqYF37CUoqzQcdy365qVeDzzkRERGF1y65Dc6VRvc0yU633YXvIxebnlyDt66ZhPHBHunedTJWeQtQ5Buex3izKFCvnj3MWASu1j4dMe2/ndsvwDOZZlEU5FjlmOtLMva/furfMepb15s5Fsn0PzrjAb1Mxp1CrVMfcSrjbRXvO3y8ax++MWywmYpMHkW6f/9BeI+1RXlCItrWHsOHa/4LH298DSNuuAbJnbsi4WgcOvTojtOVFThTXobrrv06dn+8HV3lxWYpSdi06yN84j2EXkNG4I6pjyC5+2B1XawIbEiPcqQO6I3k5PARGTUzebrQb45gQlNnnLetwM8OjuOTf4iIiFoxeTzn6TOlGNy/t5kTQB4ROmExPNlW5nvT3G/i3v85g/Hz3sWyKT30491v2ZCBjdJk56PFuOOuZUiZ/hpWTB8OHNqC7LXl+EnW5Vg+aSLme15E0cKxaqN5mOd5GDDbtPaRi5vXvYlpsPZ3JOMJLPuPO9H5g8WYef8KdJL93VOMJePuxsvtsvDbP8zEtQnFyF+0FuWPZaF8djqyvDOtdOiEB7ev+DA6d2yHblF3Mr24mqSmQDLrHTqoIaUaNXFALRIx4PJh6NCtL979+w6cr6hF38H90KVLB/z4h/fgsVmz0KNDB/Tr0xfxKSnYtX8/dhd9ia49+qBnLzUv0R9VdVbb7NQ+iQHBRfcVXl8RqgaikUbcy4CAiIiolZPMcVl5Bc5GWVtw8+134SqMRuZtQUr5h8/E4oV3AivvxhXD0nHj95biaA//w2Xqw9O1EPNGDMcN968G7vkv/OYe2d9wTH/5edyGP+BHX09H6g13Y/mhnroPaTTkGOVYW0pAIJqkpkCUlpbhwFfH8NnJDmhTcwa1J3Zj67rf49OPtyFehR4TRo3EZT0uQ8W5clSVV6J9+/aQjggff7oD2z/6EAkdu6Jj94H4l3HfR7+h1wNtuqE6vg083c9jQN+eaNeurdkTXRjm3QlHzaS48q7mefcAERERxQSpLTh28gyGDOqjnzbZGknWes8XB9Gja8fYDArEsWPHUXSkHF+diUd7nIb3o83YvmUdPtu5HekDuuGOzIk4JZ03ylWev21bnDh/Dnnvv4czNRXoPeBq3DhmPAZ4hiMupRdqkjqgd6caDOzVFj16dDd7ICIiIqKW7MvDx1FRWYXUfr1aXWAg2eqiL4+gTVIi+vVuWfnXJn3Op2Te+3WNw2UdqlEe1wGp6SMw5OvfRIcuPbDv4GHsKPgcHbp3RzsVNSWltEVB4T6cLq9Bcqde+Jdb7kSbTn1Rm9QRNfFt0KNDDfp0TWBAQERERNSKSGZZMs1Smh5tU6KWQI5FjqklBgSiSWsKhDxS9PDhw/jyZA2Ol8UhpbwYLz8/F4cP7UV8ZTW+5hmCtglJOHu2FJ96C9GmS1d069sfdzzwDCora9C5W2/06hiPy7omonfv3vppRkRERETUukhTokPHTqFtcht06dhevwFYXvjVUmoPJAstjx2VpwydOnNO9yG4rEeXFtVkyKnJgwKbNCU6duqc+vcYfv34AzhXdh5nSk7girTLkTZoIBLi4rF+w9/Qp+9ADE4bihE//Bl6tG+Dfl0T0L1LB9YQEBEREcUACQ5KzpSiVGWqG/IG4ItJ3kMgjx3t1IKeMhRKswUFQjofnz59CkV792Jr/rv48IP3ceDAHnTu3A5HDx7CuTMVuGn0d/HdjAlI/+aN6KyCgs6du7BTMRERERHRBdSsQYFN3mNQWlqK8+fPqwiwEufKKvT8hIR4dGzfVr+YrF27dnzsKBERERHRRXBBgoJAZeWVZgxom5xkxoiIiIiI6GJgL14iIiIiohjHoICIiIiIKMYxKCAiIiIiinEMCoiIiIiIYhyDAiIiIiKiGMeggIiIiIgoxjEoICIiIiKKcQwKiIiIiIhiXKsNCtbPTkfq7DwzZcvDPE865uWYScO75I4gn41EtnUHlu82k5eISMcS/LxEkDMHqZOWwWsmG6tBaWiM3csw+RK8VkRERESXilYbFIzPmKhyyIXujGxOLlaqf1bmujOk3sICjEq73Ey1JPUPTMYvLEDRwrFm6uJoaBoaFrwpQ7Owyvsmpg0100RERETk0nqbD6WlYVRBLjY5Mszrc9diVHp6QLCQh/w16bg5I81MExERERHFltYbFAwdi5vTC3Cg0EyjEAe8KvO/4EFMcQYLUnuQnoGb7VJkaSrjSTdDFKXwhdI0xf78HKw3s2V/yyfZ853LrPnuJkwB86JJg24S8zBWogDzJ6jPBTTv0U10zDYmL/GdhDql7c7PRd9EyGqG5VvPddzCfezzctw1GnVL/APOVZB0SDpvWVQArHnYbLPueQxsluTfT5AaFdc5dm7HfWzOc0dERETUWrXijsZpuHlcur+p0O48bIJk/sdi1CR/sOAtVCOeNHhkQjKKM4Bl3gIUyZCdhvmPhssoqwz5S8Az+vNrMTd9LbLsTKna34Fxa63tmGUrdQYzIF0iZxnmYyamZMp4lGnQTWJexBSkY+469bk1WdYxCJVxzs+w15+I/EVzggcWal9Z3pnYaPa18aFoaksk0/wwvLPsY1PrzSpEli8jL5n1idjkO/YCjMqV4CWUup9fNs4scpAmRxtnpQOTXtSfeSYz8DxKjY/6Z02uL0CRZmFTMoI0Uwo8x+tmYoBeYB0bss18dX49oc4dERERUSvSioMCldfPyMAok0n05uYi32T+PWl2ZrIQmzb4M466edGsLIzXU0pmFubC3QTJTWXIF9iZ8TRMe8jRj0Fl2p+ZbmeyrQxsfuFePeVMl9D7HTdWb6f+aQhCZZyfkQBDyPquGpMABf6mVJ5MKw1h6ZqVmY5jU+tNd9S+SPBVMBFTHMvHL5TgJQQTEDm3N366I8AJQ59H+3zvVv9OmqmOtRAH9LmSIGEiRtnnwUcFIS+txZTs5/3nWF2raTogs45NB2faWEyZBWzKZW0BERERtW6tOijAUAkCrEyis9TYnynfiwMqA2tlHKV5EZC/aKKjWclEzC8Ik6GOwNk0Rzd9salM6JRJa5Gvm6xYmVcrE930aQgr83kUZQNZej/RdVh21az4XI4BduChluenBy4PLfj2oiTX1wQjEvR5MrJU8GUy8ZLBn5Thz/j7yDVPxwB/DOKj01KwGLf4zr113exgjoiIiKi1at1BAaymQptyl7lLje1gYYmUDNsZ0jQMUCNTfE1H/IOv1L0eJCBYmeZsYpNulljk6Ui6tsKVeW3aNERFAgPZx7oMbJoQOTDwpKncdOBTnTRHRttR+6BJKb4ZDRR6e9Gwr28eNm1I09dXAj5syMN6lcEP/kQpRwATQKfFNE9yDRf5aU1EREREza2VBwVW5jt/0WJH5l+YzOQGlXE0zXaEzqjPCOw02xBWib/OZJppaabkkpmBKWtyMS93ravde9OlITLvEkd7eR0oRUHSXbAY81ydl+dgvu6voSZkOez+E5b1Sxcj34zXEWR765dE2+HZXN8NS7HJYwIr6WAOFWhtQIgnSpm+CM5zvHsZlkutjb4mD7s6L/vwXQdERETUirX6oEA/mlT948z8C52ZVPl0V8Yx83mr06yj+UjDXtpl9S9YOcPezhwcUP+6SWCiMs9eZxt2pV5psNq8B3v6UDQ86tD1uno/0sE2mmf5j8UzugOuv4nTLRsysNHX0VktXzcTcCzPzwjTpyDI9rIKgwcouu+C7+lDZqYOKgrg8QVWUttSoIIQxxOlAnimv+k+xxNyZTXFSrvXd91kYCBARERErV9crWLGfT7etQ/fGDbYTDW9svJKMwa0TU4yY9RqSSn7hEJM8To69xIRERHRJaP11xTQRVaI5Y8uRn7QTr9EREREdClgUEBNzHqpmL/5zUTM97zIzrpERERElzA2HyIiIiIiinGsKSAiIiIiinEMCoiIiIiIYhyDAiIiIiKiGMeggIiIiIgoxjEoICIiIiKKcQwKiIiIiIhiHIMCIiIiIqIY16qDgvWz5eVZc7DeTNeRM0e/YGtejpluKNnOpGXwmsnGycM8zx1YvttMtlqxcpxu1j2phtl5Zs6Fofd7gffZYLuXYXK4721DuL6j4e49WVb/34SLdV1t3iV3NP2+m/R3TWnq7RERUZNq9TUFo9ILsXJJoZlyKsTyl9aa8dYkSIanGTJZzZIJae1UpijLOxMbvQXN/IbnuvfA+IXNvc/WYiyeUdfnmUwzGU3wesGua/OSwGZy0N9KIiKKBTHRfCh/Q17d0qmcZZiPiZiSbqaJmpm3UGW4PGnwmGlqHXhdiYioNWj9QcG4BzEXi7EyoDnA+ty1mPJQFgaYaUshlk8yzQD0YJeuW/PdTQqsea6SNaket9etU01uNUuwl0cukXN+PrCkMiCddom9rhF4GCtRgPkT1HxJg6RpwmLkYy2ynJ8NtQ3FqgVYZpbXLSWVEsVbFhUAax7W6/rPi/sYwzbdshVKmoN9vv7XwjfPeR2iKOX1f1YNrtoPU0qsAsjgaRTRXddg56xuyazZn0mvXRvja5oSZPvOZTptwe4B9bm6NTvhrpV9Pp2fCX8e9fYd23PfE/U7h/NyzeyQAu4N33ct4Jga1FTFcS+FOJdOwa5rqO9P4Dmq89uhtr/e9xmznvP+dF2/4Fz7CPx8yHvdOuasNUD+oolqmftah92mg3XceVF/PjA9Ee9tM9+9njutrnUadP2JiGJYbRAfFew1Y82j9HyFb2hOObOG1d6d7a2tXfeT2kETl9buMfNrP19ae3faT2pzar21L08cVvvEOv/8J+TzmrVMr6/syb69dtCsXD2u+bahyPbThrmWy77907m1T6jlvv3o6dtrX/7cTLpYnx1kb1vo7dvT7nTZ02G37UyrFn4b+lhDps9S53yYdPu3aT7jPO8u5jh9y600+LZZn2vhvL6uc6UEXnsn/VnncQaelwhpNMuju6510+27P33c61vXwbH9gPS67zH5/FJz3HXT4d63le7Q18ocp+M86n2FOo/y+Vn+Ze5tWfuK/hzW3bebtdyZ9hx13Hrb6vy4r0XAuXOlKdR1srYf7TUVgdfVum5Bzr/rmIKkz3FNrM87zpP+DodOh/15/3kJOE8R7/Ug92NAmqw0OM+NW1RpcNxDObMCvqeB91uwezvgc65tBmx/z7pc3zgREUUWG08fyszAlIJcbDIlSuuXLgZmZWG8Nek3NAvPTE8zE2m4eVw68gv36inP9AcxZc1Sf6lfbi7yJ2X4t5E+Exsd7YnHPzgTo9bkWqVbOblYqZZP8bVTHosps4BNucFLldXGMHfd8/5tZ2Zhbvpa5OvSyzxsKpiIKY50TntoIlbmRi5F9IlmG5MexLShZjwa5hj958+cM8d5r0sd54Is0+zCSgO8hVbpXrhrkZHhP7eK1PqMGjdWb0ePO6+tnDsET4P12ecdx2mlwd3cLEwa631dG2DSi/727fo+KMAB2fzuZVi5ZiKWOe45z/Qg93QwUV6rKdn+e1DfzwXmuOtQ52WhfY7M9XF9tj7nUC1foPZlpurQzf7caR+vjltvO/N5R1+AsRg1SXbThNeiPlzfn0Js2lDgOp/WvZLu/s45rok+h3LeHjTXd+hY3Gxf+1DUvbLK8Z1x3svR3etBOO8T9Z2cEumchklDoPELnb9x6jdanacDcv+Fubcjfr8d950n0/pNICKi6MRGUGAya/OXyh/gPOSvScfNGf5MhZOz+lk3C/CRTEaByfDJH3n4/2AHM9Tfxlj/ES1YjFvsam2zbTuTG1kaBtgbU9vyNQWyhxlr/ZmsaDTFNgIEb1d9OQZEysiEEfJa6MyJCZL09bQDHJWpUAdgNYGw152I+QXB0mB91pMWcB+o6dCZX7fGX9dGkGuY3rB27M1xrVxNOnRztegET0to4T/vblYkzWEuDXtxoCAdAwJuNX3vhfrO6d8P9b2vT2AeSO5lPdL4e73BfGkIQjfPsq+XNNMyQt7bEb7fKigsyob5XXM3KyIioshiJChQfxB1SX8uli9ZipUhSsElE7oybS2K5Ckiatg4y90LeXyGKfWSknZk4OZwf7B3+//Y6j/Gk170bdc3RP2kEuuPoSZ/ZNPNk06cwxp/SW1ETbGNAKEzOHUzQ9GI5lroUlYpafbV2FjB05TsgONSg78E2WZ9VmcyA0WZ2W78dW0EuYYNzNA19bXSAcFLaf77aV2Ykv4AQdMimUIzGih02iUgmIgDD/mvw7JJZtFFFybgas4Oyr7z2Ph7vcFCXUsJCCYUYop9z3hfxBSzKPS9HcX3WwIDmbcuA5smMDAgIqqPmAkKrJL+tZi/KFQJf2BpmlXl72Kqquc9uhiehwIy0AXOzswqg6I+42uiJFXjax52dL6MpMDUali8S+boJhO6iYU0I8BizAvRoTUqTbGNQLqJlnubVrojBE9BRXMt5Jyqa5G7FlMy/NdTBwszAjuyBqeDvEVzHBkHc91MU6SI6n1d3Txp6a6mFetnO0pLI9HNSdYiy9GR07tkWVTH3bTXymQ2HZlb3bTOjEekM4AB351wjwoOkvb16ri9dUrjpQbJjF50VvM3932Zh3kz3PduozmaN/q2b36nGn2vRytMGlwkWHAGJBLcm9Fw93a477fcw759O2pqiYgoOjEUFKg/KNIuOj1Uxsdq/7pyhl0tPQcH1L9u8scdyC+YiFGBJc/pMzEg11Gl7XG2rR2LZ9bNhNe3bRnClWKlY25aru+ztyxKwzJfKb5K55oX4XFVoTuf9mKaSjmflmKa2/ifPhRpG5FZNS/Opw/J893d27xlQwY2Nqj2IZprYQV5K73O9uhK5vPYOKvQ3TQq1FNIdHODNOtc6c9OxKZxax3XLZL6Xlc3z/Tn9ZOx7OZH+RmO0tKI5BquxVyvdQ1kuGWD2qZeFuQecGnKa+W+F2SYV6gy+mZZROreXOU6h3OAh8LVNNRNe5ban8d5zHp+LtAkNQWRzmV0PNPfDLgvHwayg9VgNcKkDOBR//a9s9a6S9Aj3Ovy+wh9XhtRwh4uDU66gMXR9E5dLv+9H+beDvP9VnGp4/jk/L4ZtEaYiIiCi5Pexmbc5+Nd+/CNYYPNVNMrK680Y0Db5CQz1jLI4/ZuKXyQL4IiInLgbyMRUcsWUzUFjbZ7GeaFbH5ERERERNQyMSiIinRiTNdPVfGwSpqIiIiIWhk2HyIiIiIiinGsKSAiIiIiinEMCoiIiIiIYhyDAiIiIiKiGMeggIiIiIgoxjEoICIiIiKKcQwKiIiIiIhiHIMCIiIiIqIYx6CAiIiIiCjGMSggIiIiIopxDAqIiIiIiGIcgwIiIiIiohjHoICIiIiIKMYxKCAiIiIiinFxtYoZ9/l41z58Y9hgM9X0ysorzRjQNjnJjF1YZeUVOFd6HmXnK1BRWYXqmho9PyE+Hm2SEtE2pQ3at0tR6Wuj5zeV0rJylJwrxVm17/KKSlRX1yDIJaiXuLg4JCTEI7lNEjqoNHdq3w7t2iabpURERERE4cVcUHCu7DyOnzqLqqpqtFUZ5xS1/6TEBMTHWZUmNbU1qFTLzqs0lqkMfKJa1r1LB7Rvm6KXN1TJ2VIcOXFaBQHV6NShPTq2b6sz8YkqMy+Z+saQS1ilggsJMs6cK1P7OqeChAT06tZZ7aud+RQRERERUXAxFRQcPn4K50rLdUZZagGiIbUJkqFv3y4Zvbt3MXPrp/jQMR2M9FLrd+3UwcxtXidLzuKIOl4JZvpf1sPMJSIiIiKqKyb6FEjToP0Hj6Gquhp9enWLOiAQ8llZR9aVbdjNjKIhtQLe/Qf1+NDUfhcsIBCyL9mnkDRIWoiIiIiIgomJoODLwyd0P4FunTuZOfUn68o2ZFvR2vflEV9JfWObCDWE7FP2LWmQtBARERERBdPqmw9JkyEp5Q8WEJw4eQrvf/APFO7dhz2F+9Ctaxd079ZV/dsV4zO+o6cDnThdgsSEhIhNiaTJkLhUmu5caukhIiIioktHqw4KpB3/4WOndfOfQDm5b2N93tt6XDL/37z+WpxUQcKJkyd9AYLMy1TBQaCDR06gd4/OITsfSx+Eg0dP6OY7F6OGIBi5zLuLvkSfnt3Y+ZiIiIiIXFp1UCB9ANqlJNfpQ7Bk2X/rjP+QtMGYnvVjM9fPrkGQoCHYZ6Tzcen5cgzsE7zUXdrwd+/S8YL2IYiGdD4+fuoMPAP7mDlERERERK24T4G8h0AeOxoYELy//R86IJCMfrCAQEgtgdQQjB/7Hf1ZqVVwkm3KtmUfgeQ9BNKp91ILCISkSdImaSQiIiIisrXaoEBK8+U9BE5SA7Dqf97Upf8yRCKBwbeuvxZ/V4GErOsk25Z9BJIXk8l7CKJWWgh8MBb4cCJQedzMbD6SNkkjEREREZGt9dYUnK/QLyZzkiZBYvL379T/RkM6HNvNiZxk27KPQPKmYnkxWdSOrgNqyoGqEhUg7DMz6+sDZD/8GLK3mckwJG2SRiIiIiIiW6sNCioqq/Sbip2kI7HUENhPFZK+BU//6j/0uJNzvnxW1pEnFDnJtisq/X0jbPJWYXlTcVRqq1RQsN4aj08BOgyzxuvhvWWP4f6HPwGuNDMikLRJGomIiIiIbK02KJCXjMXHuQ9vT+FelcnvaqYkw99VP4I0UOD8tMsH4/iJk2bKItuurqnTRxvV1TVITIjmtKp19y1QK5xBjQpgahL6Auf2AGVfmOXRuTHrObz84r24xkxHImmTNBIRERER2VptUBBKV1NLICZ//46gnY0D51uPKnX3KWiUqtPArjnA0b+iurwCX+3cg/jKvUDBTOCfPwRK3E2ViIiIiIiaU6sNChLi41FT6y4Rl9L/wGZA8jQiZ4Zf9x9Q85ykhkE6HDvJtmUfgRIS4lEVriS+thL45H7g9N+t6bg4VJwrQ+nxU3qokicaSVOiZiJpkzQSEREREdlabe6wTVIiKquqzZTFbgbkDAI+2L4D2Utf0U8lkkePSl+C9Y5HkMpnZXDWMAjZtuwjUMQ2+ye2AOUHzYQKLqqrkZgU0AfhixfNSNOrV58HIiIiIooJrTYoaJvSBucdL0kT37rhWp3Bd2b65UlEQ9Iu17UD8uhReTfBjAfvM0uhgoU39L+yrpNsW/YRqEO7FJw5V2amgqg4YkYsCYmJqKkJqFnokG5Gmp6kTdJIRERERGRrtUGBvGCsLOAlXfIkIekvIAGA/UIye97i53+JJ3/2E/1uAvvpRPLiMhlkuT3PJtsOfDGa6NS+HUrOnjNTQSS6t1NdWYWEpES0695FD4nJEmjEWQubgaRN0khEREREZGu9NQUqc52YmFDnBWPSN0CG9Xlv6yZDzqZENpknjyWVQR5HGtifQLYp25Z9BGrXNhkJCQk4WXLWzAnQ5Qb1P/9plyCgqrwcx3Z/oYeKs6VAh6vM0qYlaZK0SRqJiIiIiGxxtYoZ9/l41z58Y1jkN/42VJmjWU/bgBeMNaVzZedx+Nhp9OnVzczxk5oCCQzsGgBpQiT9BqQjstQOCGlKJDUHgQ4eOYHePTqjfdvgzXBKVMb+4NETGJraD3FxQUr9v1wJFL+iRytVGg99UogBNzgCgetzgIR6vBU5CnKZdxd9iT49u6FTB9YUEBEREZFfqw4KxGF5ok91Nbp17mTm+Nn9C06cPKkDAQkQ5AlF0iFZ+hAENhkSJ06XIDEhAb27113mVHzomP63/2U99L91yGNJj/wVqDmPksK/o9OAQcD5r4Ce49Vwq/lQ04mYHiIiIiKKWa0+KBD7Dx7TTwrq3LFxpe+nz5zTb0oe2Ce6jLV3/0Fdm9CnZ90XpF1IB4+e1LUmnoF9zBwiIiIiIr9W26fAqV/vbjozL6X8DSXryjZkW9Ea3K+XzoxLKX2Q2KvZyT5l35IGSQsRERERUTAxERTIS8akdF+a/Uh/gMDOx+HIZ2UdWVe2EeyFZaFIp167dF7a84fsfNwMZF+yTyFpkLQQEREREQUTE82HnKTU/Pips6iqqkbbtslIUftPSkxAfJyV2Zc3FcuLyeQ9BPLYUXnKUPcuHUJ2Ko6WdD4+cuI0qqur0alDe3Rs31a/RCwxIT54Z+R6kEsobyqWF5PJewjksaMSBPTq1pmdiomIiIgoopgLCmxl5RW6FqDsfIVuFlRtXiAmNQHS/0BeTCbvIQj22NHGKFWBRsm5UpxV+5ZMfLXKzAe5BPUiQUWCCi4kyJAXk8l7CPjYUSIiIiKKVswGBUREREREZImJPgVERERERBQagwIiIiIiohjHoICIiIiIKMYxKCAiIiIiinEMCoiIiIiIYhyDAiIiIiKiGMeggIiIiIgoxjEoICIiIiKKcQwKiIiIiIhiHIMCIiIiIqKYBvw/4jwPaniXEPkAAAAASUVORK5CYII=" style="float: right"/></p><p style="text-align:left;">There is some duplicated code that we need to manage. Another comment that I liked is this one, pointing out a potential optimization in the code:</p><p style="text-align:left;"><img src="data:image/png;base64,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" style="float: right"/></p><p style="text-align:left;">If we define the code using the <em>static</em>&nbsp;keyword, we&rsquo;ll avoid delegate allocation and save some memory, yay!</p><p style="text-align:left;">It gets more interesting when the code is correct and proper, but may do something weird in some cases, such as in this one:</p><p style="text-align:left;"><img src="data:image/png;base64,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" style="float: right"/></p><p style="text-align:left;">I really love it when I run into those because they allow me to actually explore the problem thoroughly. Here is an even better example, this isn&rsquo;t about a problem in the code, but a discussion on its impact. </p><p style="text-align:left;"><img src="data:image/png;base64,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ZCIiIiKicy7qgvxAuqlWfGnSPXf5ffjWOd18taa9Tz4RERERUbSLuiA/IT4eTe4mNWaSrfPObjfybTt6AG/0vxfTdPIOgHwAVyfTlusgIiIiIopWURfNJiclGq+51FndbvSg/p1338fylb813rojX5Up++IXaa/MlN+Vg34HQJJpy3UQEREREUWrqAvy01KTUaP90S3pxhuuNwJ2PYiXb9q5LGOw0XovX5Up340/Y9r31VyI4P8143+5rE6mLddBRERERBStou4v3so/VHXg0HH07d1dTTHJYF622stgXr4HPxj5h7Dkm3ZkH31nd50Dh46JtLuJ7WegT0RERETRKfpa8kXwnZiY4PMHq2SwLoeiki1GsK933bHIaTK4l4N8faYzwJdpyrQZ4BMRERFRNIu6lnyp6mwNDh456dOaL8n+9zLQt96ZL7vsyH738sFc2YIvBWrtl634fXp2Qce0VDWFiIiIiCj6RGWQLx08egINjY3o3iVdTfGy+ucfO37cCOxlwC/fwCMf0JV98K0LAN2xk6eQmJCAPj185xERERERRZOoDfKlzw4cMd6E06VzRzWleU6erjL+ku6Avj3VFCIiIiKi6BXVL4S/pE93IziXrfDNJZeVaci0iIiIiIhiQVS35Ftk152q6lqkd+qAjh3C608vH7I9daZafD+FXXSIiIiIKKbERJAvyYdxj544g4aGRqSlpSBVrD8pMQHxcebNCvmXbOUfupLvwT97ttZ4i06Prp34kC0RERERxZyYCfIt8j36spX+bE2d0Q2nsanJmJ4QH2/035d/6Eq29vM1mUREREQUq2IuyCciIiIiutBF9YO3RERERETki0E+EREREVGMYZBPRERERBRjGOQTEREREcUYBvlERERERDGGQT4RERERUYxhkE9EREREFGMY5BMRERERxRgG+UREREREMYZBPhERERFRjGGQT0REREQUYxjkExERERHFGAb5REREREQxhkE+EREREVGMiXML6nPEamtrUV1djZqaGjQ0NKDqbJ0xPSEhHp06pCI1NRUdOnRASkqKMZ2IiIiIiNpes4L86uqzOHnyBOSSqSkJaDpzANWHdqPm1CG445KQ0PEi9Bj8FSCxA86ePYu4OKBLl64i4E9TKRARERERUVuJOMg/cuQoGhrq0SEtDSf27MC+/3sTDbVn0dTYiLS0ZCQlJaCq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" style="float: right"/></p><p style="text-align:left;">RavenDB has been around for over 15 years, and being able to go back and look at those conversations in a decade or so is invaluable to understanding what is going on. It also ensures that we can share current knowledge a lot more easily.</p><p style="text-align:left;">Speaking of long running-projects, take a look at the following comment:</p><p style="text-align:left;"><img src="data:image/png;base64,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mhSQXrKvzYNHGhQ4hLTvktz/tNmupleuj9HUioiIiIjahPYZNOzOQbalA67eTGhk6sXaUPr4Scid5aOvgzRhPDLXBdkuX3W4zjWta+Ori1GovuvBCkx9BgKRNRNpSHa16NmEwqBqGjYh2xQkOFLT1LcQhbLv0uBxGI3FHmlt0GtM2BGaiIiIqPVrn0GDyMzDo/mR7Kzral8/4UW9Q7K5WY3rLUXmTtTGx9/fUhC/1ToLu9dVON7cp0H2YXgLOQ5rkx93LYDeZ8D99iTTsPbbfCComoaLkex8xLV8reN1g/6eQyj7LsnaDev+yw87QhMRERG1LRH1gvoelC937cWVQwapofA7W12jvgGdYmPUNyIiIiIiains00BERERERLYYNBARERERkS0GDUREREREZItBAxERERER2WLQQEREREREthg0EBERERGRLQYNRERERERki0EDERERERHZYtBARERERES2GDQQEREREZEtBg1ERERERGSLQQMREREREdli0EBERERERLYYNBARERERkS0GDUREREREZItBAxERERER2WLQQEREREREthg0EBERERGRLQYNRERERERki0EDERERERHZYtBARERERES2GDQQEREREZEtBg1ERERERGSLQQMREREREdli0EBERERERLYYNBARERERka12HjRUYPEz32PxAfH1wBFM/D/H9dEe3vk/e/DoR2rAi1zGHsT5mFfOF/ew+limq3nUtIlrK9R4yTot7pkj2KWmEBERERG1hHYeNFSjBHG4tb/4WloD9InVRxtkICEy7lO+UcO+fHQcT5er7y56xn8KeqLylUv0z//uoabJYOIQnk40pvXEpVsOuYMSsbySdDWP+LyZeBpX+QlmiIiIiIiaQ/sOGg6cw3eJHTBEfH3nixrcekO8Pl6SAcPvK3Hrb/rhD73VOC8iONhYgxmXR6lhRQYS6IIvTIGC23Fs/SYKf7jDmNYDM8ZEYfkXKjD4STJe/on+Vbrjji645ZsKvKOGiYiIiIiaW/sMGlQNQtzvT4sM/A9aM6Ap39Ti6d/LJkGlega9f1+sf+VizJa1EH7sWnsUTyd2w4w+aoTyzhdVmJHeVwtGvHxUgeW9Ve2GMuSGOP+BQWkNtvaOwaVqkIiIiIioubXPoEELCC7Bm5cDM36pNxGa0bsLvtCaBCXjDvUzWyLw+L+3xOBNr9qECpSURSEFKjDRPqrfRMhkTUYVbhnWxXcAQkRERETUDNpl0GB0UJZ9FZb/RX7/AcvLT+MqMc7aKdkfkZlfeRqX/tJfgFGLpzcC/6/ql1D5yxg8/XtVgxE02S9C7/uwfrKp2RQRERERUTNrl0HDHf/bWrvwxZgoVeNwSVAZdKMjs7nvgSdL86Sf9MAfeldhq983MAnmJkha86lDeodon/0iiIiIiIiaT/vtCC37FqhO0N8dBVKS9dGByY7M4h/VF0J+rtpSq4ZlbUI8UhL1X/qUHINbymvwnRqUdm2vxFa1LXoH7BrMEAGMXVBCRERERNRc2m3QsOugyJhfJUvxZR+EGKTYdHi26oGXjWZH6iNrKnC5fIWq3lzpjqs6YvlfTM2RtNeydsQtMgjo3xczLq/CFNdrVI9juQg69G0B3nnnNDCmR3D9KoiIiIiImkFEvaC+B+XLXXtx5ZBBaij8zlbXqG9Ap9gY9a0l6X0LZFMhfyX/u9Z+j6uOdrM2JfqoFHF/qVIDHfGmpYO16q+g/r6DbBplLFv2t/D1dyHMvyEiIiIiak4MGoiIiIiIyFb77dNARERERERBYdBARERERES22mXzJPnGo7bo1DIHoiMj1BARERERUfNgnwYiIiIiIrLF5klERERERGSLQQMREREREdli0EBERERERLYYNBARERERkS0GDUREREREZItBAxERERER2WLQQEREREREthg0EBERERGRLQYNRERERERki0EDERERERHZYtBARERERES2GDQQEREREZEtBg1ERERERGSLQQMREREREdkA/n/AwRrCQO/KsgAAAABJRU5ErkJggg==" style="float: right"/></p><p style="text-align:left;">Here we need to provide some context to explain. The <em>_caseInsensitive</em>&nbsp;variable here is a concurrent dictionary, and the change is a pretty simple optimization to avoid the annoying KeyValuePair overload. Except&hellip; this code is there intentionally, we use it to ensure that the removal operation will only succeed if <em>both</em>&nbsp;the key and the value match. There was an old bug that happened when we removed blindly and the end result was that an updated value was removed. </p><p style="text-align:left;">In this case, we look at the code change from a historical perspective and realize that a modification would reintroduce old (bad) behavior. We added a comment to explain that in detail in the code (and there already was a test to catch it if this happens again). </p><p style="text-align:left;">By far, the most important and critical part of doing code reviews, in my opinion, is not focusing on what <em>is</em>&nbsp;or what <em>was</em>, but on what <em>will </em>be. In other words, when I&rsquo;m looking at a piece of code, I&rsquo;m considering not only what it is doing right now, but also what we&rsquo;ll be doing with it in the future. </p><p style="text-align:left;">Here is a simple example of what I mean, showing a change to a perfectly fine piece of code:</p><p style="text-align:left;"><img src="data:image/png;base64,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kceUOhJM+z68gp+59sHWNehG/C5vBO7Q1708FlPuI3DMK3/D8cUUj2F3AC9MkpaEQsTf0VhPdz3q85al5/D5UvORoI5HfjpaKB7OBt6Y4aEVQpXH0uUpuIaffSIiuogiziv6tdOm3J0o6XpOj1FN0BYt9CsKffL0nvux95GKu8RQbcLzSkRENQMTgFqCCUC4kcdtfoJr8p5Gx7ThXm7glT707OZVW8h9Oq/gacz1csM2ERHRhcIEoJZgAkBEREREwcB7AIiIiIiIwggTACIiIiKiMMIEgIiIiIgojHi9B+CKzh30GBERERERhQq2ABARERERhREmAEREREREYSRoXYCObluL1Z/k4EyXAbjzZ50Qq6f78vnnnyM3NxfHjgXvz+wTERERXQyNGzdG165d8ZOf/ERPIaoJzmLnJ0uQsa0ukn/WF326NAlCC0DJfmzKeAfvfLQRu0+exf6Dh3FSz/Ll/fffx5dffsngn4iIiEKCxDQS20iMQ1RznMThg/tx9uRubPxIxewZm6qWAJws+BLLXn8HH+eqlepp/pCa/8LCQj1GREREFDokxpFYh6jmOYv9uR9XPgHY//VSvLHkc+z0p7rfjXT7ISIiIgpVjHWoJqtkAnAIhTt3B1Trb8VuP0RERBTKGOtQTVbJBKA54jt18OtGX0/kJhkiIiKiUMVYh2qySncBanXNHXjwzp+gUwM9IQByhzwRERFRqGKsQzVZlW4CbtD+egx56D7c3LVVQK0B8nis+Ph4PUZEREQUOiTG4aNAqWaKRauuN1ctATBEt0L3Affhvlt7oEMDtdIWzeBPo8Bdd92F66+/nk1kREREFBIkppHYRmIcopqjAZq1aIXYBh3Q41YVsw/oHrw/BEZERERERDVf1VsAiIiIiIio1mACQEREREQURrx2ASIiIiIiotDjNQHo3rWTHiMiIiIiolDBLkBERERERGGECQARERERURhhAkBEREREFEaYABARERERhREmAEREREREYYQJABERERFRGGECQEREREQURpgAEBERERGFESYARERERERhhAkAEREREVEYYQJARERERBRGmAAQEREREYURJgBERERERGGECQARERERURiJOK/o106bcneie9dOeqzqzp49i1OnTuHMmTMoLi5GaWmZMT0qKhIxMTGoW7cu6tevj9jYWGM6ERERERFVj2pNAE6d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wbN59uMwbl52/p0AdZyvjAec8zPRa+4gY45BlWHeWMf2zZuife4zERERhZyI84p+7bQpdye6d62+XvCnz7r+WFS92Bj9KriOHDuhX9GF1rRxQ/0qdBlPDcofzRthiYiIqNYJ2RaAqCj2broYWO5ERERENVvIRmt1YqqnZYF8Y7kTERER1Wwh2wVIHD95CqWlZXqMqpvU/jdqUF+PEREREVFNFNL9NRrUq8suKReIlLOUNxERERHVbCEdHUdGmjXS9erGMhGoJlKuUr5SzlLeRERERFSzhXQXICIiIiIismOVLRERERFRGGECQEREREQURpgAEBERERGFESYARERERERhhAkAEREREVEYYQJARERERBRGmAAQEREREYURJgBERERERGGECQARERERURhhAkBEREREFEaYABARERERhREmAEREREREYYQJABERERFRGGECQEREREQURpgAEBERERGFkYjzin7ttCl3J7p37aTHgu/02WL9CqgXG6NfVZ+S0jKUqqGs/KESEREREYWEyIgIREVFIloNvoR0C4AE/GfPlaC4pJTBPxERERGFNIl3Je6V+NdX7BvSCUBxMQN/IiIiIgovRiKg4mBvQjYBkG4/DP6JiIiIKBxJHCzxsCchmwBIn38iIiIionDlLR4O2QSAtf9EREREFM68xcMhfQ8AERERERHZMQEgIiIiIgojIft3AKzbICIiIiKqLkePHsXJU6dQfK4YHkLroIiIiEBMnRg0qF8fTZo00VMr5inWZgJARERERFQJxcUlOHDwgPHHtxo1aIi69eoiOjpazw2ukpISI8E4eOiQkQy0bNESMTEVb8tTrM0uQERERERElXDgwAHE1qmD1nGt0aBBA0RGRqGs7Hy1DLLuunXrIr5dO6MVQLZdWUwAiIiIiIgCJN1+zqv/WrRoYXT7uRDPn5RtyLaaNm1qbFv2oTKYABARERERBejEyZO4pHnzauvz74tsU7Yt+1AZTACIiIiIiAJUUlxidMm5WGTbsg+VwQSAiIiIiChAF6Pm311l94EJABERERFRGGECQEREREQURvh3AIiIiIiIArRr13fo2PFSPea/7fk7kTb//+kxz5o3a4r+qTfjx9derad45s8+8A+BEREREREFQWUTgGf+9DIuad4MiQneY+0v/7PB+Pfp3z9m/OtNZRMAdgGqyKqpSL58KrL0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" style="float: right"/></p><p style="text-align:left;">The problem is that the if statement will call <em>InitializeCmd</em>(), but we previously called it <em>using a different condition</em>. We are essentially testing for the same thing using two different methods, and while currently we end up with the same situation, in the future we need to be aware that this may change. </p><p style="text-align:left;">I believe one of the major shifts in my thinking about code reviews came about because I mostly work on RavenDB, and we have kept the project running over a long period of time. Focusing on making sure that we have a sustainable and maintainable code base over the long haul is <em>important. </em>Especially because you need to experience those benefits over time to really appreciate looking at codebase changes from a historical perspective.</p> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/themes/prism.min.css" integrity="sha512-/mZ1FHPkg6EKcxo0fKXF51ak6Cr2ocgDi5ytaTBjsQZIH/RNs6GF6+oId/vPe3eJB836T36nXwVh/WBl/cWT4w==" crossorigin="anonymous" referrerpolicy="no-referrer" />https://www.ayende.com/blog/200577-B/code-review-time-travel?Key=3ec75656-3dca-4436-91a4-85f16cbae154https://www.ayende.com/blog/200577-B/code-review-time-travel?Key=3ec75656-3dca-4436-91a4-85f16cbae154Fri, 19 Jan 2024 12:00:00 GMTMeta Blog: Blogging ergonomics in 2024<p style="text-align:left;">I&#39;ve been writing this blog since 2004. That means I have been doing this for twenty years, which is <em>frankly </em>unbelievable to me. The actual date is sometime in April, so I&rsquo;ll probably do a summary post then about that. </p><p style="text-align:left;">What I want to talk about today is a different aspect. The mechanism and processes I use to write blog posts. A large part of the reason I write blog posts is that it helps me understand and organize my own thoughts. And in order to do that effectively, I have found that I need very little friction in the blogging process. </p><p style="text-align:left;">About a decade ago, Google Reader was shut down, and I&rsquo;m still <em>very</em>&nbsp;bitter about that. It effectively killed a significant portion of the blogging audience&nbsp;and made the ergonomics of reading blogs a lot harder. That also led people to use walled gardens to communicate with others, instead of the decentralized network and feed aggregators. A side effect of that decision is that blogging tools have stopped being a viable thing people spend time or money on.</p><p style="text-align:left;">At the time, I was using Windows Live Writer, which was a high-quality editor and had a rich plugin system. Microsoft discontinued it at some point, it became an open-source project, and even that died. The website is no longer functional and even in terms of <span style="text-decoration:underline;"><a style="color:inherit; href="https://github.com/OpenLiveWriter/OpenLiveWriter"">the GitHub project</a></span>, the last commit was 5 years ago.</p><p style="text-align:left;">I&rsquo;m still using Open Live Writer to write the majority of my blog posts, but given there are no longer any plugins, even something as simple as embedding code in my posts has become an&hellip; annoyance. That kills the ergonomics of blogging for me.</p><p style="text-align:left;">Not a problem, this is Open Source, and I can do that myself. Except&hellip; I really don&rsquo;t have the time to spend on something ancillary like that. I would happily pay (a reasonable amount) for a blogging client, but I&rsquo;m going to assume that I&rsquo;m not part of a large enough group that there is a market for this. </p><p style="text-align:left;">Taking the code snippets example, I can go into the code, figure out what is going on there, and add a &ldquo;code snippet&rdquo; feature. I estimate that would take several days. Alternatively, I can place the code as a GitHub gist and embed it in the page. It is annoying, but far quicker than going to the trouble of figuring that out. </p><p style="text-align:left;">Another issue that bugs me (pun intended) is a problem with copy/paste of images, where taking screenshots using the Snipping Tool doesn&rsquo;t paste into Writer. I need to first paste them into Paint, then into Writer. In this case, I assume that Writer doesn&rsquo;t recognize the clipboard format or something similar. &nbsp;</p><p style="text-align:left;">Finally, it turns out that I&rsquo;m not writing blog posts in the same manner as I used to. It got to the point where I asked people to review my posts before making them public. It turns out that no matter how many times it is corrected, my brain seems unable to discern when to write &ldquo;whether&rdquo; or &ldquo;whatever&rdquo;, for example. At this point I gave up updating <em>that</em>&nbsp;piece of software &#128578;. Even the use of emojis doesn&rsquo;t work properly (Open Live Writer mostly predates a lot of them and breaks the HTML in a weird fashion &#129335;).</p><p style="text-align:left;">In other words, there are several problems in my current workflow, and it has finally reached the point where I need to do something about it. The last requirement, by the way, is the most onerous. Consider the workflow of getting the following fixes to a blog post:</p><ul><li>and we run =&gt; and we ran</li><li>we spend =&gt; we spent</li></ul><p style="text-align:left;">Where is my collaborating editing and the ability to suggest changes with good UX? Improving the ergonomics for the blog has just expanded in scope massively. Now it is a full-fledged publishing platform with modern sensibilities. It&rsquo;s 2024, features like proper spelling and grammar corrections should absolutely be there, no? And what about AI integration? It turns out that predicting text makes the writing process more efficient. Here is what this may look like:</p><p style="text-align:left;"><img src="data:image/png;base64,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" style="float: right"/></p><p style="text-align:left;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAesAAAAXCAYAAAAr1Gd3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABZ1SURBVHhe7Z0JuE1V+8BfTUSlkpJCMmQeKkkppU9KRPyLRs1pLhUyZgihzITIFCLzPIWEzDOZS0IZyw0J+79+r72OfY5z7j3n3qPPvd/+Pc95rr3POnuvaa93XFs6xyA+Pj4+qYz8+fPr340bN+pfH5+0zHnuXx8fHx8fH59zFF9Y+/j4+Pj4nOMkKqxHjRol6dKl07+Wv/76Szp06CCTJ092z4i0b99e8ubNKwsWLHDPJJ9t27bJSy+9JDlz5tR7FyxYUO/Hfb38/fff8tlnn+n3lLvlllukV69ecuLECbfEKTgeNGiQlC5dWi699FK5/PLLpVq1arJixQq3RHh69uwpN910U1zadDZhbKLpe9r74Ycfyh9//KHH/H3kkUf0Y89FIp7jG09++eUXue2227R+ENqmWNroc+5hx+/VV18NewysCw0aN5dNm7e6Z9IOh48ckQ6du0vvfgPdMz7/y8RsWa9atUo+//xzOWImkiVjxoxy8cUXu0fJZ/PmzfLMM8/I3LlzpU6dOjJ48GApW7asNG/eXBo2bKgCGgizN23aVFq0aCHlypWTvn37Sp48eVQYde7cWcsA5Tp27Chvv/225MqVS7p3766/+fnnn+Xxxx+X77//3i0ZDOe7dOlyhuBPzaDI/Pjjj+6Rj4+Pj09qIi5u8Jo1a6qFgzWcEoYOHSq7du2SPn36qHB+8sknpXfv3vLee+/JmDFj5IcfftByy5cvl3Hjxsk777yjFvDzzz+v1jMCeMiQIYGEk02bNsmwYcP0PN+jCLz11ltaBuViwIABcuzYMS1r2b9/v1ry559/vnvG54MPPlBFqkyZMu6Zc5PMmTPL6NGj9cO/fdI+mTJlkratmkm+vDe6Z3x80iYxCWtcrnfccYds2bJFatSooQIaV+TXX3+tbujs2bNruR07dgS5skuUKBHWle0lISFBXeBFihSRokWLumdFf3/nnXfKP//8I/v27dNzixYt0uOKFSvq95A+fXqpXLmy/Prrr7J69Wo999NPP8mePXvU+uZ7y4033qj32bt3b5CHAMsdKx7ef/99/ZsSZs2aJQ8//LBce+21Wk/6g36hfyzWjY2AeeGFF7SsddWvWbPGLXUKfmfL8MG7QD8khnUd4g1B4eHa1m0MeB8mTpyofUwdCSsQXrBeDAh1g3PM2E+bNk3ryTWpD3Xztg04fuONNwLtQrGirVzPhleoAwqUDVVQNppQRSjRuL1ROsqXL6/zeOXKle5ZkQMHDkj9+vUDc5b53K1bt6B+CId3/GgbbeQaXItrWqzLvkmTJqqEXnnllVK9enWdn3hwUFTvvvvuQPufeOKJoPG3bcPjRF8VK1ZMy9KWqVOnah96oe/s2PDh2WA+erHjSDvxTFFvlNpwRDNGto2tW7fWOcQ1uXe4seR61Jv6R2pzNIS6wcdOmCRNW7aVVWvWSvuOXaVu/cby/odNpWeffrLfMx7Acd/+g/V7yvXs3U8WLVmm11u0eKlbKjxHjhyVYSNGSeOPPpZ36zXS3zdr1Va+n/9DYCwCbuy+A/R8kxatteyHTVvK+ElT5Pjx41oO+I23TIs27WXrtp/cb5Mmmrbwl+Mp02fqfSj7zehx+l1y2tPoo1aBuq5es04OHTokvcx3XJfPoKHD9boW79i0+6yL3qO+qQ99gdE0edoM7RvO8/0vO351f3kKjrv06C0fNGym9+UeHTp1CyqXWBtTOzEJaxawdu3ayXXXXSeNGjWSxo0b66Lz+uuvy2uvvaaLHIvKm2++KUuWLNFzuLJLlSqlQpAHOBKXXHKJ9OvXLyBQvGzYsEGFknW1r127Vu97/fXX67EFIZwtWza1qOH+++9Xl/djjz2mxxaENOe53oUXXuieFb33d999p4L6sssuc88mj5kzZ8qzzz4rR48eVdc7Vvy9996rln6DBg2CFBf6DBc+k/2TTz5Rgb5s2TJd8LH0YefOneoZmD59urz88st6zYULF2qfJQZtJMZXtWpVueuuu6R///7aLxba27JlS3nooYe0jjfccIM0a9ZMRowY4ZYIDwszXgr6m5AB1x85cqSOs/VWUHe8H3hBnnrqKRUOCO969eoFCVPuhfekQIECGqqgLxifF198Ma7bcqgPfY+ARHksXry4nkepe/TRR2Xs2LGB8AtzlvlNXZMS2LSFcniF6Avm28CBA+WVV14JaiegNLH4cf8qVapIlixZNFTDmGbNmlXbz/PD+FOn0FDNjBkzdOwR3PZ5Yp5ZxQf4N0ri4cOHtc/5MCYIQxRrL+vXr1dhzTPMGNDucMQyRl999ZV6x1DSvGEn5quFfmJOXHXVVYHroUiFa3Os0O6hw0dKZvMMV61cSfLnzaPCfPjIMYHQVoJ5/voPGio/btwkxYoWloceqCAHDh6UUWMnyD8eIRoOhGz/QUNk6fKVkj9/Xnm0elW5u2wZvfaY8ZNkxapghQOhO2XaTClZvJhUfvB+ufSSTDJrzveyYOFit4TItJmz9N6ZMmaUalUekhty5ZSRo8fLHweTzrWIpS3HzDo6c9Z3UrhQQflP+XJStEihZLfnlpIlpMJ99+jcom87d++t/65S6QHJmye3LF+xSiZOmeb+6hR2bC7PnNmUqyjXXJ1VZn83T4UwysW95crKnWVKm2f1gAz5+httG+w0zxZKwt59+7VM9apVpFCBm2T3b7/LgMHDtL2WcG1ME5iFIyJm8UWl0r+W+fPnO0ZjDjrnxX5vFgX3jOMYgeXUrl3bqVWrlmMWTPdsdBjB65QtW9apVKmSYyxrPWcWVMcsRo6xXPTYsn37dscsNvp9JE6ePOmYxcu54oorHGNFuGcdxyyOjlm8nR49eugx7aMdtCc5NGzY0DHC2dmyZYt7xnHMou+YxU3rSF3B9rFRbLSfLEYpCrp/165dHSMYHSPs9RjoDyMko6onfWIsHOfgwYN6zF+OjTXlGAGg58AoRo5RyhwjPLSvILQuHFPntm3bBsrwlzZ42xapzjVq1AiaV+HG01hdTqFChZxvvvnGPXMmdrypD9g22XZ6j7dt2+bUrFnTMcLGmTt3rpa3GIHilCxZ0jGWtnvmFEaxcYwC6MyePds9cyZ2/GiTnZ/Ab71zzNa1QoUKzu7du/UcLF26VOsUOv7UhToxX5g3ti2h/fnbb785DzzwQOD54MO/jQB3EhIS3FKnnsHnnnsu6Dmy49i3b189Toxoxsi2MbSP161bF9QWO8eaNGniGEHhljrdltA22+c59DhfvnxO9uzZnfqNPnI2bjr1nI0ZP9F554OGzuhxE4PmZp9+A50mLdo4ZrHXc5OmTnfea9DEmbdgoR7DIdNfn3burr9fuGiJe/ZMfvp5u/NRq0/0Xl7Wrd/gGKsvcP6vw4ed9p26af3Wb9io52DPnr1O05ZtHGOF6rERTE7z1u303tTBMnfeAsdYmYFykYi2LfzleMjXIwN9AyltjxG2el362BhVeu7PQ4ec1u07ah2OHDmi58KNjRHCjrHQHWPFO7t2/6bnwFj5jrG6nc1btunxjG9nazk7zpYRo8YGjX+kNqYF4hKz9oKlgGX8xRdfqNsNqwQXNBYdrj6zgLklkwYrDCsXSxjNG2saLZBrnnfeeWrJx4Jpr3z55Zfy6aefytNPP61aPGBxffzxx+oux5UZD7jet99+q9a+5aKLLtIXOeAlQMP0EuqqN8JRww1Ya2irZlFXS/C+++5zS0jAlZoSCFHgMbFcc801kiNHDvn999/lzz//dM+eCe0i+c+OAX+xyulLxo32GeEets6hng7CJ4Q2sPAIYwDWPx4Uwi0phf7De7B48WK1bKm3xQgA9QJh4ZE8iefDfugD5hp1Swy8QliOtM1yzz33iBEmQdYkMK70sYVr41Ghnd7xJxSEi5i6ER6y3H777WIEmnskcvXVV2s5rFLmC5YyiYTE7MePHx9oC256vEh4qfhYqA+hj6SIZYyoD2EVixHemu9AWbwauMS3bt2q9cFit3XkeaEPCE8Ywe3+OnZ4zgoWyB80N7NmzSLHzFhisTEfzOJu1qorg6yuSzJlkjKlw3sWvOTKmUOaNaqnVruXq42VmCFDBjl6NNgTw31yeryAGTNlVNe/EWjqWt65a7eZAwlqqVIHS/FiRcy8zOIehSc5bcmTO1fQ2pnS9lyc4dS8LVyogFxwwQX6b+5/pVnrjbjUjyV0bC66KL1Zy8+Xa7NlUyvbkjOHuT6/PXlSj++7t5y0atbojNyEnNdfJydMGfrBS2gb0wJxF9YsUEaD1wWDh5YFHJccD2NiMetQWHRw+7Kw4O6zCyyTgQeaQUT4RgsuHYR03bp1tT4s3lyHa+CSY3HA/ehdMFMK18Z9TUwYtyeLGm1hcUaoebGTPBzE1REqxPVC3fO4TlNS5+QoPcBv+G0keHgYb7LwUeC8oAwgJCwoTrfeeqvGcwltoEAQAmAOxINJkyZpuADhi9LjhbFAISK8QD0QuvaDaxvBZCxGt3R4EL42X8OCwso5FJdQV7gX7s8YElryQv9y3dC5QtghNHmOvsQVTWiCeYwgZFeEty18SNbkewRmrMQyRjzz3jnFvzlH/9OXuMWJ55NzEVpHQhH01+7du91fxw53Pi9d5Ll5/PgJnZ8IE69whKvMXE1vBEo0cA1jlcqcufPly4FDpFO3njpef/x5yC1xinQ8J4k8YnZdvMoIQS/UI2MSu2zi1RZIaXvO96wHjLl3DlgijU1oee+1vCQk/KUxb2LS3T7vIyNGj1MDLhbZkloJ3yMpgA4n/kWiiE2aQZPmQaxdu/YZQiocc+bMUeuLiUIc9cEHH3S/OQWCjQWW771gzWG1IiC8MJDE20h8IY6OcLZCj8WUxZw4GYqGnTQIViwVEpFsIl0sYIWgYLAIk1BEcg73xOKKJwhqb9z9XMF6QKKBhZy4NomB5ELQph49eqiyFxpjTQ4oB8Sh8aTgWWE3QSh16tRR5Srcp2vXrm6p2GFXQWJKTbzAuvcqfCNHjgzbFp4ZlNVYiccY0Re2jigYeF7C1REFvVSE2Hk8OHHyhBx3Y9fJgbk9dPgoadCkhXTu3ksTo3YZ5SJP7hvUEo0X3v6KRErbAv9We1LCnr37NOmMpDHi83PnLTDKxT/G0j6t9Kd1ztoqgmCqVauWPsgkfLVq1UqFcKhbMBSSvMgqRsjhIkNQhlK4cOGAu9ULFgXnvK5nymExUw+SXXBPey1RXJckEqFYeD8sSNShXbt2gUS6aEE5wIpHcSCDGiuChCEEhX2fcSyQJIalhoIS6pqmvWTSn2uw954+w4ra52bxW/A2hLo5UZDI0GeeMEdQnnLnzq2WVmjIIFZw85MNTcIXCxPC1yoS9C31xNVMuCU5YAni+fDCMe2kDbg8I8F3WLrWtWxBaNFHjDseFQv3Cu0PlEoUVD6UZ956M93jRbRjhAXthbaQxIenAcUJjwF1tomg/zbWYiWD2iYwWThHglJirFy9VpYsWy63lbpFWjdvIm1bNpWG9epKxQrljYCNfUll+xmQPOUFFzmu8sRIaVsg3u2JN8yfyVOnm7X8gDxRs4Z0aGPW8Y8aS923XpOb8uV1S6V94j4SaPQ80MTLLAhH74ITCR5+YtO42LBE0ebDgQDHmvRuWWHxnTBhgi5Y/N6eIzuZt6116tRJs1NZcLzwoGBpoFh4PzfffLNqlVjHfG8fqGhAQWDxL1mypG51sfdE2CalrISDOI/dasR2KQv3wdo5F0FY2zqTGW9hTAgLWAUDRYasYDKVva4s3L1Yi/GEeUPmNHOTeQrEqomv4h739i0wBxFGgyJsZ7Ig5Jl7VgFgTnIPXL54lhKDOiGwqY/9PWDBEsMtVKiQxqUteGy8rnzrGUKBZQsZc588Adz6XmHItfF4MSaxhhdiHaN58+YF3Zu4O7sOUJoQ1MTd+TdZ615PG/+uVq2a7ixIjqs+WjR3JF8eo0Tu1y1HFhS5ZctXBtaUSOwwihUWb8niRY2yd8ry5DfrN2wySsvpraDRkuP66zQ7etGSpUECl7pRx8RIaVsg3u2JN0eOHpXfjWVNrLxwwYIBT9Xffx+TNeviEypLDSTuYwkDizBCjBg0sNfZK8h4CIlR8iINBBOCm4UHy5atSywW4WARIPkHa4Jr2P3OXnAns7hxTZJssF6xSEhemTJlim5r4WUquLMBITF8+HCNsbGA4HbzgpaPW5w2RQsLDC5yFtdIyV1YaljQtBlFhTZj9dNnLEjJcS1xT5QTth7hxiUBCQ8A7fbGfyPBoop1z5aaChUqRFSE4gmhDAQgc4EF29aZf1tIOEQxwlojLmpDHgh05g0JTbGMT2KgNHEP+pE3ujEu9AMhGurJXODFOyhYCEWSsphvbGtLCrZqIWCw4Gkfx4R9vNvkwoFChyeJ+U6cFkGFAOb31JctXbTfxr2xSNnaRz4HzxnlmFPkYPAc8uE7tsyxNQxvAmOPwjp79mx9Pkj4ioVox8h6UPAm8awi4MkVoa+JyxNqoE08nyjEtJk6Ul+EC88UigSKNeUTi/WnlDtvL63CbfS4ibJ56zbJZdaCBQsXqbs1KXKasnPn/SDDho+SMreXMtZtelm+cpX8unPXGcZANFx22aW6HYmtVl2695LSxsLFyl6ybEVgq1lipKQtEO/2xJuLzXpJ8hlbwfoOGCwlihWVQwmHZPGS5arcnAt1/DeI2bLmQUdI8UpQrOB1605rc8DiRyY4ixwLCQshlgnChoc20pulyGYlto0Wzz5N4sqhH+v2Rptk4WA/MNY4ix2LWJs2beTdd98NDB7Z6CyALJ64PkOvhwDHVR1vWDDbtm2rbcaVz+KKq5B9ydQDxYT6xgIKAIKW/kQJ4FooArjpo4F4LWOD4GR8/g2wCIlrohwQM6bOeFgQLF54HSxjh+JFAiAf3P3sIEhptnsouGKxMEnI4u13WBBYpCgRCA3CMAgZrFX6mj6PJgTCeCNwaCNWLaETciS8IZdwMFeZsyR/IeypG3MEBRRlwZu5Dghz5jvPFAleCDXq7i3HGwXxCtAuBCL9Sd+SdOZ9PmIhljGifgh0kiqZn3guWAuoD3B/ckiYh8Rl2fFB2AnrjuuF7hY4GyAgX3zuabkxdy5ZtXqtvrCDfdkV/1PeLRGZEsWKSLUqleT4ieMyeeoMmTB5qlmTLpQ6Lz6nWcysYaEu6aQgc/vpJx6TkycdmThluu5tRmhnu+a0VyUSKWkLnI32xBPmy/9Ve1huLlFMtv+ywyg142X+gkWa/f78M0+qMN8e8gKVtIj//1knAxZmLOd4C5L/FfB2oOixgHu3+KRGovG0xAOsTFz4gEA7F1+nShImfYFnDEXobHM2/j9rXlTCi0Cer/1kqo+HpqW2+JzFBLO0io07h25H8jkTLD/CJN5MemKnJBoSKw59A52Pz78Fr8Js076j7Nt/+hWkeEbWrvtRMmRIL1muiP59EP9t0lJbfCLjC+sYIbmH2CtJMj6Jw4teeNEIblHcyVjSxDxx2+KW513UPj7/DYoUKqjCrdcXX8rMWXN0b3HXnn1k/YaNcnOJ4prMlFpIS23xiYwvrGOEBCK2gCUVi/QRjVvisgVi5cRjySHgXdDJjZ36+MQD4rTEiIEYMXFe3iJWvWplfWd1apqbaaktPpHxY9Y+Pj6pErw0QLKdj09axxfWPj4+Pj4+5zi+G9zHx8fHx+ecRuT/Adho3YNkKBs+AAAAAElFTkSuQmCC" style="float: right"/></p><p style="text-align:left;">At this stage, this isn&rsquo;t just a few minor fixes. I should mention that for the past decade and a half or so, I stopped considering myself as someone who can do UI in any meaningful manner. I find that the &lt;table/&gt; tag, which used to be my old reliable method, is not recommended now, for some reason.</p><p style="text-align:left;">This&hellip; kind of sucks. I want to upgrade my process by a couple of decades, but I don&rsquo;t want to pay the price for that. If only there was an easier way to do that.</p><p style="text-align:left;">I started using Google Docs to edit my blog posts, then pasting them into Live Writer or directly to the blog (using a Rich Text Box with an editor from&hellip; a decade ago). I had to check the source code for this, by the way. The entire experience is decidedly Developer UX. Then I had a thought, I already have a pretty good process of writing the blog posts in Google Docs, right? It handles rich text editing and management much better than the editor in the blog. There are also options for things like proper workflows. For example, someone can go over my drafts and make comments or suggestions.</p><p style="text-align:left;">The only thing that I need is to put both of those together. I have to admit that I spent quite some time just trying to figure out how to <em>get</em>&nbsp;the document from Google Docs using code. The authentication hurdles are&hellip; significant to someone who isn&rsquo;t aware of how it all plugs together. Once I got that done, I got my publishing platform with modern features. Here is what the end result looks like:</p><p style="text-align:left;"><hr/><pre class='line-numbers language-javascript><code class='line-numbers language-javascript'><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">PublishingPlatform</span> <span class="token punctuation">{</span> <span class="token keyword">private</span> readonly DocsService GoogleDocs<span class="token punctuation">;</span> <span class="token keyword">private</span> readonly DriveService GoogleDrive<span class="token punctuation">;</span> <span class="token keyword">private</span> readonly Client _blogClient<span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token function">PublishingPlatform</span><span class="token punctuation">(</span><span class="token parameter">string googleConfigPath<span class="token punctuation">,</span> string blogUser<span class="token punctuation">,</span> string blogPassword</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> blogInfo <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MetaWeblogClient<span class="token punctuation">.</span>BlogConnectionInfo</span><span class="token punctuation">(</span> <span class="token string">"https://ayende.com/blog"</span><span class="token punctuation">,</span> <span class="token string">"https://ayende.com/blog/Services/MetaWeblogAPI.ashx"</span><span class="token punctuation">,</span> <span class="token string">"ayende.com"</span><span class="token punctuation">,</span> blogUser<span class="token punctuation">,</span> blogPassword<span class="token punctuation">)</span><span class="token punctuation">;</span> _blogClient <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MetaWeblogClient<span class="token punctuation">.</span>Client</span><span class="token punctuation">(</span>blogInfo<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> initializer <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BaseClientService<span class="token punctuation">.</span>Initializer</span> <span class="token punctuation">{</span> HttpClientInitializer <span class="token operator">=</span> GoogleWebAuthorizationBroker<span class="token punctuation">.</span><span class="token function">AuthorizeAsync</span><span class="token punctuation">(</span> GoogleClientSecrets<span class="token punctuation">.</span><span class="token function">FromFile</span><span class="token punctuation">(</span>googleConfigPath<span class="token punctuation">)</span><span class="token punctuation">.</span>Secrets<span class="token punctuation">,</span> <span class="token keyword">new</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span> DocsService<span class="token punctuation">.</span>Scope<span class="token punctuation">.</span>Documents<span class="token punctuation">,</span> DriveService<span class="token punctuation">.</span>Scope<span class="token punctuation">.</span>DriveReadonly <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token string">"user"</span><span class="token punctuation">,</span> CancellationToken<span class="token punctuation">.</span>None<span class="token punctuation">,</span> <span class="token keyword">new</span> <span class="token class-name">FileDataStore</span><span class="token punctuation">(</span><span class="token string">"blog.ayende.com"</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">.</span>Result <span class="token punctuation">}</span><span class="token punctuation">;</span> GoogleDocs <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DocsService</span><span class="token punctuation">(</span>initializer<span class="token punctuation">)</span><span class="token punctuation">;</span> GoogleDrive <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DriveService</span><span class="token punctuation">(</span>initializer<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">Publish</span><span class="token punctuation">(</span><span class="token parameter">string documentId</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> using <span class="token keyword">var</span> file <span class="token operator">=</span> GoogleDrive<span class="token punctuation">.</span>Files<span class="token punctuation">.</span><span class="token function">Export</span><span class="token punctuation">(</span>documentId<span class="token punctuation">,</span> <span class="token string">"application/zip"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ExecuteAsStream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> zip <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ZipArchive</span><span class="token punctuation">(</span>file<span class="token punctuation">,</span> ZipArchiveMode<span class="token punctuation">.</span>Read<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> doc <span class="token operator">=</span> GoogleDocs<span class="token punctuation">.</span>Documents<span class="token punctuation">.</span><span class="token function">Get</span><span class="token punctuation">(</span>documentId<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">Execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> title <span class="token operator">=</span> doc<span class="token punctuation">.</span>Title<span class="token punctuation">;</span> <span class="token keyword">var</span> htmlFile <span class="token operator">=</span> zip<span class="token punctuation">.</span>Entries<span class="token punctuation">.</span><span class="token function">First</span><span class="token punctuation">(</span><span class="token parameter">e</span> <span class="token operator">=></span> Path<span class="token punctuation">.</span><span class="token function">GetExtension</span><span class="token punctuation">(</span>e<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToLower</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">".html"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> using <span class="token keyword">var</span> stream <span class="token operator">=</span> htmlFile<span class="token punctuation">.</span><span class="token function">Open</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> htmlDoc <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HtmlDocument</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> htmlDoc<span class="token punctuation">.</span><span class="token function">Load</span><span class="token punctuation">(</span>stream<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> body <span class="token operator">=</span> htmlDoc<span class="token punctuation">.</span>DocumentNode<span class="token punctuation">.</span><span class="token function">SelectSingleNode</span><span class="token punctuation">(</span><span class="token string">"//body"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> <span class="token punctuation">(</span>postId<span class="token punctuation">,</span> tags<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">ReadPostIdAndTags</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">UpdateLinks</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">StripCodeHeader</span><span class="token punctuation">(</span>body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">UploadImages</span><span class="token punctuation">(</span>zip<span class="token punctuation">,</span> body<span class="token punctuation">,</span> <span class="token function">GenerateSlug</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> string post <span class="token operator">=</span> <span class="token function">GetPostContents</span><span class="token punctuation">(</span>htmlDoc<span class="token punctuation">,</span> body<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>postId <span class="token operator">!=</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> _blogClient<span class="token punctuation">.</span><span class="token function">EditPost</span><span class="token punctuation">(</span>postId<span class="token punctuation">,</span> title<span class="token punctuation">,</span> post<span class="token punctuation">,</span> tags<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> postId <span class="token operator">=</span> _blogClient<span class="token punctuation">.</span><span class="token function">NewPost</span><span class="token punctuation">(</span>title<span class="token punctuation">,</span> post<span class="token punctuation">,</span> tags<span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token keyword">null</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> update <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">BatchUpdateDocumentRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> update<span class="token punctuation">.</span>Requests <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token keyword">new</span> <span class="token class-name">Request</span> <span class="token punctuation">{</span> InsertText <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">InsertTextRequest</span> <span class="token punctuation">{</span> Text <span class="token operator">=</span> $<span class="token string">"PostId: {postId}\r\n"</span><span class="token punctuation">,</span> Location <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Location</span> <span class="token punctuation">{</span> Index <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">}</span><span class="token punctuation">]</span><span class="token punctuation">;</span> GoogleDocs<span class="token punctuation">.</span>Documents<span class="token punctuation">.</span><span class="token function">BatchUpdate</span><span class="token punctuation">(</span>update<span class="token punctuation">,</span> documentId<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">Execute</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">StripCodeHeader</span><span class="token punctuation">(</span><span class="token parameter">HtmlNode body</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">foreach</span><span class="token punctuation">(</span><span class="token keyword">var</span> remove <span class="token keyword">in</span> body<span class="token punctuation">.</span><span class="token function">SelectNodes</span><span class="token punctuation">(</span><span class="token string">"//span[text()='&amp;#60419;']"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> remove<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token keyword">var</span> remove <span class="token keyword">in</span> body<span class="token punctuation">.</span><span class="token function">SelectNodes</span><span class="token punctuation">(</span><span class="token string">"//span[text()='&amp;#60418;']"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> remove<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> string <span class="token function">GetPostContents</span><span class="token punctuation">(</span><span class="token parameter">HtmlDocument htmlDoc<span class="token punctuation">,</span> HtmlNode body</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// we use the @scope element to ensure that the document style doesn't "leak" outside</span> <span class="token keyword">var</span> style <span class="token operator">=</span> htmlDoc<span class="token punctuation">.</span>DocumentNode<span class="token punctuation">.</span><span class="token function">SelectSingleNode</span><span class="token punctuation">(</span><span class="token string">"//head/style[@type='text/css']"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>InnerText<span class="token punctuation">;</span> <span class="token keyword">var</span> post <span class="token operator">=</span> <span class="token string">"&lt;style>@scope {"</span> <span class="token operator">+</span> style <span class="token operator">+</span> <span class="token string">"}&lt;/style> "</span> <span class="token operator">+</span> body<span class="token punctuation">.</span>InnerHtml<span class="token punctuation">;</span> <span class="token keyword">return</span> post<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">UpdateLinks</span><span class="token punctuation">(</span><span class="token parameter">HtmlNode body</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Google Docs put a redirect like: https://www.google.com/url?q=ACTUAL_URL</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token keyword">var</span> link <span class="token keyword">in</span> body<span class="token punctuation">.</span><span class="token function">SelectNodes</span><span class="token punctuation">(</span><span class="token string">"//a[@href]"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> href <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Uri</span><span class="token punctuation">(</span>link<span class="token punctuation">.</span>Attributes<span class="token punctuation">[</span><span class="token string">"href"</span><span class="token punctuation">]</span><span class="token punctuation">.</span>Value<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> url <span class="token operator">=</span> HttpUtility<span class="token punctuation">.</span><span class="token function">ParseQueryString</span><span class="token punctuation">(</span>href<span class="token punctuation">.</span>Query<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token string">"q"</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>url <span class="token operator">!=</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> link<span class="token punctuation">.</span>Attributes<span class="token punctuation">[</span><span class="token string">"href"</span><span class="token punctuation">]</span><span class="token punctuation">.</span>Value <span class="token operator">=</span> url<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token punctuation">(</span>string<span class="token operator">?</span> postId<span class="token punctuation">,</span> List<span class="token operator">&lt;</span>string<span class="token operator">></span> tags<span class="token punctuation">)</span> <span class="token function">ReadPostIdAndTags</span><span class="token punctuation">(</span><span class="token parameter">HtmlNode body</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> string<span class="token operator">?</span> postId <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span> <span class="token keyword">var</span> tags <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">List</span><span class="token operator">&lt;</span>string<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token keyword">var</span> span <span class="token keyword">in</span> body<span class="token punctuation">.</span><span class="token function">SelectNodes</span><span class="token punctuation">(</span><span class="token string">"//span"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> text <span class="token operator">=</span> span<span class="token punctuation">.</span>InnerText<span class="token punctuation">.</span><span class="token function">Trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">const</span> string TagsPrefix <span class="token operator">=</span> <span class="token string">"Tags:"</span><span class="token punctuation">;</span> <span class="token keyword">const</span> string PostIdPrefix <span class="token operator">=</span> <span class="token string">"PostId:"</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>text<span class="token punctuation">.</span><span class="token function">StartsWith</span><span class="token punctuation">(</span>TagsPrefix<span class="token punctuation">,</span> StringComparison<span class="token punctuation">.</span>OrdinalIgnoreCase<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> tags<span class="token punctuation">.</span><span class="token function">AddRange</span><span class="token punctuation">(</span>text<span class="token punctuation">.</span><span class="token function">Substring</span><span class="token punctuation">(</span>TagsPrefix<span class="token punctuation">.</span>Length<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">Split</span><span class="token punctuation">(</span><span class="token string">","</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">RemoveElement</span><span class="token punctuation">(</span>span<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>text<span class="token punctuation">.</span><span class="token function">StartsWith</span><span class="token punctuation">(</span>PostIdPrefix<span class="token punctuation">,</span> StringComparison<span class="token punctuation">.</span>OrdinalIgnoreCase<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> postId <span class="token operator">=</span> text<span class="token punctuation">.</span><span class="token function">Substring</span><span class="token punctuation">(</span>PostIdPrefix<span class="token punctuation">.</span>Length<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">Trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">RemoveElement</span><span class="token punctuation">(</span>span<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token comment">// after we removed post id &amp; tags, trim the empty lines</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>body<span class="token punctuation">.</span>FirstChild<span class="token punctuation">.</span>InnerText<span class="token punctuation">.</span><span class="token function">Trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span> is <span class="token string">"&amp;nbsp;"</span> or <span class="token string">""</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> body<span class="token punctuation">.</span><span class="token function">RemoveChild</span><span class="token punctuation">(</span>body<span class="token punctuation">.</span>FirstChild<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token punctuation">(</span>postId<span class="token punctuation">,</span> tags<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">RemoveElement</span><span class="token punctuation">(</span><span class="token parameter">HtmlNode element</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">do</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> parent <span class="token operator">=</span> element<span class="token punctuation">.</span>ParentNode<span class="token punctuation">;</span> parent<span class="token punctuation">.</span><span class="token function">RemoveChild</span><span class="token punctuation">(</span>element<span class="token punctuation">)</span><span class="token punctuation">;</span> element <span class="token operator">=</span> parent<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">while</span> <span class="token punctuation">(</span>element<span class="token operator">?.</span>ChildNodes<span class="token operator">?.</span>Count <span class="token operator">==</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">UploadImages</span><span class="token punctuation">(</span><span class="token parameter">ZipArchive zip<span class="token punctuation">,</span> HtmlNode body<span class="token punctuation">,</span> string slug</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> mapping <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Dictionary</span><span class="token operator">&lt;</span>string<span class="token punctuation">,</span> string<span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token keyword">var</span> image <span class="token keyword">in</span> zip<span class="token punctuation">.</span>Entries<span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span><span class="token parameter">x</span> <span class="token operator">=></span> Path<span class="token punctuation">.</span><span class="token function">GetDirectoryName</span><span class="token punctuation">(</span>x<span class="token punctuation">.</span>FullName<span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">"images"</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> type <span class="token operator">=</span> Path<span class="token punctuation">.</span><span class="token function">GetExtension</span><span class="token punctuation">(</span>image<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToLower</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">switch</span> <span class="token punctuation">{</span> <span class="token string">".png"</span> <span class="token operator">=></span> <span class="token string">"image/png"</span><span class="token punctuation">,</span> <span class="token string">".jpg"</span> or <span class="token string">"jpeg"</span> <span class="token operator">=></span> <span class="token string">"image/jpg"</span><span class="token punctuation">,</span> <span class="token parameter">_</span> <span class="token operator">=></span> <span class="token string">"application/octet-stream"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span> using <span class="token keyword">var</span> contents <span class="token operator">=</span> image<span class="token punctuation">.</span><span class="token function">Open</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> ms <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">MemoryStream</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> contents<span class="token punctuation">.</span><span class="token function">CopyTo</span><span class="token punctuation">(</span>ms<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> bytes <span class="token operator">=</span> ms<span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">var</span> result <span class="token operator">=</span> _blogClient<span class="token punctuation">.</span><span class="token function">NewMediaObject</span><span class="token punctuation">(</span>slug <span class="token operator">+</span> <span class="token string">"/"</span> <span class="token operator">+</span> Path<span class="token punctuation">.</span><span class="token function">GetFileName</span><span class="token punctuation">(</span>image<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">,</span> type<span class="token punctuation">,</span> bytes<span class="token punctuation">)</span><span class="token punctuation">;</span> mapping<span class="token punctuation">[</span>image<span class="token punctuation">.</span>FullName<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">UriBuilder</span> <span class="token punctuation">{</span> Path <span class="token operator">=</span> result<span class="token punctuation">.</span><span class="token constant">URL</span> <span class="token punctuation">}</span><span class="token punctuation">.</span>Uri<span class="token punctuation">.</span>AbsolutePath<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token keyword">var</span> img <span class="token keyword">in</span> body<span class="token punctuation">.</span><span class="token function">SelectNodes</span><span class="token punctuation">(</span><span class="token string">"//img[@src]"</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>mapping<span class="token punctuation">.</span><span class="token function">TryGetValue</span><span class="token punctuation">(</span>img<span class="token punctuation">.</span>Attributes<span class="token punctuation">[</span><span class="token string">"src"</span><span class="token punctuation">]</span><span class="token punctuation">.</span>Value<span class="token punctuation">,</span> out <span class="token keyword">var</span> path<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> img<span class="token punctuation">.</span>Attributes<span class="token punctuation">[</span><span class="token string">"src"</span><span class="token punctuation">]</span><span class="token punctuation">.</span>Value <span class="token operator">=</span> path<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">private</span> <span class="token keyword">static</span> string <span class="token function">GenerateSlug</span><span class="token punctuation">(</span><span class="token parameter">string title</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> slug <span class="token operator">=</span> title<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">foreach</span> <span class="token punctuation">(</span><span class="token parameter"><span class="token keyword">var</span> ch <span class="token keyword">in</span> Path<span class="token punctuation">.</span><span class="token function">GetInvalidFileNameChars</span><span class="token punctuation">(</span><span class="token punctuation">)</span></span><span class="token punctuation">)</span> <span class="token punctuation">{</span> slug <span class="token operator">=</span> slug<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span>ch<span class="token punctuation">,</span> <span class="token string">'-'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> slug<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span></code></pre><hr/></p><p style="text-align:left;">You&rsquo;ll probably not appreciate this, but the fact that I can just push code like that into the document and get it with proper formatting easily is a major lifestyle improvement from my point of view. </p><p style="text-align:left;">The code works with the document in two ways. First, in the Document DOM (which is quite complex), it extracts the title of the blog post and afterward updates it with the document ID. But the core of this code is to extract the document as a zip file, grab everything from there, and push that to the blog. I do some editing for the HTML to get everything set up properly, mostly editing the links and uploading the images. There is also some stuff happening with CSS scopes that I frankly don&rsquo;t understand. I <em>think</em>&nbsp;I got it right, which is fine for now.</p><p style="text-align:left;">This cost me a couple of evenings, and it was <em>fun</em>. Nothing earth-shattering, I&rsquo;ll admit. But it&rsquo;s the first time in a while that I actually wrote a piece of code that was immediately useful. My blogging queue is rather full, and I hope that with this new process it will be easier to push the ideas out of my head and to the blog.</p><p style="text-align:left;">And with that, it is now 01:26 AM, and I&rsquo;m going to call it a night &#128578;.</p><p style="text-align:left;">And as a final thought, I had just made several changes to the post after publication, and it went <em>smoothly</em>. I think that I like it.</p> <p><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/9000.0.1/themes/prism.min.css" integrity="sha512-/mZ1FHPkg6EKcxo0fKXF51ak6Cr2ocgDi5ytaTBjsQZIH/RNs6GF6+oId/vPe3eJB836T36nXwVh/WBl/cWT4w==" crossorigin="anonymous" referrerpolicy="no-referrer" /></p> https://www.ayende.com/blog/200521-B/meta-blog-blogging-ergonomics-in-2024?Key=f8115b05-cf22-4270-bec0-9fe3831947eehttps://www.ayende.com/blog/200521-B/meta-blog-blogging-ergonomics-in-2024?Key=f8115b05-cf22-4270-bec0-9fe3831947eeWed, 17 Jan 2024 12:00:00 GMTI was working on the 2024 budget numbers, and…<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/I-was-working-on-the-2024-budget-numbers_123A5/Designer.jpg"><img style="border: 0px currentcolor; float: right; display: inline; background-image: none;" title="Designer" src="https://ayende.com/blog/Images/Open-Live-Writer/I-was-working-on-the-2024-budget-numbers_123A5/Designer_thumb.jpg" alt="Designer" width="240" height="240" align="right" border="0" /></a></p> <p>Today I had a meeting to go over the 2024 budget, and we ran into one of the most important line times. Our coffee budget.</p> <p>You know the old adage about: Coders are turning Coffee into Code, right?</p> <p>Certainly true in our case, in 2023 we spent a large 5-figure sum on coffee alone. And 2024 is shaping up to be even more expensive.</p> <p>Happy new year!</p>https://www.ayende.com/blog/200385-A/i-was-working-on-the-2024-budget-numbers-and?Key=95522f4c-9eaa-451a-afbe-ff43b00c5613https://www.ayende.com/blog/200385-A/i-was-working-on-the-2024-budget-numbers-and?Key=95522f4c-9eaa-451a-afbe-ff43b00c5613Sun, 31 Dec 2023 12:00:00 GMTLearning over the holidays: Yet Another Bug Tracker sample app<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/f9e68b110bd8_C834/1_2.jpg"><img width="227" height="360" title="1" align="right" style="border: 0px currentcolor; border-image: none; float: right; display: inline; background-image: none;" alt="1" src="https://ayende.com/blog/Images/Open-Live-Writer/f9e68b110bd8_C834/1_thumb.jpg" border="0"></a><p>If you are reading this blog, I assume that you are a like-minded person. My idea of relaxation is to sit and write code. Hopefully on something that I’m not familiar with. I have <a href="https://ayende.com/blog/posts/series/196449-A/badly-implementing-encryption">many such blog post series</a> covering topics I care about. It’s my idea of meditation.<p>For the end of 2023, I thought that we could do something similar but on a broader scale. A while ago <a href="https://alex-klaus.com/">Alex Klaus</a> wrote a <a href="https://ravendb.net/yabt-series">walkthrough</a> on how to build a complete application from scratch using modern best practices (and RavenDB). We refreshed the code and made it widely available, offering you something fun , educational, and productive to engage with.<p>The system is a bug tracker (allowing us to focus on the architecture rather than domain concerns), and you can play with <a href="https://yabt.ravendb.net/">a deployed version live</a>. The <a href="https://github.com/ravendb/samples-yabt">code is available</a> under the MIT license, and we’ll be very happy to receive any suggested improvements.<p>Topics that are covered:<ol><li><p><a href="https://ravendb.net/articles/building-application-with-net-core-and-ravendb-nosql-database">Building an enterprise application with the .NET and RavenDB</a></p><li><p><a href="https://ravendb.net/articles/nosql-data-model-through-ddd-prism">Non-Relational Data Modeling Through Domain Driven Design Prism</a></p><li><p><a href="https://ravendb.net/articles/hidden-side-of-document-ids-in-ravendb">Hidden side of document IDs in RavenDB</a></p><li><p><a href="https://ravendb.net/articles/dynamic-fields-for-indexing">Dynamic Fields for Indexing</a></p><li><p><a href="https://ravendb.net/articles/entity-relationships-in-nosql">Entity Relationships in non-relational database (one-to-many, many-to-many)</a></p><li><p><a href="https://ravendb.net/articles/nosql-multi-tenant-database">Multi-tenant database in NoSQL</a></p><li><p><a href="https://ravendb.net/articles/database-integration-testing-the-secret-recipe">Database Integration Testing – The Secret Recipe</a></p></li></ol><p>As usual, I would love any feedback you have to offer.</p>https://www.ayende.com/blog/200353-B/learning-over-the-holidays-yet-another-bug-tracker-sample-app?Key=b129183e-6820-4c9f-8d4e-135536d35adehttps://www.ayende.com/blog/200353-B/learning-over-the-holidays-yet-another-bug-tracker-sample-app?Key=b129183e-6820-4c9f-8d4e-135536d35adeFri, 22 Dec 2023 12:00:00 GMTThe role of GitHub in paying for Open Source Software<p>I have been doing Open Source work for just under twenty years at this point. I have been paying my mortgage from Open Source software for about 15.&nbsp; I&rsquo;m stating that to explain that I have spent quite a lot of time struggling with the inherent tension between having an Open Source project and getting paid.</p> <p>I <a href="https://ayende.com/blog/posts/series/192417-A/open-source-money">wrote about it</a> a <a href="https://ayende.com/blog/posts/series/186113-A/making-money-from-open-source-software">few times in the past</a>. It is not a trivial problem, and the core of the issue is <em>not</em> something that you can easily solve with technical means. I ran into this fascinating thread on Twitter that over the weekend:</p> <blockquote class="twitter-tweet"> <p dir="ltr" lang="en">you just described licensing. As you missed 1 important aspect: if an org isn't obligated to pay, they won't. So you need a form of making them pay by giving them a token they paid which then makes them able to use your software. Any other form will fail.</p> &mdash; Frans Bouma (@FransBouma) <a href="https://twitter.com/FransBouma/status/1689946604030050304?ref_src=twsrc%5Etfw">August 11, 2023</a></blockquote> <p><script src="https://platform.twitter.com/widgets.js" async="" charset="utf-8"></script></p> <p>And another part of that is here:</p> <blockquote class="twitter-tweet"> <p dir="ltr" lang="en">The thing is, businesses spend significant amounts of money on software licenses, whether on-prem or as-a-service.<br /><br />They understand and accept this, as do their shareholders and investors. It is a cost of doing business.<br /><br />Donations? Not so much.</p> &mdash; Udi Dahan (@UdiDahan) <a href="https://twitter.com/UdiDahan/status/1690034306997993473?ref_src=twsrc%5Etfw">August 11, 2023</a></blockquote> <p><script src="https://platform.twitter.com/widgets.js" async="" charset="utf-8"></script></p> <p>I&rsquo;m quoting the most relevant pieces, but the idea is pretty simple.</p> <p>Donations don&rsquo;t work, period. They don&rsquo;t work not because companies are evil or developers don&rsquo;t want to pay for Open Source. They don&rsquo;t work because it takes a huge amount of effort to actually get paid.</p> <p>If you are an independent developer, your purchasing process goes something like this:</p> <ol> <li>I would like to use this thing</li> <li>I need to pay for that</li> <li>The price matches the value I&rsquo;m getting</li> <li>Where is my credit card&hellip;</li> <li>Paid!</li> </ol> <p>Did you note step 2? The part about <em>needing</em> to pay?</p> <p>If you don&rsquo;t have that step, what will happen? Same scenario, an independent developer:</p> <ol> <li>I would like to use this thing</li> <li>I use this thing</li> <li>It would be great to pay something to show my appreciation</li> <li>Where did I put the credit card? Oh, it&rsquo;s down the hall&hellip; I&rsquo;ll get to that later (never).</li> </ol> <p>That is in the best-case scenario where the thought of donating actually crossed your mind. In most likelihood, the process is more:</p> <ol> <ol><!--StartFragment--></ol> <li>I would like to use this thing</li> <li>I use this thing</li> <li>Ticket closed, what is the next one&hellip; ?</li> </ol> <p>Now, what happens if you are <em>not</em> an independent developer? Let&rsquo;s say that you are a contract worker for a company. You need to talk to your contact person, they will need to get purchasing approval. Depending on the amount, that may require escalating upward a few levels, etc.</p> <p>Let&rsquo;s say that the amount is under 100$, so basically within the budgetary discretion of the first manager you run into. They would still need to know what they are paying for, what they are getting out of that (they need to justify that). If this is a donation, welcome to the beauty of tax codes in multiple jurisdictions and what <em>counts</em> as such. If this is <em>not</em> a donation, what do they get? That means that you now have to do a meeting, potentially multiple ones. Present your case, open a new supplier at the company, etc.</p> <p>The cost of all of those is high, both in time and money. Or&hellip; you can just <em>nuget add-package</em> and move on.</p> <p>In the case of RavenDB, it is an Open Source software (a license to match, code is freely available), but we treat it as a commercial project for all intents and purposes. If you want to install RavenDB, you&rsquo;ll get a popup saying you need a license, directing you to a page where you see how much we would like to get and what do you get in return, etc. That means that from a commercial perspective, we are in a familiar ground for companies.&nbsp; They are <em>used</em> to paying for software, and there isn&rsquo;t an option to just move on to the next task.</p> <p>There is another really important consideration here. In the ideal Open Source donation model, money just shows up in your account. In the commercial world, there is a <em>huge</em> amount of work that is required to get things done. That is when you have a model where &ldquo;the software does not <em>work</em> without a purchase&rdquo;.&nbsp; To give some context, 22% is Sales &amp; Marketing and they spent around 21.8 <em>billion</em>&nbsp;in 2022 on Sales &amp; Marketing. That is literally billions being <em>spent </em>to make sales.</p> <p>If you want to make money, you are going to invest in sales, sales strategy, etc. I&rsquo;m ignoring marketing here because if you are expected to make money from Open Source, you likely already have a project well-known enough to at least get started.</p> <p>That means that you need to figure out what you are charging for, how do you get customers, etc. In the case of RavenDB, we use the per-core model, which is a good indication of how much use the user is getting from RavenDB. LLBLGen Pro, on the other hand, they are charging per seat. Particular&rsquo;s NServiceBus uses a per endpoint / number of messages a day model.</p> <p>There is no one model that fits all. And you need to be able to tailor your pricing model to how your users think about your software.</p> <p>So pricing strategy, creating a proper incentive to purchase (hard limit, usually) and some sales organization to actually drive all of that are absolutely required.</p> <p>Notice what is missing here? GitHub. It simply has no role at all up to this point. So why the title of this post?</p> <p>There is one <em>really big</em> problem with getting paid that GitHub can solve for Open Source (and in general, I guess).</p> <p>The whole process of actually getting paid is absolutely atrocious. In the best case, you need to create a supplier at the customer, fill up various forms (no, we don&rsquo;t use child labor or slaves, indeed), figure out all sorts of <em>weird </em>roles (German tax authority requires special dispensation, and let&rsquo;s not talk about getting paid from India, etc). Welcome to Anti Money Laundering roles and GDPR compliance with Known Your Customer and SOC 2 regulations. The last sentence is basically nonsense words, but I understand that if you chant it long enough, you get money in the end.</p> <p>What GitHub can do is be a payment pipe. Since presumably your organization is already set up with them in place, you can get them to do the invoicing, collecting the payment, etc. And in the end, you get the money.</p> <p>That sounds <em>exactly</em> like GitHub Sponsorships, right? Except that in this case, this is no a donation. This is a flat-out simple transaction, with GitHub as the medium. The idea is that you <em>have</em> a limit, which you enforce, on your usage, and GitHub is how you are paid. The ability to do it in this fashion <em>may </em>make things easier, but I would assume that there are about three books worth of regulations and EULAs to go through to make it actually successful.</p> <p>Yet, as far as I&rsquo;m concerned, that <em>is</em> really the only important role that we have for GitHub here.</p> <p>That is <em>not</em> a small thing, mind. But it isn&rsquo;t a magic bullet.</p>https://www.ayende.com/blog/199937-C/the-role-of-github-in-paying-for-open-source-software?Key=13c9495d-6552-4c62-a26b-4f70c13c70cfhttps://www.ayende.com/blog/199937-C/the-role-of-github-in-paying-for-open-source-software?Key=13c9495d-6552-4c62-a26b-4f70c13c70cfMon, 14 Aug 2023 12:00:00 GMTDeploying RavenDB with Helm Chart<p><a href="https://helm.sh/">Helm</a> is the package manager for Kubernetes. It allows you to easily deploy applications and systems to a Kubernetes cluster easily, safely and in a reproducible manner.</p> <p>We provide you with a chart so you can use <a href="https://artifacthub.io/packages/helm/ravendb-cluster/ravendb-cluster">Helm to deploy RavenDB clusters</a>.</p> <p>You can visit <a href="https://github.com/ravendb/helm-charts/tree/master/charts/ravendb-cluster">this link for a full discussion</a> on how to do so.</p>https://www.ayende.com/blog/199269-A/deploying-ravendb-with-helm-chart?Key=75c4e431-594c-44b3-b9d1-9477d16cbdbfhttps://www.ayende.com/blog/199269-A/deploying-ravendb-with-helm-chart?Key=75c4e431-594c-44b3-b9d1-9477d16cbdbfWed, 19 Apr 2023 12:00:00 GMTTricks of the trade: Figuring out progress of a large upload<p>I found myself today needing to upload a file to S3, the upload size is a few hundred GBs in size. I expected the appropriate command, like so:</p> <blockquote> <pre>aws s3api put-object --bucket twitter-2020-rvn-dump --key mydb.backup --body ./mydb.backup</pre> </blockquote> <p>But then I realized that this is uploading a few <em>hundred</em>&nbsp;GB file to S3, which may take a while. The command doesn&rsquo;t have any progress information, so I had no way to figure out where it is at.</p> <p>I decided to see what I can poke around to find, first, I ran this command:</p> <blockquote> <pre>ps -aux | grep s3api</pre> </blockquote> <p>This gave me the PID of the upload process in question.</p> <p>Then I checked the file descriptors for this process, like so:</p> <blockquote> <pre>$ ls -alh /proc/84957/fd<br /><br /><br /></pre> <p>total 0<br />dr-x------ 2 ubuntu ubuntu&nbsp; 0 Mar 30 08:10 .<br />dr-xr-xr-x 9 ubuntu ubuntu&nbsp; 0 Mar 30 08:00 ..<br />lrwx------ 1 ubuntu ubuntu 64 Mar 30 08:10 0 -&gt; /dev/pts/8<br />lrwx------ 1 ubuntu ubuntu 64 Mar 30 08:10 1 -&gt; /dev/pts/8<br />lrwx------ 1 ubuntu ubuntu 64 Mar 30 08:10 2 -&gt; /dev/pts/8<br />lr-x------ 1 ubuntu ubuntu 64 Mar 30 08:10 3 -&gt; /backups/mydb.backup</p> </blockquote> <p>As you can see, we can tell that file descriptor#3 is the one that we care about, then we can ask for more details:</p> <blockquote> <pre>$ cat /proc/84957/fdinfo/3<br /> pos: 140551127040 flags: 02400000 mnt_id: 96 ino: 57409538</pre> </blockquote> <p>In other words, the process is currently at ~130GB of the file or there about.</p> <p>It&rsquo;s not ideal, but it does give me some idea about where we are at. It is a nice demonstration of the ability to poke into the insides of a running system to figure out what is going on.</p>https://www.ayende.com/blog/199233-B/tricks-of-the-trade-figuring-out-progress-of-a-large-upload?Key=32b2be39-87f4-4b87-b727-ee1a64aaf8e3https://www.ayende.com/blog/199233-B/tricks-of-the-trade-figuring-out-progress-of-a-large-upload?Key=32b2be39-87f4-4b87-b727-ee1a64aaf8e3Fri, 31 Mar 2023 12:00:00 GMTOn AI, GPT and the future of developers<p>When I started using GitHub Copilot, I was quite amazed at how good it was. Sessions using ChatGPT can be jaw dropping in terms of the generated content.</p> <p>The immediate reaction from many people is to consider what the impact of that would be on the humans who currently fill those roles. Surely, if we can get a machine to do the task of a human, we can all benefit (except for the person made redundant, I guess).</p> <p>I had a long discussion on the topic recently and I think that it is a good topic for a blog post, given the current interest in the subject matter.</p> <p>The history of replacing manual labor with automated machines goes back as far as you&rsquo;ll like to stretch it. I wouldn&rsquo;t go back to the horse &amp; plow, but certain the Luddites and their arguments about the impact of machinery on the populace will sound familiar to anyone today.</p> <p>The standard answer is that some professions will go away, but new ones will pop up, instead. The classic example is the ice salesman. That used to be a function, a guy on a horse-drawn carriage that would sell you ice to keep your food cold. You can assume that this profession is no longer relevant, of course.</p> <p>The difference here is that we now have computer programs and AI taking over what was classically thought impossible. You can ask Dall-E or Stable Diffusion for an image and in a few seconds, you&rsquo;ll have a beautiful render that may actually match what you requested.</p> <p>You can start writing code with GitHub Copilot and it will predict what you <em>want</em> to do to an extent that is absolutely awe-inspiring.</p> <p>So what is the role of the human in all of this? If I can ask ChatGPT or Copilot to write me an email validation function, what do I need a developer for?</p> <p>Here is ChatGPT&rsquo;s output:</p> <blockquote> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_2.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_thumb.png" alt="image" width="1000" height="884" border="0" /></a></p> </blockquote> <p>And here is Copilot&rsquo;s output:</p> <blockquote> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_4.png"><img style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_thumb_1.png" alt="image" width="798" height="457" border="0" /></a></p> </blockquote> <p>I would rate the MailAddress version better, since I know that you can&rsquo;t actually manage emails via Regex. I tried to take this further and ask ChatGPT about the Regex, and got:</p> <blockquote> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_6.png"><img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/On-AI-GPT-and-the_7BCC/image_thumb_2.png" alt="image" width="993" height="503" border="0" /></a></p> </blockquote> <p>ChatGPT is confused, and the answer doesn&rsquo;t make any sort of sense.</p> <p>Most of the time spent on &ldquo;research&rdquo; for this post was waiting for ChatGPT to actually produce a result, but this post isn&rsquo;t about nitpicking, actually.</p> <p>The whole premise around &ldquo;machines will make us redundant&rdquo; is that the sole role of a developer is taking a low-level requirement such as email validation and producing the code to match.</p> <p>Writing such low-hanging fruit is not your job. For that matter, a <em>function</em> is not your job. Nor is writing code a significant portion of that. A developer needs to be able to build the system architecture and design the interaction between components and the overall system.</p> <p>They need to make sure that the system is performant, meet the non-functional requirements, etc. A developer would spend a lot more time <em>reading</em> code than writing it.</p> <p>Here is a more realistic example of using ChatGPT, <a href="https://sharegpt.com/c/WkZlz35">asking it to write to a file using a write-ahead log</a>. I am both amazed by the quality of the answer and find myself unable to use even a bit of the code in there. The scary thing is that this code <em>looks</em> correct at a glance. It is wrong, dangerously so, but you&rsquo;ll need to be a subject matter expert to know that. In this case, this doesn&rsquo;t meet the requirements, the provided solution has security issues and doesn&rsquo;t actually work.</p> <p>On the other hand, I asked it about password hashing and <a href="https://sharegpt.com/c/kLMCnRx">I would give this answer a good mark</a>.</p> <p>I believe it will get better over time, but the overall context matters. We have a <em>lot</em> of experience in trying <a href="https://ayende.com/blog/2365/and-the-secretary-will-write-the-order-dispatching-logic">to get the secretary to write code</a>. There have been <a href="https://ayende.com/blog/4575/lightswitch-the-return-of-the-secretary">many tools trying to do that</a>, going all the way back to CASE in the 80s.</p> <p>There used to be a profession called: &ldquo;computer&rdquo;, where you could hire a person to compute math for you. Pocket calculators didn&rsquo;t invalidate them, and Excel didn&rsquo;t make them redundant. They are now called accountants or data scientists, instead. And use the new tools (admittedly, calling calculators or Excel new feels very strange) to boost up their productivity enormously.</p> <p>Developing with something like Copilot is a far easier task, since I can usually just tab complete a lot of the routine details. But having a tool to do some part of the job doesn&rsquo;t mean that there is no work to be done. It means that a developer can speed up the routine bits and get to grips faster / more easily with the other challenges it has, such as figuring out why the system doesn&rsquo;t do what it needs to, improving existing behavior, etc.</p> <p>Here is a great way to use ChatGPT <a href="https://sharegpt.com/c/wnDDySj">as part of your work</a>, ask it to optimize a function. For this scenario, it did a great job. For more complex scenarios? There is too much context to express.</p> <p>My final conclusion is that this is a really awesome tool to assist you. It can have a massive impact on productivity, especially for people working in an area that they aren&rsquo;t familiar with. The downside is that sometimes it will generate junk, then again, sometimes real people do that as well.</p> <p>The next few years are going to be really interesting, since it provides a whole new level of capability for the industry at large, but I don&rsquo;t think that it would shake the reality on the ground.</p>https://www.ayende.com/blog/198945-B/on-ai-gpt-and-the-future-of-developers?Key=d1074284-3d01-495b-a2f2-4c5f43713db6https://www.ayende.com/blog/198945-B/on-ai-gpt-and-the-future-of-developers?Key=d1074284-3d01-495b-a2f2-4c5f43713db6Thu, 02 Feb 2023 12:00:00 GMTRavenDB 6.0: Sharding webinar<p><a href="https://us02web.zoom.us/webinar/register/7116707641067/WN_APOLYWCxRviNG-nCkA5FEA"><img style="border: 0px currentcolor; float: right; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/23927057dc4f_C5C5/image_3.png" alt="image" width="388" height="333" align="right" border="0" /></a>This Wednesday I&rsquo;m going to be doing a <a href="https://us02web.zoom.us/webinar/register/7116707641067/WN_APOLYWCxRviNG-nCkA5FEA">webinar about RavenDB &amp; Sharding</a>. This is going to be the flagship feature for RavenDB 6.0 and I&rsquo;m really excited to be talking about it in public <em>finally</em>.</p> <p>Sharding involves splitting your data into multiple nodes. Similar to having different volumes of a single encyclopedia.</p> <p>RavenDB&rsquo;s sharding implementation is something that we have spent the past three or four <em>years</em> working on. That has been quite a saga to get it out. The primary issue is that we want to achieve two competing goals:</p> <ul> <li>Allow you to scale the amount of data you have to near infinite levels.</li> <li>Ensure that RavenDB remains simple to use and operate.</li> </ul> <p>The first goal is actually fairly easy and straightforward. It is the second part that made things complicated. After a lot of work, I believe that we have a really good solution at hand.</p> <p>In <a href="https://us02web.zoom.us/webinar/register/7116707641067/WN_APOLYWCxRviNG-nCkA5FEA">the webinar</a>, I&rsquo;m going to be presenting how RavenDB 6.0 implements sharding, the behavior of the system at scale, and all the details you need to know about how it works under the cover.</p> <p>I&rsquo;m <em>really</em> excited to finally be able to show off the great work of the team! Join me, it&rsquo;s going to be really interesting.</p>https://www.ayende.com/blog/198785-B/ravendb-6-0-sharding-webinar?Key=4490c862-db91-4048-bd5e-00aabdeeadc7https://www.ayende.com/blog/198785-B/ravendb-6-0-sharding-webinar?Key=4490c862-db91-4048-bd5e-00aabdeeadc7Mon, 09 Jan 2023 12:00:00 GMTFundamental knowledge<p>I&rsquo;ve been calling myself a professional software developer for just over 20 years at this point. In the past few years, I have gotten into teaching university courses in the Computer Science curriculum. I have recently had the experience of supporting a non-techie as they went through a(n intense) coding bootcamp (aiming at full stack / front end roles). I&rsquo;m also building a distributed database engine and all the associated software.</p> <p>I list all of those details because I want to make an observation about the distinction between fundamental and transient knowledge.</p> <p>My first thought is that there is&nbsp;<em>so much </em>to learn. Comparing the structure of C# today to what it was when I learned it (pre-beta days, IIRC), it is a <em>very</em> different language. I had literally decades to adjust to some of those changes, but someone that is just getting started needs to grasp everything all at once. When I learned JavaScript you still had browsers in the market that didn&rsquo;t recognize it, so you had to do the &ldquo;//&lt;!&mdash;&rdquo; trick to get things to work (don&rsquo;t ask!).</p> <p>This goes far beyond mere syntax and familiarity with language constructs. The overall environment is also critically important. One of the basic tasks that I give in class is something similar to: &ldquo;Write a network service that would serve as a remote dictionary for key/value operations&rdquo;.&nbsp; Most students have a hard time grasping details such as IP vs. host, TCP ports, how to read from the network, error handling, etc. Adding a relatively simple requirement (make it secure from eavesdroppers) will take it entirely out of their capabilities.</p> <p>Even taking a &ldquo;simple&rdquo; problem, such as building a CRUD website is fraught with many important details that aren&rsquo;t really visible. Responsive design, mobile friendly, state management and user experience, to name a few. Add requirements such as accessibility and you are setting the bar too high to reach.</p> <p>I intentionally choose the examples of accessibility and security, because those are &ldquo;invisible&rdquo; requirements. It is easy to miss them if you don&rsquo;t know that they should be there.</p> <p>My first website was a PHP page that I pushed to the server using FTP and updated live in &ldquo;production&rdquo;. I was exposed to all the details about DNS and IPs, understood exactly that the server side was just a machine in a closet, and had very low levels of abstractions. (Naturally, the solution had <em>no </em>security or any other &ndash;ities). However, that knowledge from those early experiments has served me very well for decades. Same for details such as how TCP works or the basics of operating system design.</p> <p>Good familiarity with the basic data structures (heap, stack, tree, list, set, map, queue) paid itself many times over. The amount of time that I spent learning WinForms&hellip; still usable and widely applicable even in other platforms and environments. WPF or jQuery? Not so much.</p> <p>Learning patterns paid many dividends and was applicable on a wide range of applications and topics.</p> <p>I looked into the topics that are being taught (both for bootcamps and universities) and I understand why in many cases, those are being skipped. You can actually <em>be</em> a front end developer without understanding much (if at all) about networks. And the breadth of details you need to know is immense.</p> <p>My own tendency is to look at the low level stuff, and given that I work on a database engine, that is obviously quite useful. What I have found, however, is that whenever I dug deep into a topic, I found ways to utilize that knowledge at a later point in time. Sometimes I was able to solve a problem in a way that would be utterly inconceivable to me previously. I&rsquo;m not just talking about being able to immediately apply new knowledge to a problem. If that were the case, I would attribute that to wanting to use the new thing I just learned.</p> <p>However, I&rsquo;m talking about scenarios where months or years later I ran into a problem, and was then able to find the right solution given what was then totally useless knowledge.</p> <p>In short, I understand that chasing the 0.23-alpha-stage-2.3.1-dev updates on the left-pad package is <em>important, </em>but I found that spending time deep in the stack has a great cumulative effect.</p> <p><a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">Joel Spolsky wrote about leaky abstractions</a>, that was <strong>20 years ago</strong>. I remember reading that blog post and <em>grokking</em> that. And it is true, being able to dig one or two layers down from where you usually live has a huge amount of leverage on your capabilities.</p>https://www.ayende.com/blog/198593-A/fundamental-knowledge?Key=4c32a950-455e-418e-bae4-5110b84357e0https://www.ayende.com/blog/198593-A/fundamental-knowledge?Key=4c32a950-455e-418e-bae4-5110b84357e0Tue, 29 Nov 2022 12:00:00 GMTBeating FizzBuzz for detecting qualified candidates<p>FizzBuzz is a well known test to show that you can program. To be rather more exact, it is a simple test that does not tell you if you can program well, but if you cannot do FizzBuzz, you cannot program. This is a fail only kind of metric. We need this thing because sadly, we see people that fail FizzBuzz coming to interviews.</p> <p>I have another test, which I feel is simpler than FizzBuzz, which can significantly reduce the field of candidates. I show them this code and ask them to analyze what is going on here:</p> <blockquote> <script src="https://gist.github.com/ayende/c41e7870bfb84d041829e804e05faa0f.js"></script> </blockquote> <p>Acceptable answers include puking, taking a few moments to breathe into a paper bag and mild to moderate <a href="https://ayende.com/blog/183713-C/toddlers-cursing-and-preparing-ahead-of-time">professional swearing</a>.</p> <p>This is something that I actually run into (about 15 years ago, in the WebForms days) and I have used it ever since. That is a great way to measure just how much a candidate knows about the environment in which they operate.</p>https://www.ayende.com/blog/195905-C/beating-fizzbuzz-for-detecting-qualified-candidates?Key=ad59485b-6453-45c7-a0f7-96c853aa964bhttps://www.ayende.com/blog/195905-C/beating-fizzbuzz-for-detecting-qualified-candidates?Key=ad59485b-6453-45c7-a0f7-96c853aa964bFri, 31 Dec 2021 12:00:00 GMT“Work well under pressure” is a safety valve, not SOP<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/Work-well-under-pressure_AD81/image_2.png"><img style="border: 0px currentcolor; float: right; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/Work-well-under-pressure_AD81/image_thumb.png" alt="image" width="212" height="408" align="right" border="0" /></a>The phrase &ldquo;work well under pressure&rdquo; is something that I consider to be a red flag in a professional environment. My company builds a database that is used as the backend of business critical systems. If something breaks, there is a <em>need</em> to fix it. It costs money (sometimes a <em>lot</em> of money) for every minute of downtime.</p> <p>Under such a scenario, I absolutely want the people handling the issue to remain calm, collected and analytical. In such a case, being able to work well under pressure is a huge benefit.</p> <p>That is not how this term is typically used, however. The typical manner you&rsquo;ll hear this phrase is to refer to the <em>usual working environment</em>. For example, working under time pressure to deliver certain functionality. That sort of pressure is toxic over time.</p> <p>Excess stress is a well known contributor to health issues (mental and physical ones), it will cause you to make mistakes and it adds frictions all around.</p> <p>From my perspective, the ability to work well under pressure is an absolutely important quality, which should be <em>hoarded. </em>You may need to utilize this ability in order to deal with a blocking customer issue, but should be careful not to spend that on non-critical stuff.</p> <p>And by definition, <em>most things </em>are not critical. If everything is critical, you have a different problem.</p> <p>That means that part of the task of the manager is to identify the places where pressure is applied and remove that. In the context of software, that may be delaying a release date or removing features to reduce the amount of work.</p> <p>When working with technology, the most valuable asset you have is the people and the knowledge they have. And one of the easiest ways to lose that is to burn the candle at both ends. You get more light, sure, but you also get no candle.</p>https://www.ayende.com/blog/195841-B/work-well-under-pressure-is-a-safety-valve-not-sop?Key=011bd589-bf2f-4c81-b2c9-d5a062320469https://www.ayende.com/blog/195841-B/work-well-under-pressure-is-a-safety-valve-not-sop?Key=011bd589-bf2f-4c81-b2c9-d5a062320469Tue, 21 Dec 2021 12:00:00 GMTRavenDB 5.3 New Features: Studio & Query improvements<p>I like to think about myself as a database guy. My go to joke about building user interfaces is that a &lt;table&gt; is all I need for layout (it&rsquo;s not a joke). About a decade ago I just gave up on trying to follow what is going on in the frontend land and accepted that I&rsquo;ll reside in the backend from here on after.</p> <p>Being ignorant of the ways you&rsquo;ll write a modern frontend doesn&rsquo;t affect the fact that I like to <em>use</em> a good user interface. I have seriously mixed feelings about the importance of RavenDB Studio to the project. On the one hand, I <em>care</em> that it is easy to use, obvious and functional. I <em>love</em> that it is beautiful and will generally make your life easier. And at the same time, I abhor the fact that it has such an impact on people&rsquo;s decisions. I mean, the backend of RavenDB is absolutely beautiful, from a technical perspective. But everyone always talk about the studio.</p> <p>Leaving aside my mini rant, we spend quite a lot of time and effort on the studio and the User Experience in general. This release is not an exception and we have a couple of major new updates to the studio.</p> <p>One of the most common things you&rsquo;ll do in the studio is run queries. In this release we have done a complete revamp of the automatic code completion for the client-side RQL queries written in the studio.<br />The new code assistance is available when writing any query in the Query view, Patch view, and in the Subscription Query. That was actually quite interesting, from a computer science perspective. We have <a href="https://github.com/ravendb/ravendb/blob/v5.3/src/Raven.Studio/languageService/grammar/BaseRqlParser.g4">formal grammar</a> for RQL now, for example, which means that we can provide much better experience for query editing. For example, take a look:</p> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_6.png"><img style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_thumb_2.png" alt="image" width="735" height="329" border="0" /></a></p> <p>Full code completion assistance and better error handling directly at the studio makes it easier to work with RavenDB for both developers and operations.</p> <p>The second feature is the Identities page:</p> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_2.png"><img style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_thumb.png" alt="image" width="300" height="241" border="0" /></a></p> <p>Identities has been a feature in RavenDB for a <em>long</em> time, and somehow they have never been front and center. Maybe the discoverability of the feature suffered? You can now create, edit and modify the identities directly in the studio, not just through the API.</p> <p><a href="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_4.png"><img style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-New_C6EA/image_thumb_1.png" alt="image" width="913" height="237" border="0" /></a></p>https://www.ayende.com/blog/195329-A/ravendb-5-3-new-features-studio-query-improvements?Key=9fdbea23-a812-4602-990a-30655e3ef042https://www.ayende.com/blog/195329-A/ravendb-5-3-new-features-studio-query-improvements?Key=9fdbea23-a812-4602-990a-30655e3ef042Wed, 24 Nov 2021 12:00:00 GMTRavenDB and the Black Friday Surge!<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/Black-Friday-Surge_F0FA/image_2.png"><img style="float: right; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/Black-Friday-Surge_F0FA/image_thumb.png" alt="image" width="821" height="257" align="right" border="0" /></a>Next week is Black Friday, which has reached a global phenomenon status. It is a fun day for shoppers, and a <em>nervous wreck</em> for IT admins everywhere. It is not uncommon to see traffic doubles or triples and the actual load (processing more heavyweight requests) can go up an order of magnitude. Preparing for Black Friday can be a harrowing issue since you have a narrow window of opportunity and it is hard to know exactly where the stress points are.</p> <p>This year, I decided to make your life easier, and RavenDB is offering a Black Friday Surge to all our customers. No, we aren&rsquo;t offering you 50% off and everything must go. What we do instead is try to be of <em>help</em>.</p> <p>This Black Friday (and Cyber Monday as well), we are offering all our customers double what they paid for. When running RavenDB on premise, if you purchased a RavenDB license for a 12 cores cluster (running on 3 nodes of 4 cores each), we&rsquo;ll offer you 30 days of double the core count. In other words, you can scale your system to be twice as powerful, and it won&rsquo;t cost you a cent.</p> <p>On the cloud, as well, we will provide users with credits to upgrade their clusters to the next level up (doubling their power) for a full week during the next 30 days. Again, there is no extra cost here.</p> <p>You can <a href="https://ravendb.net/promos/black-friday-2021">register for the Surge here</a> to request the upgrade and you&rsquo;ll get twice as much power to handle the increased load.</p> <p>Enjoy the power up!</p>https://www.ayende.com/blog/195489-B/ravendb-and-the-black-friday-surge?Key=0c58bda1-4215-4ca0-aa64-cb2bc98063b5https://www.ayende.com/blog/195489-B/ravendb-and-the-black-friday-surge?Key=0c58bda1-4215-4ca0-aa64-cb2bc98063b5Fri, 19 Nov 2021 12:00:00 GMTRavenDB 5.3 New Features: Incremental time series & implementing lambda based accounting<p>Everyone is on the cloud these days, and one of the things that I keep seeing pushed is the notion of usage based billing. Basically, the idea that you are paying for what you use.</p> <p>Let&rsquo;s assume that we are building a software as a service where users can submit an image and you&rsquo;ll do some computation on that. The actual details aren&rsquo;t relevant. What matters is that your pricing model is based around how much time processing each image takes and how much memory is used. You are running this on many machines and need to figure out how to do billing at the end of the month. It turns out that this can be quite a challenge. With incremental time series, a lot of the details around that just go away.</p> <p>Here is how you can implement this:</p> <blockquote> <script src="https://gist.github.com/ayende/bcd2a3b2195e8bd9682e0ba521b3e9f3.js"></script> </blockquote> <p>You count the required memory as well as the actual runtime and record that in an incremental time series. We are also storing the details&nbsp; in a separate document for that particular run in the same transaction (if the user cares about that level of detail). The interesting bit about how this can be used is that the data is now immediately available for the user to see how much they are going to be billed.</p> <p>Typically, a lot of time is spent in figuring out how to record those details efficiently and then how to query and aggregate those. We tested time series in RavenDB to billions of data points, and the internal format lends itself very well to aggregated queries.</p> <p>Now you can take the code above, run it on 100s of machines, and it will all end up giving you the proper result in the end.</p>https://www.ayende.com/blog/195268-C/ravendb-5-3-new-features-incremental-time-series-implementing-lambda-based-accounting?Key=e0d2f60a-35fa-4091-8f96-5b5a80b69107https://www.ayende.com/blog/195268-C/ravendb-5-3-new-features-incremental-time-series-implementing-lambda-based-accounting?Key=e0d2f60a-35fa-4091-8f96-5b5a80b69107Mon, 15 Nov 2021 12:00:00 GMTRavenDB 5.3 New Features: Incremental time series<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-Features_12D89/image_4.png"><img style="float: right; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-Features_12D89/image_thumb_1.png" alt="image" width="493" height="256" align="right" border="0" /></a>In RavenDB 5.0 we had a major new feature, native time series support. Using this feature, you can store values over time, query and aggregate them, store them efficiently, produce rollups, etc.</p> <p>The classic example for time series data in RavenDB is when you have data coming from sensors. For example a Fitbit monitoring heartrate, a stock exchange feed giving you stock values. You don&rsquo;t care about a particular value, you care about the value <em>over time</em>. It turns out that there are quite a lot of use cases for those kind of details. We have seen a major pick up in IoT related fields in particular.</p> <p>However, the API we provided for users to insert data for time series had a limitation, have a look:</p> <blockquote> <script src="https://gist.github.com/ayende/7a1b9c103ef263040cc52e4f16dd7636.js"></script> </blockquote> <p>The API gives you the ability to record a value (or a set of values) at a particular point in time, with an optional tag for additional meaning. What is the problem with this API, then?</p> <p>Well, it works great if you are processing data from a singular source (the stock exchange feed, or a medical device), but it fails to do its job if you may need to record multiple values for the same timestamp.</p> <p>Huh? What does that even <em>mean</em>? If we a are storing a value per timestamp, obviously there should be <em>a</em> value for that timestamp. How can there be multiple values? Note that here I&rsquo;m not talking about something like location (with latitude and longitude coordinates), those are covered under storing an array of values on the same timestamp.</p> <p>The issue happens when you have the need to record multiple <em>different</em> values at the same timestamp. Typical time series are things like Heartrate, Location, StockPrice, etc. Having multiple values for the same thing at the same time frame doesn&rsquo;t really work. In the Location time series, if I&rsquo;m both <em>here</em> and <em>there, </em>you can expect trouble (if only because the paradox cops will show up). A stock may have different prices at the same time <em>in different exchanges</em>, sure, but that is not the same value, by its very nature.</p> <p>There is a common scenario where this will happen. When what I&rsquo;m recording is not the full value, but <em>part</em> of that value. The classic example for that is tracking page views. Let&rsquo;s say that I want to know how many people are looking at this blog post, I cannot use the <em>Append()</em> API for that purpose. Each individual operation is going to belong to a particular timestamp. What happens if I have two views on this post at the <em>exact same millisecond</em>? For that matter, what happens in the more &ldquo;interesting&rdquo; case of having writes to the same millisecond on <em>two different nodes</em> in the cluster?</p> <p>With timeseries as we envisioned them for the 5.0 release, that wasn&rsquo;t an issue, a timeseries had <em>a</em> value in a particular timestamp. But supporting a scenario such as tracking views, or any scenario where we want to record partial data and have RavenDB take care of everything else isn&rsquo;t served well by this model.</p> <p>Note that RavenDB already has the notion of distributed counters, they are intended specifically for doing such things. It is trivial in RavenDB to implement a counter that would track the overall views on a post. It will also handle concurrency, distributing data between nodes, everything that needs to be handled. So why can&rsquo;t I use that?</p> <p>It turns out that I typically want to know more than just the total number of views on the post, I want to know <em>when</em> they happened. Counters are only a partial answer for that.</p> <p>That is why incremental time series were created. They are here to marry the ability of time series to track a value over time and the distributed counters ability to aggregate information concurrently and in a safe distributed manner. Here is the new API for incremental time series:</p> <blockquote> <script src="https://gist.github.com/ayende/39f9def81621107f2311f308203ce2ed.js"></script> </blockquote> <p>The changes are apparent at the API level, the <em>Increment</em>() is not setting the value, it is incrementing it with a delta value. So two increments on the same timestamp will give you the right result. Note that we don&rsquo;t have a way to tag the entry any longer. That is no longer meaningful, because a single timestamp may have multiple different values. The method is called increment, but note that you can also pass negative values, if you want to reduce the amount.</p> <p>You can see in the image on the right how this looks like in the studio. An incremental time series is one that has the &ldquo;INC:&rdquo; prefix in the name. Such a time series is able to accept <em>only</em> increment operations, it will reject attempts to append values to it. In the same sense, a non incremental time series will not allow you to increment a value, only append new entries. We wanted to have a strong separation between the two time series modes because mixing them up resulted in a huge mess of edge cases that are really hard to solve.</p> <p>I probably should explain the terminology here, because it reflects an important distinction:</p> <ul> <li>Append &ndash; add a new timestamp and the value(s) for that time. This appends to the <em>time series</em> a new entry. Appending an entry to a time that is already in the timeseries will overwrite that time.</li> <li>Increment &ndash; add a new timestamp and its values. If there is already value for that time in the time series, we&rsquo;ll add the new value and existing value together, writing their sum as the new value.</li> <ul> <li>That isn&rsquo;t actually how it works internally, but that is the conceptual model.</li> </ul> </ul> <p>Aside from using increment to set the values, incremental time series behave just like any other time series. You can query over them, aggregate, index, etc. They can create rollups (a rolled up incremental time series is a normal time series, not an incremental one), apply retention polices, and everything else that you can do with a time series, the special behavior of incremental time series does not extend to its rolled-up versions.</p> <p>Here is a full example of how you can use this feature:</p> <blockquote> <script src="https://gist.github.com/ayende/367ef1701ec30404dac82709af1d7168.js"></script> </blockquote> <p>As usual, this is transactional with any other operation you may want to do, so you can increment a time series along side uploading an attachment and modifying a document, as a single atomic transaction.</p> <p>And now we can ask about view counts on an hourly basis for the last week, like so:</p> <blockquote> <script src="https://gist.github.com/ayende/808eac0c91cd5aeb812b8312954eee08.js"></script> </blockquote> <p>This feature is going to be available in all editions of RavenDB 5.3, expected for release in mid November. I got <em>so many </em>ideas about what you can use this for <img class="wlEmoticon wlEmoticon-smile" src="https://ayende.com/blog/Images/Open-Live-Writer/RavenDB-5.3-Features_12D89/wlEmoticon-smile_2.png" alt="Smile" />.</p>https://www.ayende.com/blog/195267-C/ravendb-5-3-new-features-incremental-time-series?Key=69dfe678-d0a1-4788-ae05-1cf0e0b77078https://www.ayende.com/blog/195267-C/ravendb-5-3-new-features-incremental-time-series?Key=69dfe678-d0a1-4788-ae05-1cf0e0b77078Fri, 12 Nov 2021 12:00:00 GMTRavenDB 5.3 New Features: Concurrent Subscriptions & Serial operations<p>Almost as soon as we introduced <a href="https://ayende.com/blog/195265-C/ravendb-5-3-features-concurrent-subscriptions?key=39012fb5d555413d8fd050479b6c6322">concurrent subscriptions</a>, we ran into a serious problem in their use. The desire was to do things in a serial fashion. That was quite infuriating, because we spent to much time working on making things concurrent, and now we had to deal with making them serial again? What the hell?</p> <p>Before I dive any further, it will probably be for the best if I explained a bit more about the context of this very strange feature request.</p> <p>Consider a system where the subscription is used to process commands, which may relationships between one another. For example, consider the following commands (all of them belonging to the same &ldquo;Commands&rdquo; collection):</p> <ul> <li>EmployeePayroll &ndash; commands/40-A</li> <li>EmployeeBankAccountChange &ndash; commands/34-A</li> <li>EmployeeContractUpdate &ndash; commands/49-C</li> </ul> <p>For each one of those commands (and many more), we want to run some logic. Some of this requires us to touch third party services, which means that we are likely to be slow / stalled on some cases. That is the exact case for using concurrent subscriptions.</p> <p>The developers quickly jumped on the new system, setting the mode of the subscription as concurrent and running multiple workers. Things worked, latency was down and everyone was happy. Everyone, that is, except for George. The problem was George had gotten married recently. Well, that wasn&rsquo;t the actual problem. George is <em>happily </em>married. The problem is that George and his wife have a new joint bank account. George let the HR department know about the new bank account in advance, which resulted in the <em>EmployeeBankAccountChange</em> command being generated. Then payroll day hit, and we have an <em>EmployeePayroll</em> command as well.</p> <p>This is where things started to get iffy. In terms of timing, the <em>EmployeeBankAccountChange</em> happened before the <em>EmployeePayroll</em> command. When the subscription was running in serial mode, it was guaranteed that it will always process the commands in the order that they were modified. That meant that handling things like changing the bank account and actually paying had a very natural order. If you made the change before payroll, it got processed before hand, otherwise, it was processed afterward.</p> <p>With concurrent subscriptions, this is no longer the situation. We are still working <em>roughly</em> in the order of modification, but we are no longer guaranteeing it. And it is possible to process documents out of order.</p> <p>RavenDB&rsquo;s concurrent subscriptions will ensure that you&rsquo;ll not have to worry about concurrent processing of a single document, but in this case, there are different documents, so they can be processed concurrently. An <em>EmployeeBankAccountChange</em> may take a long time (verifying accounts, etc) while <em>EmployeePayroll</em>&nbsp; is just adding a line to a ACH file, so it is very likely that we&rsquo;ll process the payroll before the account change. And that makes George very sad. Let&rsquo;s see how we can avoid depressing the newlywed.</p> <p>One option is to make use of another RavenDB feature, the compare exchange support. This allows you to use strongly consistent, cluster-wide, values which are suitable for distributed locks. I looked into what it will take to build this and quailed in fear. I don&rsquo;t want to let things become this complicated.</p> <p>The key issue here is that we want both concurrency and serial work. An interesting observation is that there is a <em>scope</em> for such things. Commands on the same employee should run in the same order they were issued, commands on <em>different </em>employees are free to run in whatever order they like. How can we make this work without diving head first into complexity the like of which will keep you up at night?</p> <p>For the most part, we can assume that concurrent operations for the same employee is rare. Even when we have multiple commands for the same employee, we can expect that there won&rsquo;t be <em>many</em> of them. Given that, we can change the way we model the commands themselves. Instead of creating a document per command, we&rsquo;ll have a document <em>per employee</em>.</p> <p>Where before we had this model:</p> <blockquote> <script src="https://gist.github.com/ayende/6e60596a8cf3e31d50d8fd93e42226a4.js"></script> </blockquote> <p>We&rsquo;ll now have the following model:</p> <blockquote> <script src="https://gist.github.com/ayende/c1852c8d66874dc5c36d3186595cc830.js"></script> </blockquote> <p>What does this give us? We now have a <em>commands/employees/1-A</em> for the first employee, all operations on the employee and handled as a single unit, guaranteed by the concurrent subscription. Let&rsquo;s explore further how that works, okay?</p> <p>With the previous model/modeling, to register a command, we need to just call:</p> <blockquote> <script src="https://gist.github.com/ayende/5e52a1f9c5de6ff6af870cdd754288c5.js"></script> </blockquote> <p>All the commands were using the Commands collection, so the subscription worker will look like::</p> <blockquote> <pre><span style="color: #0000ff;">from </span>Commands</pre> </blockquote> <p>And if we process this concurrently, we may process the commands for the same employee at the same time, leading to sadness in the household of George. Instead, with the new model/modeling, we can use the patching API to handle this. Here is what this looks like:</p> <blockquote> <script src="https://gist.github.com/ayende/85b6d15b5d7960c3529ab4bc7456edf0.js"></script> </blockquote> <p>The idea in this case is that all commands for the same employee use the same document. If there isn&rsquo;t already such a value, we&rsquo;ll create a new instance, otherwise, we&rsquo;ll apply the patch script and add to it. The end result is that we can have multiple concurrent operations and they will all be added to the same document in order of execution. However, so far this has nothing to do with concurrent subscriptions. What do we do from here? Here is what the subscription worker looks like after these changes:</p> <blockquote> <p>&nbsp;</p> <script src="https://gist.github.com/ayende/16ee8ad407f4c890675b3280d1577c9e.js"></script> </blockquote> <p>The idea is that when we enqueue a command, we register them in the document specifically for the employee (the scope for serial work in a concurrent subscription) and when we process the command in the subscription worker we patch out all the commands that we already executed.</p> <p>This behavior will guarantee that we can process commands serially within a concurrent worker. All commands for the same employee will be processed serially in the order they were submitted, while different employees will be processed concurrently.We even support adding additional commands to the employee document while the worker is <em>processing </em>commands, we&rsquo;ll simply handle them in the next batch after the employee commands are all done.</p> <p>One thing that I&rsquo;m not discussing here is what to do in case we have concurrent modifications on the commands document in multiple nodes? That would generate a conflict and RavenDB defaults to selecting the latest version. You can configure RavenDB to resolve this property, <a href="https://ravendb.net/learn/inside-ravendb-book/reader/4.0/6-ravendb-clusters#conflicts">I talk about this at length here</a>.</p> <p>Aside from leaning on the new concurrent subscriptions feature, all the rest of the things that we have been using in this post to solve the problem are long standing features of RavenDB and both conceptually and in practice this gives us a great deal of simplicity to handle a non trivial issue.</p> <p>As usual, I would very much welcome your feedback.</p>https://www.ayende.com/blog/195266-C/ravendb-5-3-new-features-concurrent-subscriptions-serial-operations?Key=020aa66a-fae1-4077-9179-9c730610e4e6https://www.ayende.com/blog/195266-C/ravendb-5-3-new-features-concurrent-subscriptions-serial-operations?Key=020aa66a-fae1-4077-9179-9c730610e4e6Thu, 11 Nov 2021 12:00:00 GMTRavenDB 5.3 New Features: Concurrent subscriptions<p><a href="https://ayende.com/blog/Images/Open-Live-Writer/Rave.3-Features-Concurrent-subscriptions_FF11/image_2.png"><img style="float: right; display: inline; background-image: none;" title="image" src="https://ayende.com/blog/Images/Open-Live-Writer/Rave.3-Features-Concurrent-subscriptions_FF11/image_thumb.png" alt="image" width="575" height="353" align="right" border="0" /></a>RavenDB supports a dedicated batch processing mode, using the notion of subscriptions. A subscription is simply a way to register a query with the database and have the database send the subscriber the documents that match the query.</p> <p>The previous sentence is taken directly from the Inside RavenDB book, and it is a good intro for the topic. A subscription is a way to process documents that match a query. A good example might be to run various business processes as a result of data changes. Let&rsquo;s assume that we have a bank, and a new customer was registered. We need to run plenty of such processes (Know Your Customer, Anti Money Laundering, Credit Score, in-house estimation, credit limits &amp; authorization, etc).</p> <p>A typical subscription query would then be:</p> <blockquote> <pre><span style="color: #0000ff;">from</span> Customers <span style="color: #0000ff;">where</span> Onboarded = <span style="color: #0000ff;">false</span></pre> </blockquote> <p>And then we can register to that subscription. At this point, the database will start sending us all the customers that haven&rsquo;t been onboarded yet. This is a <em>persistent</em> query, so restarts and failures are handled properly. And the key aspect is that RavenDB will <em>push</em> the matching documents to the subscription worker. RavenDB will handle batching of the results, ensure that we can process humungous amount of data safely and easily and in general remove a lot of hassle from backend processing.</p> <p>Up until RavenDB 5.3, however, a subscription was defined to be a singleton. In other words, at any given point, only a single subscription worker could be running. That is enforced by the server and help making it much easier to reason about processing documents. One comment that we got is that this is great, if the processing that we are doing is internal, but if there is the need to make a remote call to a potentially slow service, that can be an issue.</p> <p>For example, consider the following worker code:</p> <blockquote> <script src="https://gist.github.com/ayende/c09e2c788d2e097f5f87e0dba26f7535.js"></script> </blockquote> <p>What happens when the <em>CheckCreditScore()</em> is slow? We are halting processing for <em>everything</em>. In some cases, it is only particular customers that are slow, and we absolutely want to process them in parallel. However, RavenDB did not allow that.</p> <p>In RavenDB 5.3, we are bringing concurrent subscriptions to the table. When you create the subscription worker, you can define it with a Concurrent mode, like so:</p> <blockquote> <script src="https://gist.github.com/ayende/40a0dc74e523eb6b12b0639c45f9c224.js"></script> </blockquote> <p>When you have done that, RavenDB will allow multiple concurrent workers to run at the same time, processing batches in parallel. That means that a single slow customer will not halt your entire processing pipeline.</p> <p>In general, I would like you to think about this flag as just removing a limitation. Previously we blocked you from an operation, and now you can run freely.&nbsp; However&hellip;</p> <p>We didn&rsquo;t decide to limit your capabilities just because we like doing that. One of the <em>key</em> aspects of subscriptions is that they offer <em>reliable</em> processing of documents. If an exception has been thrown when processing a batch, RavenDB will resend the batch to the worker again, until processing is susccessful. If we handed a batch of documents to process to a worker, and that worker crashed without letting us know, we need to make sure that the <em>next</em> client to connect will start processing from the last acknowledged batch.</p> <p>It turns out that adding concurrency and the ability for workers to work completely independently of one another make such promises a lot harder to implement.</p> <p>There is also another aspect that we have to consider. When we have just a single worker, certain concurrency issues never happen, but when we allow you to run concurrently, we have to deal with them.</p> <p>Consider the subscription above, running on two workers. We handed a new customer document to Worker A, which started processing it. While Worker A is processing the document, that document has changed. That means that it needs to be processed again by the subscription. We have Worker B available and ready, but if we allow such a scenario, we risk getting a race between the workers, working on the same document.</p> <p>We could punt that to the user and ask them to ensure that this is something that they handle, but that isn&rsquo;t the philosophy of RavenDB. Instead, we have implemented the following behavior for concurrent subscriptions:</p> <p>When the server sends a batch of documents to a worker, that worker &ldquo;checks them out&rdquo;. Until that worker signals the server that the batch has been either processed or failed, we&rsquo;ll not send those documents out to other workers, even if they have been modified. Once a batch is acknowledged as processed, we&rsquo;ll scan all the documents in that batch and see if we need to schedule them for the <em>next</em> batch, because they were missed while they were checked out.</p> <p>That means that from the perspective of the user, they can write code knowing that only a single subscription worker will run on a given document at a time. This is a very powerful promise and can significantly simplify the complexity of building your systems. A single worker that is stalling will not prevent the other workers from making progress. There aren&rsquo;t any timeouts to deal with. If you have a process that may take a long time, as long as the worker is alive and functioning (maintaining the TCP connection to the server), the server will consider the documents that the worker is processing as checked out.</p> <p>Concurrent subscriptions require you to opt in, using the <em>Concurrent</em> flag. All workers for a subscription must agree to run in a concurrent mode. This is to ensure that there aren&rsquo;t any workers that expect pure serial work model. If you aren&rsquo;t setting this flag, you&rsquo;ll keep getting the usual serial behavior of subscriptions. We require opting in to this behavior because we violate an important guarantee of the subscription, that you&rsquo;ll process the documents in the order in which they were modified. This is now no longer the case, obviously.</p> <p>The first worker to connect to a subscription will determine if it will run in concurrent mode or serial mode. Any new worker trying to run on that subscription needs to be concurrent (if the first one was concurrent) and no concurrent worker can join a subscription that has a serial worker active. This is a <em>transient setting</em>, it is important to note. When the last worker is shut down, the subscription state is reset, and then you can connect a worker for the first time again (which will then be able to set the mode of the subscription).</p> <p>You can see in the benchmark image on the right the impact of adding concurrent workers when there is a non trivial processing time. It is important to note that the concurrent part of the concurrent subscriptions is the fact that the <em>workers</em> are running in parallel. We are still sending batches of documents for each worker independently and then waiting for confirmation. If you have no significant processing time for a batch, you&rsquo;ll not see a significant improvement in processing time (the server side cost of processing the documents, sending the batch, etc is related to the total number of documents, and won&rsquo;t be impacted).</p> <p>Concurrent subscriptions are available in RavenDB 5.3 (due to be released by mid November) and will be available in the Professional and Enterprise editions of RavenDB.</p>https://www.ayende.com/blog/195265-C/ravendb-5-3-new-features-concurrent-subscriptions?Key=39012fb5-d555-413d-8fd0-50479b6c6322https://www.ayende.com/blog/195265-C/ravendb-5-3-new-features-concurrent-subscriptions?Key=39012fb5-d555-413d-8fd0-50479b6c6322Wed, 10 Nov 2021 12:00:00 GMT