aboutsummaryrefslogtreecommitdiff
path: root/po/eo/LC_MESSAGES/_slides
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2022-01-16 16:52:43 -0300
committerEuAndreh <eu@euandre.org>2022-01-16 16:52:43 -0300
commit1fc994f588dd9ef2ef8395e57e2492a6b4d730eb (patch)
treeab518e8c2c229ec60ba921adbf9897b25520b99d /po/eo/LC_MESSAGES/_slides
parent.ignore: Remove unused file (diff)
downloadeuandre.org-1fc994f588dd9ef2ef8395e57e2492a6b4d730eb.tar.gz
euandre.org-1fc994f588dd9ef2ef8395e57e2492a6b4d730eb.tar.xz
git mv locale/ po/
Diffstat (limited to 'po/eo/LC_MESSAGES/_slides')
-rw-r--r--po/eo/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po456
-rw-r--r--po/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po166
-rw-r--r--po/eo/LC_MESSAGES/_slides/2020-10-22-graphql-for-bffs-navigating-the-trade-offs.slides.po237
-rw-r--r--po/eo/LC_MESSAGES/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides.po339
-rw-r--r--po/eo/LC_MESSAGES/_slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides.po330
5 files changed, 1528 insertions, 0 deletions
diff --git a/po/eo/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po b/po/eo/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po
new file mode 100644
index 0000000..065fb90
--- /dev/null
+++ b/po/eo/LC_MESSAGES/_slides/2020-10-19-rollout-feature-flag-experiment-operational-toggle.slides.po
@@ -0,0 +1,456 @@
+#
+msgid ""
+msgstr ""
+
+msgid "Rollout, feature flag, experiment, operational toggle"
+msgstr ""
+
+msgid "Different use cases for **backend**, **frontend** and **mobile**"
+msgstr ""
+
+msgid ""
+"\"Feature flags\" tend to come up when talking about **continuous "
+"deployment**"
+msgstr ""
+
+msgid "???"
+msgstr ""
+
+msgid "I'm using \"quotes\" because I'm mixing up different meanings of \"rollout\""
+msgstr ""
+
+msgid "CI"
+msgstr ""
+
+msgid "continuous integration"
+msgstr ""
+
+msgid "CD"
+msgstr ""
+
+msgid "continuous delivery"
+msgstr ""
+
+msgid "**continuous deployment**"
+msgstr ""
+
+msgid "Background: build vocabulary, why are feature flags related to CD"
+msgstr ""
+
+msgid "CI solves: manual integration of long-lived branches"
+msgstr ""
+
+msgid "CD solves: automation of deployment process"
+msgstr ""
+
+msgid "CD solves: releases as frequent as possible"
+msgstr ""
+
+msgid "That's where the \"GoCD\" name comes from"
+msgstr ""
+
+msgid "Types:"
+msgstr ""
+
+msgid "rollout"
+msgstr ""
+
+msgid "feature flag"
+msgstr ""
+
+msgid "experiment"
+msgstr ""
+
+msgid "operational toggle"
+msgstr ""
+
+msgid "For *rolling out* a new version of software"
+msgstr ""
+
+msgid "**Short-lived** using **percentages**"
+msgstr ""
+
+msgid ""
+"a [new deployment of "
+"k8s](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-"
+"a-deployment)"
+msgstr ""
+
+msgid ""
+"new [APK released to the Play "
+"Store](https://support.google.com/googleplay/android-"
+"developer/answer/6346149?hl=en)"
+msgstr ""
+
+msgid "Relevant as long as the new code is deployed"
+msgstr ""
+
+msgid "For turning a feature *on* or *off*"
+msgstr ""
+
+msgid ""
+"**Medium-lived** using **allow list**, **A/B test**, **percentage**, **app "
+"version**, *etc*."
+msgstr ""
+
+msgid "`:new-chargeback-flow`"
+msgstr ""
+
+msgid "`:new-debit-card-activation-screen`"
+msgstr ""
+
+msgid "Relevant as long as the new code is being developed"
+msgstr ""
+
+msgid "For analyzing behaviour"
+msgstr ""
+
+msgid "**Medium-lived** using **allow list** and **A/B test**"
+msgstr ""
+
+msgid "`:debit-withdrawal-test`"
+msgstr ""
+
+msgid "For disabling features in `#crash`-like situations"
+msgstr ""
+
+msgid "**Long-lived** using **percentage**"
+msgstr ""
+
+msgid "`:bank-barcode-payment`"
+msgstr ""
+
+msgid "`:savings-bank-barcode-query-provider`"
+msgstr ""
+
+msgid "Lives for as long as the code is in production."
+msgstr ""
+
+msgid "It feels like a system-level circuit breaker."
+msgstr ""
+
+msgid "We now know about the types"
+msgstr ""
+
+msgid ""
+"But they have different relevance for **backend**, **frontend** and "
+"**mobile**"
+msgstr ""
+
+msgid "backend"
+msgstr ""
+
+msgid "**experiment**: `common-xp`"
+msgstr ""
+
+msgid ""
+"This is a bit why common-rollout isn't called *common-feature-flag*: it was "
+"initially designed with backend usage of mostly *rollouts* in mind, and just"
+" a bit *feature flags*."
+msgstr ""
+
+msgid ""
+"Avoid using configuration for doing operational toggles: it is less dynamic,"
+" so it defeats the purpose."
+msgstr ""
+
+msgid "frontend"
+msgstr ""
+
+msgid "**rollout**: CDN and page refreshes"
+msgstr ""
+
+msgid ""
+"**feature flag**: percentages and maybe IPs (no `:customer/id` on the "
+"website)"
+msgstr ""
+
+msgid "**experiment**: via dynamic backend control"
+msgstr ""
+
+msgid "**operational toggle**: via dynamic backend control"
+msgstr ""
+
+msgid "mobile"
+msgstr ""
+
+msgid "**rollout**: app stores"
+msgstr ""
+
+msgid "**feature flag**: via dynamic backend control"
+msgstr ""
+
+msgid "Key differentiator is"
+msgstr ""
+
+msgid "How much **control** we have over the **environment**"
+msgstr ""
+
+msgid "**backend**"
+msgstr ""
+
+msgid "Full control"
+msgstr ""
+
+msgid "🎉"
+msgstr ""
+
+msgid "Can edit, update and even delete rollouts as desired."
+msgstr ""
+
+msgid "Mix and match at will!"
+msgstr ""
+
+msgid "**frontend**"
+msgstr ""
+
+msgid "Partial control"
+msgstr ""
+
+msgid "When choose when to make a new version available"
+msgstr ""
+
+msgid ""
+"We can control when a new version is available, partially when someone will "
+"upgrade it."
+msgstr ""
+
+msgid "But it is easy to fallback to \"reload the page and try again\"."
+msgstr ""
+
+msgid "**mobile**"
+msgstr ""
+
+msgid "Very limited control"
+msgstr ""
+
+msgid "app stores can restrict updates (worse for iOS)"
+msgstr ""
+
+msgid "customers still have to download new versions"
+msgstr ""
+
+msgid "Costs"
+msgstr ""
+
+msgid "more complex code"
+msgstr ""
+
+msgid "compatibility with old app versions"
+msgstr ""
+
+msgid "nesting is exponential"
+msgstr ""
+
+msgid "Benefits"
+msgstr ""
+
+msgid "dynamicity"
+msgstr ""
+
+msgid "Best practices"
+msgstr ""
+
+msgid "Dynamic content > feature flag"
+msgstr ""
+
+msgid "Always true for **mobile**, almost always for **frontend**"
+msgstr ""
+
+msgid "Use `:include-list` for named groups"
+msgstr ""
+
+msgid "Always true for **backend**, **frontend** and **mobile**"
+msgstr ""
+
+msgid "{% raw %}"
+msgstr ""
+
+msgid ""
+"{:rules\n"
+" #{{:type :include-list\n"
+" :content {:filename \"debit-team-members.txt\"}}}}\n"
+msgstr ""
+
+msgid "{% endraw %}"
+msgstr ""
+
+msgid "Always use `:app-version`"
+msgstr ""
+
+msgid "only for **mobile**"
+msgstr ""
+
+msgid ""
+"{:rules\n"
+" #{{:type :app-version\n"
+" :content {:min-version #{{:platform :android\n"
+" :code 1000000}\n"
+" {:platform :ios\n"
+" :code 2000000}}}}}}\n"
+msgstr ""
+
+msgid "That's how `:include-list`, `:app-version`, *etc.* were born"
+msgstr ""
+
+msgid "Beware of many nested feature flags"
+msgstr ""
+
+msgid "True for **backend**, **frontend** and **mobile**"
+msgstr ""
+
+msgid "Exponential growth of combinations"
+msgstr ""
+
+msgid "Don't delete app-facing feature flags"
+msgstr ""
+
+msgid "True for **mobile**"
+msgstr ""
+
+msgid "This could break old app versions, only do this intentionally"
+msgstr ""
+
+msgid ""
+"We don't have (yet) a strategy for dealing with LTS of the app, and we just "
+"say: \"we'll support every app version out there\"."
+msgstr ""
+
+msgid "Include a feature flag on the whiteboarding phase"
+msgstr ""
+
+msgid "Include deleting/retiring the feature flag at the end"
+msgstr ""
+
+msgid "Avoid renaming a feature flag"
+msgstr ""
+
+msgid "Use `:app-version` with `:min-version` instead"
+msgstr ""
+
+msgid "And most importantly..."
+msgstr ""
+
+msgid "***Always*** rely on a feature flag on the app"
+msgstr ""
+
+msgid "Never do a hot fix, avoid expedited releases at all costs"
+msgstr ""
+
+msgid ""
+"The app is where we have less control, so the feature flag is how we get "
+"some of that control back."
+msgstr ""
+
+msgid "This doesn't mean you'll need 1 feature flag per PR"
+msgstr ""
+
+msgid ""
+"There's not such thing as: \"This is such a small thing, it doesn't need a "
+"feature flag\""
+msgstr ""
+
+msgid ""
+"You should ask yourself: \"It this crashes the app, am I OK with waiting for"
+" the next release train?\""
+msgstr ""
+
+msgid "Thank you!"
+msgstr ""
+
+msgid "References:"
+msgstr ""
+
+msgid ""
+"\"[Feature Toggles (aka Feature "
+"Flags)](https://martinfowler.com/articles/feature-toggles.html)\", by Pete "
+"Hodgson"
+msgstr ""
+
+msgid ""
+"\"[Continuous integration vs. continuous delivery vs. continuous "
+"deployment](https://www.atlassian.com/continuous-"
+"delivery/principles/continuous-integration-vs-delivery-vs-deployment)\", by "
+"Sten Pittet"
+msgstr ""
+
+msgid ""
+"[Accelerate](https://itrevolution.com/book/accelerate/), by N. Forsgren, J. "
+"Humble and G. Kim"
+msgstr ""
+
+msgid "Weighting costs × benefits"
+msgstr ""
+
+msgid "The less control we have, the more we value dynamicity"
+msgstr ""
+
+msgid "backend: sometimes worth the cost"
+msgstr ""
+
+msgid "frontend: almost always worth cost"
+msgstr ""
+
+msgid "mobile: **always** worth cost"
+msgstr ""
+
+msgid "title: Rollout, feature flag, experiment, operational toggle"
+msgstr ""
+
+msgid "date: 2020-10-19"
+msgstr ""
+
+msgid "layout: slides"
+msgstr ""
+
+msgid "lang: en"
+msgstr ""
+
+msgid "ref: rollout-feature-flag-experiment-operational-toggle"
+msgstr ""
+
+msgid ""
+"article: _articles/2020-10-19-feature-flags-differences-between-backend-"
+"frontend-and-mobile.md"
+msgstr ""
+
+msgid ""
+"**rollout**: k8s blue/green, canary and ~~`common-rollout`~~ `common-xp`"
+msgstr ""
+
+msgid "**feature flag**: ~~`common-rollout`~~ `common-xp` and datasets"
+msgstr ""
+
+msgid "**operational toggle**: ~~`common-rollout`~~ `common-xp`"
+msgstr ""
+
+msgid "Extend ~~`common-rollout`~~ `common-xp` if required"
+msgstr ""
+
+#~ msgid "**rollout**: k8s blue/green, canary and `common-rollout`"
+#~ msgstr ""
+
+#~ msgid "**feature flag**: `common-rollout` and datasets"
+#~ msgstr ""
+
+#~ msgid "**operational toggle**: `common-rollout`"
+#~ msgstr ""
+
+#~ msgid "Extend `common-rollout` if required"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "title: Rollout, feature flag, experiment, operational toggle\n"
+#~ "date: 2020-10-19\n"
+#~ "layout: slides\n"
+#~ "lang: en\n"
+#~ "ref: rollout-feature-flag-experiment-operational-toggle"
+#~ msgstr ""
+
+#~ msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "[prose version of this presentation]({% link _articles/2020-10-19-feature-"
+#~ "flags-differences-between-backend-frontend-and-mobile.md %})"
+#~ msgstr ""
diff --git a/po/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po b/po/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
new file mode 100644
index 0000000..78298f6
--- /dev/null
+++ b/po/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
@@ -0,0 +1,166 @@
+#
+msgid ""
+msgstr ""
+
+msgid ""
+"title: \"Datomic on global: good reasons for and against it\"\n"
+"date: 2020-10-22\n"
+"layout: slides\n"
+"lang: en\n"
+"ref: datomic-on-global-good-reasons-for-and-against-it\n"
+"published: false"
+msgstr ""
+
+msgid "Datomic on global"
+msgstr ""
+
+msgid "**Good** reasons for and against it"
+msgstr ""
+
+msgid "When creating a new service..."
+msgstr ""
+
+msgid "...which is, in my opinion, a poor heuristic."
+msgstr ""
+
+msgid "notifications vs toasty"
+msgstr ""
+
+msgid "jurassic-park vs auth"
+msgstr ""
+
+msgid "Thank you!"
+msgstr ""
+
+msgid "References:"
+msgstr ""
+
+msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})"
+msgstr ""
+
+msgid ""
+"[prose version of this presentation]({% link _articles/2020-10-22-datomic-"
+"on-global-good-reasons-for-and-against-it.md %})"
+msgstr ""
+
+msgid "Premise"
+msgstr ""
+
+msgid "Datomic's bottleneck is **write** throughput, not read"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [prototype (prototype-for-service service)]\n"
+" (if (= :global prototype)\n"
+" :datomic\n"
+" #{:dynamodb :redis :nothing})))\n"
+msgstr ""
+
+msgid ""
+"The deciding factor shouldn't be the prototype, but the **cardinality**"
+msgstr ""
+
+msgid ""
+" (defn database-for-service\n"
+" [service]\n"
+"- (let [prototype (prototype-for-service service)]\n"
+"- (if (= :global prototype)\n"
+"- :datomic\n"
+"- #{:dynamodb :redis :nothing})))\n"
+"+ (let [cardinality (cardinality-for-service service)]\n"
+"+ (if (= :too-high cardinality)\n"
+"+ #{:dynamodb :redis :nothing\n"
+"+ :datomic))))\n"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [cardinality (cardinality-for-service service)]\n"
+" (if (= :too-high cardinality)\n"
+" #{:dynamodb :redis :nothing\n"
+" :datomic))))\n"
+msgstr ""
+
+msgid "But how to determine when the cardinality is"
+msgstr ""
+
+msgid "**`:too-high`**?"
+msgstr ""
+
+msgid "Let's think about the cardinality of existing services we know"
+msgstr ""
+
+msgid "What is the cardinality of..."
+msgstr ""
+
+msgid "savings-accounts"
+msgstr ""
+
+msgid "inductor"
+msgstr ""
+
+msgid "crebito"
+msgstr ""
+
+msgid "diablo"
+msgstr ""
+
+msgid "lost-boy?"
+msgstr ""
+
+msgid "hook?"
+msgstr ""
+
+msgid "ledger"
+msgstr ""
+
+msgid "blackleach"
+msgstr ""
+
+msgid "notification"
+msgstr ""
+
+msgid "toasty"
+msgstr ""
+
+msgid "auth"
+msgstr ""
+
+msgid "waypoint"
+msgstr ""
+
+msgid "jurassic-park"
+msgstr ""
+
+msgid "Compare the database choice of services with similar cardinalities:"
+msgstr ""
+
+msgid "Compare different cardinalities for services on global prototype:"
+msgstr ""
+
+msgid ""
+"Compare different cardinality for different services inside the same domain:"
+msgstr ""
+
+msgid "savings-accounts -> blackleach -> diablo -> ledger"
+msgstr ""
+
+msgid ""
+"\"[Understanding Database "
+"Sharding](https://www.digitalocean.com/community/tutorials/understanding-"
+"database-sharding)\""
+msgstr ""
+
+#~ msgid ""
+#~ "(defn prototype->database\n"
+#~ " [prototype]\n"
+#~ " (if (= :global prototype)\n"
+#~ " :datomic\n"
+#~ " #{:dynamodb :redis :nothing}))\n"
+#~ msgstr ""
+
+#~ msgid "blackleach -> diablo -> ledger"
+#~ msgstr ""
diff --git a/po/eo/LC_MESSAGES/_slides/2020-10-22-graphql-for-bffs-navigating-the-trade-offs.slides.po b/po/eo/LC_MESSAGES/_slides/2020-10-22-graphql-for-bffs-navigating-the-trade-offs.slides.po
new file mode 100644
index 0000000..4765ffb
--- /dev/null
+++ b/po/eo/LC_MESSAGES/_slides/2020-10-22-graphql-for-bffs-navigating-the-trade-offs.slides.po
@@ -0,0 +1,237 @@
+#
+msgid ""
+msgstr ""
+
+msgid ""
+"title: \"GraphQL for BFFs: navigating the trade-offs\"\n"
+"date: 2020-10-22\n"
+"layout: slides\n"
+"lang: en\n"
+"ref: graphql-for-bffs-navigating-the-trade-offs\n"
+"published: false"
+msgstr ""
+
+msgid "GraphQL for BFFs"
+msgstr ""
+
+msgid "Navigating the trade-offs"
+msgstr ""
+
+msgid "???"
+msgstr ""
+
+msgid "slides já estão online, com sugestões incorporadas"
+msgstr ""
+
+msgid "artigo online"
+msgstr ""
+
+msgid "tupy: começar pelos slides é mais fácil"
+msgstr ""
+
+msgid "Mobile is **hard**"
+msgstr ""
+
+msgid "Immature ecosystem"
+msgstr ""
+
+msgid ""
+"Compared to desktop, browser and server ecosystem, which are many years "
+"older."
+msgstr ""
+
+msgid "iOS SDK released on 2008, which is:"
+msgstr ""
+
+msgid "the same year Python 3.0 was released;"
+msgstr ""
+
+msgid ""
+"1 year after Clojure's release and 13 years after Java's and JavaScript's "
+"release;"
+msgstr ""
+
+msgid "10 years after GTK release"
+msgstr ""
+
+msgid "Almost no competition"
+msgstr ""
+
+msgid "Effectively a duopoly, better than a monopoly, but meh."
+msgstr ""
+
+msgid "Closed, walled gardens."
+msgstr ""
+
+msgid "Less competition, lower quality."
+msgstr ""
+
+msgid "Compare to: browser ecosystem, desktop ecosystem"
+msgstr ""
+
+msgid "Little to no control over the environment"
+msgstr ""
+
+msgid "Bad on Android, worse on iOS."
+msgstr ""
+
+msgid "Our usage of GraphQL"
+msgstr ""
+
+msgid "History goes here"
+msgstr ""
+
+msgid "savings: React Native, GraphQL, TypeScript, stormshield"
+msgstr ""
+
+msgid "Proposal"
+msgstr ""
+
+msgid "Adopt GraphQL as the default for BFFs"
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "**data fetching** and **chaining**"
+msgstr ""
+
+msgid "It is not about:"
+msgstr ""
+
+msgid "over fetching"
+msgstr ""
+
+msgid "different clients with different data requirements"
+msgstr ""
+
+msgid "Goal"
+msgstr ""
+
+msgid ""
+"Move **complexity** out of mobile to the backend, get more **dynamicity** "
+"out of it ???"
+msgstr ""
+
+msgid "The complexity doesn't vanish or shrink, it just shifts."
+msgstr ""
+
+msgid ""
+"https://media.tenor.com/images/ce1962c14da22c969e664560e098b2bc/tenor.gif"
+msgstr ""
+
+msgid "Alternatives"
+msgstr ""
+
+msgid "AKA, why not \"just use a RESTful BFF\"?"
+msgstr ""
+
+msgid "REST"
+msgstr ""
+
+msgid "It doesn't address JOINs"
+msgstr ""
+
+msgid "Fulcro"
+msgstr ""
+
+msgid "For 10 reasons for using GraphQL, 8~9 are shared for Fulcro."
+msgstr ""
+
+msgid "The other 1~2 aren't so relevant:"
+msgstr ""
+
+msgid "data > syntax: already false for Swift, Kotlin, Dart"
+msgstr ""
+
+msgid "attributes > aggregates: already false for Swift, Kotlin, Dart"
+msgstr ""
+
+msgid "Falcor"
+msgstr ""
+
+msgid "SOAP"
+msgstr ""
+
+msgid "Implications"
+msgstr ""
+
+msgid "Invalid arguments"
+msgstr ""
+
+msgid "\"GraphQL isn't RESTful\""
+msgstr ""
+
+msgid "🤷"
+msgstr ""
+
+msgid "Similar to saying \"REST isn't GraphQL\""
+msgstr ""
+
+msgid "\"GraphQL has a bad caching story\""
+msgstr ""
+
+msgid "True, but we don't do HTTP caching"
+msgstr ""
+
+msgid "\"query-params can be used for selection in a BFF with REST\""
+msgstr ""
+
+msgid "👎"
+msgstr ""
+
+msgid "This isn't RESTful, and is an *ad-hoc* querying format"
+msgstr ""
+
+msgid "\"over-fetching isn't a problem\""
+msgstr ""
+
+msgid "That is not the main reason for GraphQL"
+msgstr ""
+
+msgid "\"library X for GraphQL is bad\""
+msgstr ""
+
+msgid "Valid arguments"
+msgstr ""
+
+msgid "\"Throttling by query complexity is hard\""
+msgstr ""
+
+msgid "Lessons learned"
+msgstr ""
+
+msgid "Error handling"
+msgstr ""
+
+msgid "Takeaways"
+msgstr ""
+
+msgid "None of the points are specific to Flutter"
+msgstr ""
+
+msgid "GraphQL enables declarative **dynamicity**"
+msgstr ""
+
+msgid "Thank you!"
+msgstr ""
+
+msgid "References:"
+msgstr ""
+
+msgid ""
+"[prose version of this presentation]({% link _articles/2020-10-22-graphql-"
+"for-bffs-navigating-the-trade-offs.md %})"
+msgstr ""
+
+msgid ""
+"\"[Clients in control: building demand-driven systems with Om "
+"Next](https://www.youtube.com/watch?v=Zb18iPjDgwM)\", by António Nuno "
+"Monteiro"
+msgstr ""
+
+msgid "\"[Om Next](https://www.youtube.com/watch?v=MDZpSIngwm4)\", by David Nolen"
+msgstr ""
+
+msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})"
+msgstr ""
diff --git a/po/eo/LC_MESSAGES/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides.po b/po/eo/LC_MESSAGES/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides.po
new file mode 100644
index 0000000..e34f58e
--- /dev/null
+++ b/po/eo/LC_MESSAGES/_slides/2020-10-26-on-local-first-beyond-the-crdt-silver-bullet.slides.po
@@ -0,0 +1,339 @@
+#
+msgid ""
+msgstr ""
+
+msgid "On local-first"
+msgstr ""
+
+msgid "Beyond the CRDT silver bullet"
+msgstr ""
+
+msgid "Part 1"
+msgstr ""
+
+msgid "Exposition"
+msgstr ""
+
+msgid "\"cloud apps\" vs \"old-fashined apps\""
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "documents"
+msgstr ""
+
+msgid "files"
+msgstr ""
+
+msgid "personal data repositories"
+msgstr ""
+
+msgid ""
+"Not: banking services, e-commerce, social networking, ride-sharing, *etc*."
+msgstr ""
+
+msgid "7 Ideals for local-first software"
+msgstr ""
+
+msgid "1 - No Spinners: Your Work at Your Fingertips"
+msgstr ""
+
+msgid "2 - Your Work Is Not Trapped on One Device"
+msgstr ""
+
+msgid "3 - The Network Is Optional"
+msgstr ""
+
+msgid "4 - Seamless Collaboration with Your Colleagues"
+msgstr ""
+
+msgid "5 - The Long Now"
+msgstr ""
+
+msgid "6 - Security and Privacy by Default"
+msgstr ""
+
+msgid "7 - You Retain Ultimate Ownership and Control"
+msgstr ""
+
+msgid "Towards a Better Future"
+msgstr ""
+
+msgid ""
+"CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology"
+msgstr ""
+
+msgid "Use case"
+msgstr ""
+
+msgid ""
+"# in node A and node B\n"
+"s = \"Hello, World\"\n"
+"\n"
+"# in node A\n"
+"s = \"Hello, Alice\"\n"
+"\n"
+"# in node B\n"
+"s = \"Hello, Bob\"\n"
+msgstr ""
+
+msgid "How to reconcile those?"
+msgstr ""
+
+msgid "`Hello, ABloibce`"
+msgstr ""
+
+msgid "`Hello, AliceBob`"
+msgstr ""
+
+msgid "`Hello, BobAlice`"
+msgstr ""
+
+msgid "`Hello, Alice`"
+msgstr ""
+
+msgid "`Hello, Bob`"
+msgstr ""
+
+msgid "Existing CRDTs differ:"
+msgstr ""
+
+msgid "performance"
+msgstr ""
+
+msgid "storage"
+msgstr ""
+
+msgid "compression"
+msgstr ""
+
+msgid "metadata overhead"
+msgstr ""
+
+msgid "Hint towards the \"automerge\" CRDT"
+msgstr ""
+
+msgid "*show comparison table, page 9*"
+msgstr ""
+
+msgid "Part 2"
+msgstr ""
+
+msgid "Critique"
+msgstr ""
+
+msgid "Software license"
+msgstr ""
+
+msgid ""
+"In our opinion, maintaining control and ownership of data does not mean that"
+" the software must necessarily be open source."
+msgstr ""
+
+msgid "Example 1 - intentional restriction"
+msgstr ""
+
+msgid ""
+"#!/bin/sh\n"
+"\n"
+"TODAY=$(date +%s)\n"
+"LICENSE_EXPIRATION=$(date -d 2020-10-27 +%s)\n"
+"\n"
+"if [ $TODAY -ge $LICENSE_EXPIRATION ]; then\n"
+" echo 'License expired!'\n"
+" exit 1\n"
+"fi\n"
+"\n"
+"echo $((2 + 2))\n"
+msgstr ""
+
+msgid ""
+"# today\n"
+"$ ./useful-adder.sh\n"
+"4\n"
+"# tomorrow\n"
+"$ ./useful-adder.sh\n"
+"License expired!\n"
+msgstr ""
+
+msgid "Example 2 - unintentional restriction"
+msgstr ""
+
+msgid ""
+"# today\n"
+"$ useful-program\n"
+"# ...useful output...\n"
+"\n"
+"# tomorrow, with more data\n"
+"$ useful-program\n"
+"ERROR: Panic! Stack overflow!\n"
+msgstr ""
+
+msgid "local-first **requires** free/libre software"
+msgstr ""
+
+msgid "Otherwise \"The Long Now\" (ideal nº5) is lost"
+msgstr ""
+
+msgid "Denial of existing solutions"
+msgstr ""
+
+msgid ""
+"In principle it is possible to collaborate without a repository service, "
+"e.g. by sending patch files by email, but the majority of Git users rely on "
+"GitHub."
+msgstr ""
+
+msgid "Solution: either GitHub+CRDTs or `git` **`send-email`**"
+msgstr ""
+
+msgid "Plain text formats"
+msgstr ""
+
+msgid "Git is highly optimized for code and similar line-based text file"
+msgstr ""
+
+msgid "It even pulls software to the plain text direction, e.g.:"
+msgstr ""
+
+msgid "delivery-templates"
+msgstr ""
+
+msgid "`common-core.protocols.config`"
+msgstr ""
+
+msgid "Why not exploit that more?"
+msgstr ""
+
+msgid "Ditching of web applications"
+msgstr ""
+
+msgid "The architecture of web apps remains fundamentally server-centric"
+msgstr ""
+
+msgid ""
+"Disagree. Constrast [PouchDB](https://pouchdb.com/) with Android [Instant "
+"Apps](https://developer.android.com/topic/google-play-instant)"
+msgstr ""
+
+msgid "???"
+msgstr ""
+
+msgid "Talk on dynamic content"
+msgstr ""
+
+msgid "Costs are underrated"
+msgstr ""
+
+msgid "backups"
+msgstr ""
+
+msgid "maintanence"
+msgstr ""
+
+msgid "Example: blog vs vlog"
+msgstr ""
+
+msgid "Real-time collaboration a bit overrated"
+msgstr ""
+
+msgid ""
+"It is only possible on the presence of reliable, medium-quality network "
+"connection"
+msgstr ""
+
+msgid "X also works when inside an elevator, subway or plane!"
+msgstr ""
+
+msgid "On CRDTs and developer experience"
+msgstr ""
+
+msgid ""
+"For an app developer, how does the use of a CRDT-based data layer compare to"
+" existing storage layers like a SQL database, a filesystem, or CoreData? Is "
+"a distributed system harder to write software for?"
+msgstr ""
+
+msgid "Yes."
+msgstr ""
+
+msgid ""
+"See \"[A Note on Distributed "
+"Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)\""
+msgstr ""
+
+msgid "Conclusion"
+msgstr ""
+
+msgid "Why this is a \"paper I love\": it took offline-first and ran with it."
+msgstr ""
+
+msgid "But a pinch of CRDT won't make the world local-first."
+msgstr ""
+
+msgid "The tricky part is the end of the sentence: \"**in spite of the Cloud**\"."
+msgstr ""
+
+msgid "Thank you!"
+msgstr ""
+
+msgid "References:"
+msgstr ""
+
+msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})"
+msgstr ""
+
+msgid ""
+"\"[Local-First Software: You Own Your Data, in spite of the "
+"Cloud](https://martin.kleppmann.com/papers/local-first.pdf)\", by M. "
+"Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan"
+msgstr ""
+
+msgid ""
+"[The Morning Paper](https://blog.acolyer.org/2019/11/20/local-first-"
+"software/) article"
+msgstr ""
+
+msgid "title: 'On \"local-first\": beyond the CRDT silver bullet'"
+msgstr ""
+
+msgid "date: 2020-10-26"
+msgstr ""
+
+msgid "layout: slides"
+msgstr ""
+
+msgid "lang: en"
+msgstr ""
+
+msgid "ref: on-local-first-beyond-the-crdt-silver-bullet"
+msgstr ""
+
+msgid "published: false"
+msgstr ""
+
+msgid ""
+"[prose version of this presentation]({% link _articles/2020-10-26-local-"
+"first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md %})"
+msgstr ""
+
+msgid ""
+"\"[A Note on Distributed "
+"Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)\","
+" by J. Waldo, G. Wyant, A. Wollrath and S Kendall"
+msgstr ""
+
+#~ msgid ""
+#~ "title: 'On \"local-first\": beyond the CRDT silver bullet'\n"
+#~ "date: 2020-10-26\n"
+#~ "layout: slides\n"
+#~ "lang: en\n"
+#~ "ref: on-local-first-beyond-the-crdt-silver-bullet\n"
+#~ "published: false"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "[prose version of this presentation]({% link _articles/2020-10-26-on-local-"
+#~ "first-beyond-the-crdt-silver-bullet.md %})"
+#~ msgstr ""
diff --git a/po/eo/LC_MESSAGES/_slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides.po b/po/eo/LC_MESSAGES/_slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides.po
new file mode 100644
index 0000000..61a7485
--- /dev/null
+++ b/po/eo/LC_MESSAGES/_slides/2020-11-14-on-local-first-beyond-the-crdt-silver-bullet.slides.po
@@ -0,0 +1,330 @@
+#
+msgid ""
+msgstr ""
+
+msgid "title: 'On \"local-first\": beyond the CRDT silver bullet'"
+msgstr ""
+
+msgid "date: 2020-11-14"
+msgstr ""
+
+msgid "layout: slides"
+msgstr ""
+
+msgid "lang: en"
+msgstr ""
+
+msgid "ref: on-local-first-beyond-the-crdt-silver-bullet"
+msgstr ""
+
+msgid "On local-first"
+msgstr ""
+
+msgid "Beyond the CRDT silver bullet"
+msgstr ""
+
+msgid "Part 1"
+msgstr ""
+
+msgid "Exposition"
+msgstr ""
+
+msgid "\"cloud apps\" vs \"old-fashioned apps\""
+msgstr ""
+
+msgid "Target"
+msgstr ""
+
+msgid "documents"
+msgstr ""
+
+msgid "files"
+msgstr ""
+
+msgid "personal data repositories"
+msgstr ""
+
+msgid ""
+"Not: banking services, e-commerce, social networking, ride-sharing, *etc*."
+msgstr ""
+
+msgid "7 Ideals for local-first software"
+msgstr ""
+
+msgid "1 - No Spinners: Your Work at Your Fingertips"
+msgstr ""
+
+msgid "2 - Your Work Is Not Trapped on One Device"
+msgstr ""
+
+msgid "3 - The Network Is Optional"
+msgstr ""
+
+msgid "4 - Seamless Collaboration with Your Colleagues"
+msgstr ""
+
+msgid "5 - The Long Now"
+msgstr ""
+
+msgid "6 - Security and Privacy by Default"
+msgstr ""
+
+msgid "7 - You Retain Ultimate Ownership and Control"
+msgstr ""
+
+msgid "Towards a Better Future"
+msgstr ""
+
+msgid ""
+"CRDTs (Conflict-free Replicated Data Types) as a Foundational Technology"
+msgstr ""
+
+msgid "Use case"
+msgstr ""
+
+msgid ""
+"# in node A and node B\n"
+"s = \"Hello, World\"\n"
+"\n"
+"# in node A\n"
+"s = \"Hello, Alice\"\n"
+"\n"
+"# in node B\n"
+"s = \"Hello, Bob\"\n"
+msgstr ""
+
+msgid "How to reconcile those?"
+msgstr ""
+
+msgid "`Hello, ABloibce`"
+msgstr ""
+
+msgid "`Hello, AliceBob`"
+msgstr ""
+
+msgid "`Hello, BobAlice`"
+msgstr ""
+
+msgid "`Hello, Alice`"
+msgstr ""
+
+msgid "`Hello, Bob`"
+msgstr ""
+
+msgid "Existing CRDTs differ:"
+msgstr ""
+
+msgid "performance"
+msgstr ""
+
+msgid "storage"
+msgstr ""
+
+msgid "compression"
+msgstr ""
+
+msgid "metadata overhead"
+msgstr ""
+
+msgid "Hint towards the \"automerge\" CRDT"
+msgstr ""
+
+msgid "*show comparison table, page 9*"
+msgstr ""
+
+msgid "Part 2"
+msgstr ""
+
+msgid "Critique"
+msgstr ""
+
+msgid "Software license"
+msgstr ""
+
+msgid ""
+"In our opinion, maintaining control and ownership of data does not mean that"
+" the software must necessarily be open source."
+msgstr ""
+
+msgid "Example 1 - intentional restriction"
+msgstr ""
+
+msgid ""
+"#!/bin/sh\n"
+"\n"
+"TODAY=$(date +%s)\n"
+"LICENSE_EXPIRATION=$(date -d 2020-10-27 +%s)\n"
+"\n"
+"if [ $TODAY -ge $LICENSE_EXPIRATION ]; then\n"
+" echo 'License expired!'\n"
+" exit 1\n"
+"fi\n"
+"\n"
+"echo $((2 + 2))\n"
+msgstr ""
+
+msgid ""
+"# today\n"
+"$ ./useful-adder.sh\n"
+"4\n"
+"# tomorrow\n"
+"$ ./useful-adder.sh\n"
+"License expired!\n"
+msgstr ""
+
+msgid "Example 2 - unintentional restriction"
+msgstr ""
+
+msgid ""
+"# today\n"
+"$ useful-program\n"
+"# ...useful output...\n"
+"\n"
+"# tomorrow, with more data\n"
+"$ useful-program\n"
+"ERROR: Panic! Stack overflow!\n"
+msgstr ""
+
+msgid "Otherwise \"The Long Now\" (ideal nº5) is lost"
+msgstr ""
+
+msgid "Denial of existing solutions"
+msgstr ""
+
+msgid ""
+"In principle it is possible to collaborate without a repository service, "
+"e.g. by sending patch files by email, but the majority of Git users rely on "
+"GitHub."
+msgstr ""
+
+msgid "Solution: either GitHub+CRDTs or `git` **`send-email`**"
+msgstr ""
+
+msgid "Plain text formats"
+msgstr ""
+
+msgid "Git is highly optimized for code and similar line-based text file"
+msgstr ""
+
+msgid "It even pulls software to the plain text direction, e.g.:"
+msgstr ""
+
+msgid "delivery-templates"
+msgstr ""
+
+msgid "`common-core.protocols.config`"
+msgstr ""
+
+msgid "Why not exploit that more?"
+msgstr ""
+
+msgid "Ditching of web applications"
+msgstr ""
+
+msgid "The architecture of web apps remains fundamentally server-centric"
+msgstr ""
+
+msgid ""
+"Disagree. Contrast [PouchDB](https://pouchdb.com/) with Android [Instant "
+"Apps](https://developer.android.com/topic/google-play-instant)"
+msgstr ""
+
+msgid "???"
+msgstr ""
+
+msgid "Talk on dynamic content"
+msgstr ""
+
+msgid "Costs are underrated"
+msgstr ""
+
+msgid "backups"
+msgstr ""
+
+msgid "maintenance"
+msgstr ""
+
+msgid "Example: blog vs vlog"
+msgstr ""
+
+msgid "Real-time collaboration a bit overrated"
+msgstr ""
+
+msgid ""
+"It is only possible on the presence of reliable, medium-quality network "
+"connection"
+msgstr ""
+
+msgid "X also works when inside an elevator, subway or plane!"
+msgstr ""
+
+msgid "On CRDTs and developer experience"
+msgstr ""
+
+msgid ""
+"For an app developer, how does the use of a CRDT-based data layer compare to"
+" existing storage layers like a SQL database, a filesystem, or CoreData? Is "
+"a distributed system harder to write software for?"
+msgstr ""
+
+msgid "Yes."
+msgstr ""
+
+msgid ""
+"See \"[A Note on Distributed "
+"Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)\""
+msgstr ""
+
+msgid "Conclusion"
+msgstr ""
+
+msgid "Why this is a \"paper I love\": it took offline-first and ran with it."
+msgstr ""
+
+msgid "But a pinch of CRDT won't make the world local-first."
+msgstr ""
+
+msgid "The tricky part is the end of the sentence: \"**in spite of the Cloud**\"."
+msgstr ""
+
+msgid "Thank you!"
+msgstr ""
+
+msgid "References:"
+msgstr ""
+
+msgid ""
+"\"[Local-First Software: You Own Your Data, in spite of the "
+"Cloud](https://martin.kleppmann.com/papers/local-first.pdf)\", by M. "
+"Kleppmann, A. Wiggins, P. Van Hardenberg and M. F. McGranaghan"
+msgstr ""
+
+msgid ""
+"[The Morning Paper](https://blog.acolyer.org/2019/11/20/local-first-"
+"software/) article"
+msgstr ""
+
+msgid ""
+"\"[A Note on Distributed "
+"Computing](https://web.archive.org/web/20130116163535/http://labs.oracle.com/techrep/1994/smli_tr-94-29.pdf)\","
+" by J. Waldo, G. Wyant, A. Wollrath and S Kendall"
+msgstr ""
+
+msgid ""
+"article: _articles/2020-11-14-local-first-software-you-own-your-data-in-"
+"spite-of-the-cloud-article-review.md"
+msgstr ""
+
+msgid "local-first **requires** free software"
+msgstr ""
+
+#~ msgid "local-first **requires** free/libre software"
+#~ msgstr ""
+
+#~ msgid "these slides: [{{ site.tld }}/slides.html]({% link slides.md %})"
+#~ msgstr ""
+
+#~ msgid ""
+#~ "[prose version of this presentation]({% link _articles/2020-11-14-local-"
+#~ "first-software-you-own-your-data-in-spite-of-the-cloud-article-review.md %})"
+#~ msgstr ""