<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bookmarks tagged “architecture” on Maceage's Blog</title><link>https://blog.maceage.com/bookmarks/tags/architecture/</link><description>Recent content in Bookmarks tagged “architecture” on Maceage's Blog</description><generator>Hugo</generator><language>en-au</language><copyright>© Graham Mace</copyright><lastBuildDate>Mon, 23 Mar 2026 05:07:20 +0000</lastBuildDate><atom:link href="https://blog.maceage.com/bookmarks/tags/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Bookmarks tagged “architecture”</title><link>https://blog.maceage.com/bookmarks/tags/architecture/page/2/</link><pubDate>Mon, 23 Mar 2026 05:07:20 +0000</pubDate><guid>https://blog.maceage.com/bookmarks/tags/architecture/page/2/</guid><description>&lt;p&gt;97 bookmarks tagged “architecture”&lt;/p&gt;&#10;&lt;div class="Box"&gt;&#10;&lt;p&gt;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.cncf.io/blog/2020/10/29/kubernetes-1-19-the-future-of-traffic-ingress-and-routing" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/38/images/1055999036.png" alt="Kubernetes 1.19: The future of traffic ingress and routing | Cloud Native C" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.cncf.io/blog/2020/10/29/kubernetes-1-19-the-future-of-traffic-ingress-and-routing" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Kubernetes 1.19: The future of traffic ingress and routing | Cloud Native C&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-11-06"&gt;Saved on 2020-11-06&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;cncf.io&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Guest post originally published on eficode’s blog by Michael Vittrup Larsen, Consultant at eficode The Kubernetes community is giving up on Ingress and will…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://fs.blog/2020/10/why-life-cant-be-simpler" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/39/images/1055999005.png" alt="Why Life Can’t Be Simpler" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://fs.blog/2020/10/why-life-cant-be-simpler" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Why Life Can’t Be Simpler&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-11-04"&gt;Saved on 2020-11-04&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;fs.blog&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;We’d all like life to be simpler. But we also don’t want to sacrifice our options and capabilities. Tesler’s law of the conservation of complexity, a rule from design, explains why we can’t have both. Here’s how the law can help us create better products and services by rethinkin&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://dev.to/luistak/cross-micro-frontends-communication-30m3" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/39/images/1055999011.webp" alt="⚔️ Cross micro frontends communication ? - DEV" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://dev.to/luistak/cross-micro-frontends-communication-30m3" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;⚔️ Cross micro frontends communication ? - DEV&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-10-29"&gt;Saved on 2020-10-29&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;dev.to&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;In this article, I&amp;#39;m going to explain some ways to communicate between multiple applications and a pa...&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/javascript/" class="Label Label--secondary mr-1 mb-1"&gt;javascript&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://martinfowler.com/articles/talk-about-platforms.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/39/images/1055997669.png" alt="What I Talk About When I Talk About Platforms" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://martinfowler.com/articles/talk-about-platforms.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;What I Talk About When I Talk About Platforms&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-10-28"&gt;Saved on 2020-10-28&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;martinfowler.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;These days everyone is building a &amp;#39;platform&amp;#39; to speed up delivery of digital products. But what makes an effective digital platform?&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://dev.to/rahul_ramfort/why-do-microservices-need-an-api-gateway-503i" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/39/images/1055999002.jpg" alt="Why do microservices need an API Gateway? - DEV" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://dev.to/rahul_ramfort/why-do-microservices-need-an-api-gateway-503i" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Why do microservices need an API Gateway? - DEV&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-10-25"&gt;Saved on 2020-10-25&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;dev.to&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;API Gateways are becoming increasingly popular with the microservice architecture. Recently, Google a...&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://how.complexsystems.fail" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/40/images/1055997640.webp" alt="How Complex Systems Fail" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://how.complexsystems.fail" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;How Complex Systems Fail&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-10-12"&gt;Saved on 2020-10-12&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;how.complexsystems.fail&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://eng.uber.com/money-scale-strong-data" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Revolutionizing Money Movements at Scale with Strong Data Consistency | Ube" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://eng.uber.com/money-scale-strong-data" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Revolutionizing Money Movements at Scale with Strong Data Consistency | Ube&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-10-12"&gt;Saved on 2020-10-12&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;eng.uber.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;While we expand to multiple lines of businesses, and strategize the next best, the engineers in Uber Money also thrive on building the next generation’s Payments Platform which extends Uber’s growth. In this blog, we introduce you to this platform and provide insights into our le&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@jgilbert001/combining-the-best-of-aws-eventbridge-and-aws-kinesis-9b363b043ade" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/41/images/1055997882.png" alt="Combining the Best of AWS EventBridge and AWS Kinesis | by John Gilbert | M" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@jgilbert001/combining-the-best-of-aws-eventbridge-and-aws-kinesis-9b363b043ade" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Combining the Best of AWS EventBridge and AWS Kinesis | by John Gilbert | M&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-09-18"&gt;Saved on 2020-09-18&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;I have been using AWS Kinesis extensively and effectively, with AWS Lambda, since 2015. I am a big fan. Now we have another great alternative, AWS EventBridge. Each has its strengths and weaknesses…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/aws/" class="Label Label--secondary mr-1 mb-1"&gt;aws&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.uber.com/us/en/blog/microservice-architecture/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Introducing Domain-Oriented Microservice Architecture" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.uber.com/us/en/blog/microservice-architecture/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Introducing Domain-Oriented Microservice Architecture&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-09-01"&gt;Saved on 2020-09-01&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;uber.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Recently there has been substantial discussion around the downsides of service oriented architectures and microservice architectures in particular. While only a few years ago, many people readily adopted microservice architectures due to the numerous benefits they provide such as&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://searchapparchitecture.techtarget.com/feature/If-software-architects-soft-skills-fail-so-does-the-business" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/41/images/1055997922.jpg" alt="If software architects&amp;#39; soft skills fail, so does the business" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://searchapparchitecture.techtarget.com/feature/If-software-architects-soft-skills-fail-so-does-the-business" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;If software architects&amp;#39; soft skills fail, so does the business&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-09-01"&gt;Saved on 2020-09-01&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;searchapparchitecture.techtarget.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Mark Richards and Neal Ford, authors of &amp;#39;Fundamentals of Software Architecture,&amp;#39; share real-life examples of why architects must communicate well, and explain how to do it.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/career/" class="Label Label--secondary mr-1 mb-1"&gt;career&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/leadership/" class="Label Label--secondary mr-1 mb-1"&gt;leadership&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://kislayverma.com/products-are-not-platforms/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Products are not Platforms | Kislay Verma" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://kislayverma.com/products-are-not-platforms/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Products are not Platforms | Kislay Verma&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-31"&gt;Saved on 2020-08-31&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;kislayverma.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Learning to distinguish between products and platforms&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://kislayverma.com/being-fast-or-getting-faster-aka-build-momentum-not-velocity/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Being Fast or Getting Faster? (aka Build Momentum, not Velocity) | Kislay V" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://kislayverma.com/being-fast-or-getting-faster-aka-build-momentum-not-velocity/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Being Fast or Getting Faster? (aka Build Momentum, not Velocity) | Kislay V&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-31"&gt;Saved on 2020-08-31&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;kislayverma.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Setting the organization&amp;#39;s goal to being faster over time ids better than just trying to be fast right now&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.bugsnag.com/blog/using-grpc-in-production" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055997755.png" alt="A gRPC Example: Our experience designing and building gRPC services | Bugsn" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.bugsnag.com/blog/using-grpc-in-production" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;A gRPC Example: Our experience designing and building gRPC services | Bugsn&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-31"&gt;Saved on 2020-08-31&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;bugsnag.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Blog&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/humans-of-xero/ice-water-steam-reflecting-on-the-language-of-agile-teams-81c18d097c07" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055998974.jpg" alt="Ice, water, steam: reflecting on the language of agile teams | by James Ber" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/humans-of-xero/ice-water-steam-reflecting-on-the-language-of-agile-teams-81c18d097c07" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Ice, water, steam: reflecting on the language of agile teams | by James Ber&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-31"&gt;Saved on 2020-08-31&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Lately, I’ve been thinking about what we need to do to continue our journey towards world-class engineering, and perform at that level over the long term. I’ve also been thinking about how Xero’s…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/agile/" class="Label Label--secondary mr-1 mb-1"&gt;agile&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/leadership/" class="Label Label--secondary mr-1 mb-1"&gt;leadership&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@steve.yegge/dear-google-cloud-your-deprecation-policy-is-killing-you-ee7525dc05dc" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055998965.webp" alt="Dear Google Cloud: Your Deprecation Policy is Killing You | by Steve Yegge" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@steve.yegge/dear-google-cloud-your-deprecation-policy-is-killing-you-ee7525dc05dc" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Dear Google Cloud: Your Deprecation Policy is Killing You | by Steve Yegge&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-30"&gt;Saved on 2020-08-30&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;God dammit, I didn’t want to blog again. I have so much stuff to do. Blogging takes time and energy and creativity that I could be putting to good use: my novels, my music, my game, and so on. But…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/stories/" class="Label Label--secondary mr-1 mb-1"&gt;stories&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.oreilly.com/radar/microservices-adoption-in-2020/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055998940.jpg" alt="Microservices Adoption in 2020 – O’Reilly" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.oreilly.com/radar/microservices-adoption-in-2020/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Microservices Adoption in 2020 – O’Reilly&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-27"&gt;Saved on 2020-08-27&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;oreilly.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Everyone’s talking about microservices. Who’s actually doing it?&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/nick-tune-tech-strategy-blog/the-relationship-between-software-architecture-and-business-models-and-more-7209dc3be83e" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055998962.jpg" alt="The Relationship Between Software Architecture And Business Models (and mor" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/nick-tune-tech-strategy-blog/the-relationship-between-software-architecture-and-business-models-and-more-7209dc3be83e" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The Relationship Between Software Architecture And Business Models (and mor&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-12"&gt;Saved on 2020-08-12&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;As an architect, how often are you thinking about business models? If every significant architecture decision has business consequences, then knowing the business model and which trade-offs to choose…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.cgl.ucsf.edu/Outreach/pc204/NoSilverBullet.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/42/images/1055997630.webp" alt="No Silver Bullet" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.cgl.ucsf.edu/Outreach/pc204/NoSilverBullet.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;No Silver Bullet&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-11"&gt;Saved on 2020-08-11&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;cgl.ucsf.edu&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/learning/" class="Label Label--secondary mr-1 mb-1"&gt;learning&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://staffeng.com/stories/katie-sylor-miller" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Katie Sylor-Miller - Frontend Architect at Etsy | StaffEng" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://staffeng.com/stories/katie-sylor-miller" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Katie Sylor-Miller - Frontend Architect at Etsy | StaffEng&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-10"&gt;Saved on 2020-08-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;staffeng.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;This story was recorded in August, 2020. Learn more about Katie on her website, Linkedin, and Twitter. Tell us a little about your current role: your title, the company you work at, and generally what sort of work does your team do? I work at Etsy, which is the world’s leading on&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/career/" class="Label Label--secondary mr-1 mb-1"&gt;career&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/interviews/" class="Label Label--secondary mr-1 mb-1"&gt;interviews&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/blog/applying-conways-law-improve-your-software-development" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997655.jpg" alt="Applying Conway&amp;#39;s Law to improve your software development | ThoughtWorks" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/blog/applying-conways-law-improve-your-software-development" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Applying Conway&amp;#39;s Law to improve your software development | ThoughtWorks&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-07"&gt;Saved on 2020-08-07&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;thoughtworks.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Many organizations have become adept at identifying what they need from software development projects, based on a keen understanding of their business goals. Even so, they’re often surprised to find out that the end results don’t achieve the transformative impact they were expect&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/thoughtworks/" class="Label Label--secondary mr-1 mb-1"&gt;thoughtworks&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://iainbean.com/posts/2020/your-blog-doesnt-need-a-javascript-framework" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997908.png" alt="Your blog doesn’t need a JavaScript framework /// Iain Bean" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://iainbean.com/posts/2020/your-blog-doesnt-need-a-javascript-framework" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Your blog doesn’t need a JavaScript framework /// Iain Bean&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-08-01"&gt;Saved on 2020-08-01&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;iainbean.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Why I choose Eleventy over Gatsby for my new website&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://slack.engineering/all-hands-on-deck-91d6986c3ee" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997906.jpg" alt="All Hands on Deck. What does Slack do when Slack goes… | by Ryan Katkov | J" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://slack.engineering/all-hands-on-deck-91d6986c3ee" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;All Hands on Deck. What does Slack do when Slack goes… | by Ryan Katkov | J&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-07-21"&gt;Saved on 2020-07-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;slack.engineering&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;This story speaks to the process behind incident response at Slack and uses the May 12th, 2020 outage as an example. For a deeper technical review of the same outage, read Laura Nolan’s post, “A Terrible, Horrible, No-Good, Very Bad Day at Slack” Slack is a critical tool for mill&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://slack.engineering/a-terrible-horrible-no-good-very-bad-day-at-slack-dfe05b485f82" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997907.jpg" alt="A Terrible, Horrible, No-Good, Very Bad Day at Slack | by Laura Nolan | Jun" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://slack.engineering/a-terrible-horrible-no-good-very-bad-day-at-slack-dfe05b485f82" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;A Terrible, Horrible, No-Good, Very Bad Day at Slack | by Laura Nolan | Jun&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-07-21"&gt;Saved on 2020-07-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;slack.engineering&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;This story describes the technical details of the problems that caused the Slack downtime on May 12th, 2020. To learn more about the process behind incident response for same outage, read Ryan Katkov’s post, “All Hands on Deck”. On May 12, 2020, Slack had our first significant ou&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://blog.coinbase.com/container-technologies-at-coinbase-d4ae118dcb6c" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997895.jpg" alt="Container technologies at Coinbase | by Coinbase | Jun, 2020 | The Coinbase" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://blog.coinbase.com/container-technologies-at-coinbase-d4ae118dcb6c" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Container technologies at Coinbase | by Coinbase | Jun, 2020 | The Coinbase&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-07-21"&gt;Saved on 2020-07-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;blog.coinbase.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/aws/" class="Label Label--secondary mr-1 mb-1"&gt;aws&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.matuzo.at/blog/accessible-to-some" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/43/images/1055997905.jpg" alt="Accessible to some - Manuel Matuzović" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.matuzo.at/blog/accessible-to-some" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Accessible to some - Manuel Matuzović&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-07-21"&gt;Saved on 2020-07-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;matuzo.at&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;An experiment that tries to help you understand how bad accessibility affects users and their daily experiences on the web.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/design/" class="Label Label--secondary mr-1 mb-1"&gt;design&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Bookmarks tagged “architecture”</title><link>https://blog.maceage.com/bookmarks/tags/architecture/page/3/</link><pubDate>Mon, 23 Mar 2026 05:07:20 +0000</pubDate><guid>https://blog.maceage.com/bookmarks/tags/architecture/page/3/</guid><description>&lt;p&gt;97 bookmarks tagged “architecture”&lt;/p&gt;&#10;&lt;div class="Box"&gt;&#10;&lt;p&gt;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/articles/understanding-clouds-significance" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997903.jpg" alt="Understanding the significance of cloud | ThoughtWorks" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/articles/understanding-clouds-significance" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Understanding the significance of cloud | ThoughtWorks&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-29"&gt;Saved on 2020-06-29&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;thoughtworks.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;A whistle-stop tour of why cloud became the major platform for modern IT&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/cloud/" class="Label Label--secondary mr-1 mb-1"&gt;cloud&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/thoughtworks/" class="Label Label--secondary mr-1 mb-1"&gt;thoughtworks&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://martinfowler.com/articles/architect-elevator.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997643.jpg" alt="The Architect Elevator — Visiting the upper floors" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://martinfowler.com/articles/architect-elevator.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The Architect Elevator — Visiting the upper floors&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-22"&gt;Saved on 2020-06-22&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;martinfowler.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Architects in traditional organizations need to ride the elevator between executive penthouse and digital engine room.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/thoughtworks/" class="Label Label--secondary mr-1 mb-1"&gt;thoughtworks&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://devblog.xero.com/machine-learning-helps-small-businesses-find-the-right-tech-on-the-xero-app-marketplace-4867515de66e" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997896.png" alt="Machine learning makes finding the right tech on the Xero app marketplace e" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://devblog.xero.com/machine-learning-helps-small-businesses-find-the-right-tech-on-the-xero-app-marketplace-4867515de66e" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Machine learning makes finding the right tech on the Xero app marketplace e&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-09"&gt;Saved on 2020-06-09&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;devblog.xero.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;At Xero, we’re on a mission to get more apps into the hands of small business owners, because we know when they’re connected to the right technology, they’re more likely to see increased revenue and…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/ai/" class="Label Label--secondary mr-1 mb-1"&gt;ai&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://bakedbean.org.uk/posts/2020-05-stack-overflow-on-macos" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997890.png" alt="Bakedbean.org.uk - Developing Stack Overflow on MacOS" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://bakedbean.org.uk/posts/2020-05-stack-overflow-on-macos" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Bakedbean.org.uk - Developing Stack Overflow on MacOS&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-09"&gt;Saved on 2020-06-09&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;bakedbean.org.uk&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;After a whole lot of months in the making we finally finished porting Stack Overflow to .NET Core 3.1 🎉! When you hit any part of Stack Overflow or the wider Stack Exchange network you’re now hitting our main application running on .NET Core behind IIS using the in-process execut&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://yogeswaran.home.blog/2019/03/19/web-developer-roadmap-in-2019" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997749.png" alt="Web Developer Roadmap in 2019 – Yogeswaran" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://yogeswaran.home.blog/2019/03/19/web-developer-roadmap-in-2019" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Web Developer Roadmap in 2019 – Yogeswaran&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-09"&gt;Saved on 2020-06-09&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;yogeswaran.home.blog&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Introduction to Web Development Front-end Development Roadmap Back-end Development Roadmap DevOps Roadmap&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/career/" class="Label Label--secondary mr-1 mb-1"&gt;career&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://cutle.fish/blog/the-system-thinking-change-agent-survival-guide" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997867.webp" alt="The System Thinking Change Agent Survival Guide | @johncutlefish&amp;#39;s blog" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://cutle.fish/blog/the-system-thinking-change-agent-survival-guide" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The System Thinking Change Agent Survival Guide | @johncutlefish&amp;#39;s blog&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-06-09"&gt;Saved on 2020-06-09&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;cutle.fish&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/career/" class="Label Label--secondary mr-1 mb-1"&gt;career&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/psychology/" class="Label Label--secondary mr-1 mb-1"&gt;psychology&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://engineering.fb.com/web/facebook-redesign" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997881.jpg" alt="Rebuilding our tech stack for a new Facebook.com - Facebook Engineering" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://engineering.fb.com/web/facebook-redesign" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Rebuilding our tech stack for a new Facebook.com - Facebook Engineering&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-05-25"&gt;Saved on 2020-05-25&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;engineering.fb.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Building a new web app for today’s browsers, we completely rebuilt our tech stack to achieve our goals for performance and sustainable future growth.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/facebook/" class="Label Label--secondary mr-1 mb-1"&gt;facebook&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://blog.developer.atlassian.com/why-atlassian-uses-an-internal-paas-to-regulate-aws-access" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997806.png" alt="Why Atlassian uses an internal PaaS to regulate AWS access - Atlassian Deve" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://blog.developer.atlassian.com/why-atlassian-uses-an-internal-paas-to-regulate-aws-access" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Why Atlassian uses an internal PaaS to regulate AWS access - Atlassian Deve&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-05-25"&gt;Saved on 2020-05-25&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;blog.developer.atlassian.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Unleashing the potential of all teams with tips, tools, and practices&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/aws/" class="Label Label--secondary mr-1 mb-1"&gt;aws&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://lethain.com/migrations" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/44/images/1055997684.png" alt="Migrations: the sole scalable fix to tech debt." loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://lethain.com/migrations" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Migrations: the sole scalable fix to tech debt.&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-05-25"&gt;Saved on 2020-05-25&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;lethain.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Migrations are both essential and frustratingly frequent as your codebase ages and your business grows: most tools and processes only support about one order magnitude of growth before becoming ineffective, so rapid growth makes them a way of life. This post takes a look at why m&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://engineering.atspotify.com/2020/03/what-the-heck-is-backstage-anyway" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/45/images/1055997868.png" alt="What the Heck is Backstage Anyway? | Labs" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://engineering.atspotify.com/2020/03/what-the-heck-is-backstage-anyway" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;What the Heck is Backstage Anyway? | Labs&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-05-25"&gt;Saved on 2020-05-25&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;engineering.atspotify.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Yesterday, we released the open source version of , our homegrown developer portal. And we learned a thing or two via the feedback we received. So, I wanted to take this opportunity to further explain what we’re trying to do with Backstage — and more importantly, what we want to &lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://frederickvanbrabant.com/blog/2020-02-07-the-economics-of-clean-code/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/45/images/1055997860.jpg" alt="Frederick Vanbrabant delirious rantings" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://frederickvanbrabant.com/blog/2020-02-07-the-economics-of-clean-code/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Frederick Vanbrabant delirious rantings&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-02-19"&gt;Saved on 2020-02-19&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;frederickvanbrabant.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Clean code makes projects more comfortable to work with and improves shelf life. Its the antagonist of vile legacy codebases that are unmaintainable. Then why does business always treat it as a secondary objective? Do they just dont get it?&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://dev.to/risavkarna/anarchitecture-4eng" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997854.webp" alt="Anarchitecture - DEV Community ?‍??‍?" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://dev.to/risavkarna/anarchitecture-4eng" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Anarchitecture - DEV Community ?‍??‍?&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-01-13"&gt;Saved on 2020-01-13&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;dev.to&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Development in Post-Agile, Managerless Teams Software teams often need a personnel as a br...&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/agile/" class="Label Label--secondary mr-1 mb-1"&gt;agile&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@timawagner/not-using-serverless-yet-why-you-need-to-care-about-re-invent-2019s-serverless-launches-c26fa0263d77" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997848.webp" alt="Why Container Devs Need to Care about re:Invent 2019’s Serverless Launches" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@timawagner/not-using-serverless-yet-why-you-need-to-care-about-re-invent-2019s-serverless-launches-c26fa0263d77" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Why Container Devs Need to Care about re:Invent 2019’s Serverless Launches&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-01-13"&gt;Saved on 2020-01-13&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;A field guide to the 2019 AWS re:Invent Serverless launches.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/aws/" class="Label Label--secondary mr-1 mb-1"&gt;aws&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://cloud.google.com/blog/products/gcp/defining-slos-for-services-with-dependencies-cre-life-lessons" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997720.jpg" alt="Defining SLOs for services with dependencies - CRE life lessons | Google Cl" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://cloud.google.com/blog/products/gcp/defining-slos-for-services-with-dependencies-cre-life-lessons" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Defining SLOs for services with dependencies - CRE life lessons | Google Cl&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-01-10"&gt;Saved on 2020-01-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;cloud.google.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Learn how to define and manage SLOs for services with dependencies, each of which may have their own SLOs.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://queue.acm.org/detail.cfm?id=3096459" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997642.webp" alt="The Calculus of Service Availability: You’re only as available as the sum of your dependencies." loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://queue.acm.org/detail.cfm?id=3096459" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The Calculus of Service Availability: You’re only as available as the sum of your dependencies.&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2020-01-10"&gt;Saved on 2020-01-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;queue.acm.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Most services offered by Google aim to offer 99.99 percent (sometimes referred to as the &amp;#34;four 9s&amp;#34;) availability to users. Some services contractually commit to a lower figure externally but set a 99.99 percent target internally. This more stringent target accounts for situatio&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/better-programming/we-overengineered-a-teapot-c718251ce897" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997826.png" alt="We Overengineered a Teapot - Better Programming - Medium" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/better-programming/we-overengineered-a-teapot-c718251ce897" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;We Overengineered a Teapot - Better Programming - Medium&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-12-06"&gt;Saved on 2019-12-06&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Overengineering is fun, but it can trick you and your team into thinking actual value is delivered.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://servicemesh.io" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997651.webp" alt="The Service Mesh: What Every Software Engineer Needs to Know about the Worl" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://servicemesh.io" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The Service Mesh: What Every Software Engineer Needs to Know about the Worl&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-12-04"&gt;Saved on 2019-12-04&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;servicemesh.io&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Architecturally, a service mesh is nothing more than a bunch of userspace proxies stuck next to your services plus a set of management processes&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.intercom.com/blog/applying-systems-thinking-in-product-design" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/images/bookmark-placeholder.jpg" alt="Applying systems thinking in product design" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.intercom.com/blog/applying-systems-thinking-in-product-design" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Applying systems thinking in product design&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-11-18"&gt;Saved on 2019-11-18&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;intercom.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Tips for using system thinking to prioritize problems when designing a product&amp;#39;s foundation before tackling the specific interactions.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/design/" class="Label Label--secondary mr-1 mb-1"&gt;design&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/product/" class="Label Label--secondary mr-1 mb-1"&gt;product&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://thenewstack.io/are-your-microservices-overly-chatty" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/46/images/1055997843.jpg" alt="Are Your Microservices Overly Chatty? - The New Stack" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://thenewstack.io/are-your-microservices-overly-chatty" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Are Your Microservices Overly Chatty? - The New Stack&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-11-14"&gt;Saved on 2019-11-14&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;thenewstack.io&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Using synchronous communications, like REST, across an entire system makes it behave like a monolith. ironSource describes a different approach.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@stephane.maarek/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997729.webp" alt="An Honest Review of AWS Managed Apache Kafka: Amazon MSK" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@stephane.maarek/an-honest-review-of-aws-managed-apache-kafka-amazon-msk-94b1ff9459d8" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;An Honest Review of AWS Managed Apache Kafka: Amazon MSK&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-11-07"&gt;Saved on 2019-11-07&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;This article was written when Amazon MSK was released in beta form and since then MSK has tremendously improved. I have created an online course in partnership with AWS to help you learn it and I’ve…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/aws/" class="Label Label--secondary mr-1 mb-1"&gt;aws&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://blog.heroku.com/automated-continuous-deployment-at-heroku" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997837.png" alt="Automated Continuous Deployment at Heroku | Heroku" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://blog.heroku.com/automated-continuous-deployment-at-heroku" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Automated Continuous Deployment at Heroku | Heroku&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-23"&gt;Saved on 2019-10-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;blog.heroku.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Over the past four years, the Heroku Runtime team has transitioned from occasional, manual deployments to continuous, automated deployments. Changes are now rolled out globally within a few hours of merging any change—without any human intervention. It&amp;#39;s been an overwhelmingly po&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/netflix-techblog/delta-a-data-synchronization-and-enrichment-platform-e82c36a79aee" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997831.png" alt="Delta: A Data Synchronization and Enrichment Platform" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/netflix-techblog/delta-a-data-synchronization-and-enrichment-platform-e82c36a79aee" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Delta: A Data Synchronization and Enrichment Platform&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-23"&gt;Saved on 2019-10-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Delta is an eventual consistent, event driven, data synchronization and enrichment platform built at Netflix.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/data/" class="Label Label--secondary mr-1 mb-1"&gt;data&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/netflix-techblog/open-sourcing-mantis-a-platform-for-building-cost-effective-realtime-operations-focused-5b8ff387813a" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997835.png" alt="Open Sourcing Mantis: A Platform For Building Cost-Effective, Realtime, Ope" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/netflix-techblog/open-sourcing-mantis-a-platform-for-building-cost-effective-realtime-operations-focused-5b8ff387813a" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Open Sourcing Mantis: A Platform For Building Cost-Effective, Realtime, Ope&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-23"&gt;Saved on 2019-10-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Learn more about how Mantis provides on-demand data fetching, aggressive data reuse, and native autoscaling to help you minimize the costs of observing microservices without compromising on required a&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/devops/" class="Label Label--secondary mr-1 mb-1"&gt;devops&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://engineering.linkedin.com/blog/2019/apache-kafka-trillion-messages" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997827.png" alt="How LinkedIn customizes Apache Kafka for 7 trillion messages per day | Link" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://engineering.linkedin.com/blog/2019/apache-kafka-trillion-messages" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;How LinkedIn customizes Apache Kafka for 7 trillion messages per day | Link&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-21"&gt;Saved on 2019-10-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;engineering.linkedin.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/data/" class="Label Label--secondary mr-1 mb-1"&gt;data&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://engineering.atspotify.com/2017/10/big-data-processing-at-spotify-the-road-to-scio-part-1" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997663.png" alt="Big Data Processing at Spotify: The Road to Scio (Part 1) | Labs" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://engineering.atspotify.com/2017/10/big-data-processing-at-spotify-the-road-to-scio-part-1" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Big Data Processing at Spotify: The Road to Scio (Part 1) | Labs&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-21"&gt;Saved on 2019-10-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;engineering.atspotify.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;This is the first part of a 2 part blog series. In this series we will talk about , a Scala API for  and , and how we built the majority of our new data pipelines on Google Cloud with Scio.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/data/" class="Label Label--secondary mr-1 mb-1"&gt;data&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&lt;/p&gt;&#10;&lt;/div&gt;</description></item><item><title>Bookmarks tagged “architecture”</title><link>https://blog.maceage.com/bookmarks/tags/architecture/page/4/</link><pubDate>Mon, 23 Mar 2026 05:07:20 +0000</pubDate><guid>https://blog.maceage.com/bookmarks/tags/architecture/page/4/</guid><description>&lt;p&gt;97 bookmarks tagged “architecture”&lt;/p&gt;&#10;&lt;div class="Box"&gt;&#10;&lt;p&gt;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/blog/capturing-data-pipeline-errors-functionally-writer-monads" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/47/images/1055997732.jpg" alt="Capturing data pipeline errors functionally with Writer Monads | ThoughtWor" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.thoughtworks.com/insights/blog/capturing-data-pipeline-errors-functionally-writer-monads" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Capturing data pipeline errors functionally with Writer Monads | ThoughtWor&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-10-21"&gt;Saved on 2019-10-21&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;thoughtworks.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;As businesses grapple with vast quantities of data, emerging from batch-based and streaming sources, it’s truly exciting to see the dominant data processing frameworks embrace the Kappa Architecture, that unifies batch and stream processing. With Kappa Architecture, the batch pro&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/data/" class="Label Label--secondary mr-1 mb-1"&gt;data&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/thoughtworks/" class="Label Label--secondary mr-1 mb-1"&gt;thoughtworks&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://qa.increment.com/testing/i-test-in-production/" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/48/images/1055997810.jpg" alt="I test in prod – Increment: Testing" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://qa.increment.com/testing/i-test-in-production/" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;I test in prod – Increment: Testing&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-08-29"&gt;Saved on 2019-08-29&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;qa.increment.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Testing in production is a superpower. It’s our inability to acknowledge it that’s the trouble.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/testing/" class="Label Label--secondary mr-1 mb-1"&gt;testing&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://www.julianbrowne.com/article/brewers-cap-theorem" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/49/images/1055997566.webp" alt="Brewer&amp;#39;s CAP Theorem" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://www.julianbrowne.com/article/brewers-cap-theorem" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Brewer&amp;#39;s CAP Theorem&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-08-07"&gt;Saved on 2019-08-07&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;julianbrowne.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;An explanation of Eric Brewer’s CAP theorem, which says you cannot have more than two of Consistency, Availability and Partition-tolerance in web-based distributed systems.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://github.blog/2015-12-15-move-fast" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/49/images/1055997747.png" alt="Move Fast and Fix Things" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://github.blog/2015-12-15-move-fast" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Move Fast and Fix Things&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-26"&gt;Saved on 2019-07-26&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;github.blog&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Anyone who has worked on a large enough codebase knows that technical debt is an inescapable reality: The more rapidly an application grows in size and complexity, the more technical…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://benjiweber.co.uk/blog/2015/03/02/monitoring-check-smells" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/49/images/1055997569.jpg" alt="Monitoring Check Smells | Benji&amp;#39;s Blog -" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://benjiweber.co.uk/blog/2015/03/02/monitoring-check-smells" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Monitoring Check Smells | Benji&amp;#39;s Blog -&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-26"&gt;Saved on 2019-07-26&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;benjiweber.co.uk&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;I have become increasingly convinced that there is little difference between monitoring and testing. Often we can run our automated tests against a production system with only a little effort. We are used to listening to our automated tests for feedback about our software in the &lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/testing/" class="Label Label--secondary mr-1 mb-1"&gt;testing&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.tarynpivots.com/post/how-stack-overflow-upgraded-from-windows-2012" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/49/images/1055997788.webp" alt="How Stack Overflow upgraded from Windows Server 2012" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.tarynpivots.com/post/how-stack-overflow-upgraded-from-windows-2012" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;How Stack Overflow upgraded from Windows Server 2012&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-23"&gt;Saved on 2019-07-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;tarynpivots.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Warning: This post is long. While working through this massive server upgrade/migration process, tears were shed, many cuss words were said, along with a general feeling of frustration, which ultimately culminated into extreme happiness once the migration was completed. The scale&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/data/" class="Label Label--secondary mr-1 mb-1"&gt;data&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/database/" class="Label Label--secondary mr-1 mb-1"&gt;database&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/sql/" class="Label Label--secondary mr-1 mb-1"&gt;sql&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/stories/" class="Label Label--secondary mr-1 mb-1"&gt;stories&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@__xuorig__/on-graphql-schema-stitching-api-gateways-5dcb579fa90f" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/50/images/1055997722.png" alt="On GraphQL Schema Stitching &amp;amp; API Gateways - Marc-André Giroux - Medium" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@__xuorig__/on-graphql-schema-stitching-api-gateways-5dcb579fa90f" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;On GraphQL Schema Stitching &amp;amp; API Gateways - Marc-André Giroux - Medium&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-23"&gt;Saved on 2019-07-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;I’ve been thinking a lot on GraphQL “Schema Stitching” these days. At its core, Schema Stitching is the art of composing multiple GraphQL Schemas into one GraphQL Schema. As you can imagine, this can…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.linkedin.com/pulse/software-quality-sami-vaaraniemi" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/50/images/1055997739.png" alt="On software quality" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.linkedin.com/pulse/software-quality-sami-vaaraniemi" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;On software quality&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-23"&gt;Saved on 2019-07-23&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;linkedin.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;What do we really need in order to develop a self-driving car? My colleague Felix posted recently an excellent article about what it really takes to be a self-driving car engineer. I want to dig deeper into the first point of that article about solid software engineering.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://philcalcado.com/2019/07/12/some_thoughts_graphql_bff.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/50/images/1055997784.webp" alt="Some thoughts on GraphQL vs. BFF" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://philcalcado.com/2019/07/12/some_thoughts_graphql_bff.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Some thoughts on GraphQL vs. BFF&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2019-07-16"&gt;Saved on 2019-07-16&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;philcalcado.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://medium.com/@copyconstruct/health-checks-in-distributed-systems-aa8a0e8c1672" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997709.jpg" alt="Health Checks and Graceful Degradation in Distributed Systems" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://medium.com/@copyconstruct/health-checks-in-distributed-systems-aa8a0e8c1672" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Health Checks and Graceful Degradation in Distributed Systems&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-09-11"&gt;Saved on 2018-09-11&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;medium.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Thanks, as always, to Fred Hebert and Sargun Dhillon for reading a draft of this post and offering some invaluable suggestions. In her Velocity keynote, Tamar Bercovici of Box highlighted the…&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://martinfowler.com/articles/consumerDrivenContracts.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997430.jpg" alt="Consumer-Driven Contracts: A Service Evolution Pattern" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://martinfowler.com/articles/consumerDrivenContracts.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Consumer-Driven Contracts: A Service Evolution Pattern&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-09-11"&gt;Saved on 2018-09-11&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;martinfowler.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Consumers should drive the definition of service contracts, while limiting to their individual needs. Suppliers should then validate against the union of their consumers&amp;#39; contracts.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997700.webp" alt="Distributed systems theory for the distributed systems engineer | Paper Trail" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2014-08-09-distributed-systems-theory-for-the-distributed-systems-engineer" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Distributed systems theory for the distributed systems engineer | Paper Trail&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-07-10"&gt;Saved on 2018-07-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;the-paper-trail.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Writing about distributed systems, compilers, virtual machines, databases and research papers from SOSP, ATC, NSDI, OSDI, EuroSys and others&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2009-02-03-consensus-protocols-paxos" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997701.webp" alt="Consensus Protocols: Paxos | Paper Trail" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2009-02-03-consensus-protocols-paxos" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Consensus Protocols: Paxos | Paper Trail&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-07-10"&gt;Saved on 2018-07-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;the-paper-trail.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Writing about distributed systems, compilers, virtual machines, databases and research papers from SOSP, ATC, NSDI, OSDI, EuroSys and others&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2008-11-29-consensus-protocols-three-phase-commit" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997703.webp" alt="Consensus Protocols: Three-phase Commit | Paper Trail" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2008-11-29-consensus-protocols-three-phase-commit" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Consensus Protocols: Three-phase Commit | Paper Trail&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-07-10"&gt;Saved on 2018-07-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;the-paper-trail.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Writing about distributed systems, compilers, virtual machines, databases and research papers from SOSP, ATC, NSDI, OSDI, EuroSys and others&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2008-11-27-consensus-protocols-two-phase-commit" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997702.webp" alt="Consensus Protocols: Two-Phase Commit | Paper Trail" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://www.the-paper-trail.org/post/2008-11-27-consensus-protocols-two-phase-commit" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Consensus Protocols: Two-Phase Commit | Paper Trail&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-07-10"&gt;Saved on 2018-07-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;the-paper-trail.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Writing about distributed systems, compilers, virtual machines, databases and research papers from SOSP, ATC, NSDI, OSDI, EuroSys and others&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997497.webp" alt="Notes on Distributed Systems for Young Bloods – Something Similar" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Notes on Distributed Systems for Young Bloods – Something Similar&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-07-10"&gt;Saved on 2018-07-10&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;somethingsimilar.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/distributed-systems/" class="Label Label--secondary mr-1 mb-1"&gt;distributed systems&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://www.vinaysahni.com/best-practices-for-building-a-microservice-architecture" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997612.png" alt="Best Practices for Building a Microservice Architecture" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://www.vinaysahni.com/best-practices-for-building-a-microservice-architecture" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Best Practices for Building a Microservice Architecture&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2018-03-19"&gt;Saved on 2018-03-19&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;vinaysahni.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;A curated a set of pragmatic practices for building a microservice architecture that fits well with modern web and cloud technologies.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="https://queue.acm.org/doi/10.1145/3155112.3158370" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997665.webp" alt="Titus: Introducing Containers to the Netflix Cloud - ACM Queue" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="https://queue.acm.org/doi/10.1145/3155112.3158370" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Titus: Introducing Containers to the Netflix Cloud - ACM Queue&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2017-11-13"&gt;Saved on 2017-11-13&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;queue.acm.org&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;We believe our approach has enabled Netflix to quickly adopt and benefit from containers. Though the details may be Netflix-specific, the approach of providing low-friction container adoption by integrating with existing infrastructure and working with the right early adopters ca&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/docker/" class="Label Label--secondary mr-1 mb-1"&gt;docker&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/netflix/" class="Label Label--secondary mr-1 mb-1"&gt;netflix&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://martinfowler.com/articles/microservice-testing" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/52/images/1055997536.png" alt="Testing Strategies in a Microservice Architecture" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://martinfowler.com/articles/microservice-testing" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Testing Strategies in a Microservice Architecture&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2017-11-09"&gt;Saved on 2017-11-09&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;martinfowler.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;The microservice architectural style presents challenges for organizing effective testing, this deck outlines the kinds of tests you need and how to mix them.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/microservices/" class="Label Label--secondary mr-1 mb-1"&gt;microservices&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/testing/" class="Label Label--secondary mr-1 mb-1"&gt;testing&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/thoughtworks/" class="Label Label--secondary mr-1 mb-1"&gt;thoughtworks&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://blog.ploeh.dk/2010/12/02/Interfacesarenotabstractions" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/53/images/1055997503.png" alt="Interfaces are not abstractions" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://blog.ploeh.dk/2010/12/02/Interfacesarenotabstractions" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Interfaces are not abstractions&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2015-05-22"&gt;Saved on 2015-05-22&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;blog.ploeh.dk&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;p class="color-fg-muted mb-2"&gt;Interfaces are language constructs, whereas abstractions are conceptual. You can model abstractions with interfaces, but the use of interfaces in itself doesn&amp;#39;t guarantee that you&amp;#39;re programming with abstractions.&lt;/p&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/code/" class="Label Label--secondary mr-1 mb-1"&gt;code&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/dotnet/" class="Label Label--secondary mr-1 mb-1"&gt;dotnet&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://addyosmani.com/largescalejavascript" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/55/images/1055997470.webp" alt="Patterns For Large-Scale JavaScript Application Architecture" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://addyosmani.com/largescalejavascript" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;Patterns For Large-Scale JavaScript Application Architecture&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2013-08-05"&gt;Saved on 2013-08-05&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;addyosmani.com&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/design-patterns/" class="Label Label--secondary mr-1 mb-1"&gt;design patterns&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/javascript/" class="Label Label--secondary mr-1 mb-1"&gt;javascript&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/programming/" class="Label Label--secondary mr-1 mb-1"&gt;programming&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;div class="Box-row"&gt;&#10; &lt;article class="d-flex flex-column flex-md-row"&gt;&#10; &#10; &#10; &#10; &lt;div class="mr-md-3 mb-2 mb-md-0" style="flex-shrink: 0;"&gt;&#10; &lt;a href="http://infolab.stanford.edu/~backrub/google.html" target="_blank" rel="noopener noreferrer"&gt;&#10; &#10; &lt;img src="https://blog.maceage.com/bookmarks/page/56/images/1055997433.webp" alt="The Anatomy of a Search Engine" loading="lazy" class="rounded-2 post-list-image bookmark-card__image"&gt;&#10; &#10; &lt;/a&gt;&#10; &lt;/div&gt;&#10; &#10; &lt;div class="flex-auto"&gt;&#10; &lt;h2 class="f3 lh-condensed mb-1"&gt;&#10; &lt;a href="http://infolab.stanford.edu/~backrub/google.html" class="Link--primary" target="_blank" rel="noopener noreferrer"&gt;The Anatomy of a Search Engine&lt;/a&gt;&#10; &lt;/h2&gt;&#10; &lt;div class="d-flex flex-items-center color-fg-muted f6 mb-2"&gt;&#10; &#10; &lt;time datetime="2011-04-12"&gt;Saved on 2011-04-12&lt;/time&gt;&#10; &lt;span class="mx-2"&gt;&amp;middot;&lt;/span&gt;&#10; &lt;span&gt;infolab.stanford.edu&lt;/span&gt;&#10; &lt;/div&gt;&#10; &#10; &#10; &lt;div class="d-flex flex-wrap"&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/architecture/" class="Label Label--secondary mr-1 mb-1"&gt;architecture&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/google/" class="Label Label--secondary mr-1 mb-1"&gt;google&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/history/" class="Label Label--secondary mr-1 mb-1"&gt;history&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/talks/" class="Label Label--secondary mr-1 mb-1"&gt;talks&lt;/a&gt;&#10; &#10; &#10; &lt;a href="https://blog.maceage.com/bookmarks/tags/tech/" class="Label Label--secondary mr-1 mb-1"&gt;tech&lt;/a&gt;&#10; &#10; &lt;/div&gt;&#10; &#10; &lt;/div&gt;&#10; &lt;/article&gt;&#10;&lt;/div&gt;&#10;&lt;/p&gt;&#10;&lt;/div&gt;</description></item></channel></rss>