<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Dangerous Magic]]></title><description><![CDATA[Read about startups, engineering, and AI/ML.]]></description><link>https://magic.dang.vc</link><image><url>https://substackcdn.com/image/fetch/$s_!uKz5!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd38a1d46-4a91-4905-a1f8-87dd2f32c05d_500x500.png</url><title>Dangerous Magic</title><link>https://magic.dang.vc</link></image><generator>Substack</generator><lastBuildDate>Fri, 24 Apr 2026 12:50:21 GMT</lastBuildDate><atom:link href="https://magic.dang.vc/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Tommy DANGerous]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[dangerousmagic@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[dangerousmagic@substack.com]]></itunes:email><itunes:name><![CDATA[Tommy DANGerous]]></itunes:name></itunes:owner><itunes:author><![CDATA[Tommy DANGerous]]></itunes:author><googleplay:owner><![CDATA[dangerousmagic@substack.com]]></googleplay:owner><googleplay:email><![CDATA[dangerousmagic@substack.com]]></googleplay:email><googleplay:author><![CDATA[Tommy DANGerous]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Fundamentals of being an AI/ML sorcerer supreme]]></title><description><![CDATA[TLDR Harnessing the power of AI can be magical and impactful.]]></description><link>https://magic.dang.vc/p/fundamentals-of-being-an-aiml-sorcerer</link><guid isPermaLink="false">https://magic.dang.vc/p/fundamentals-of-being-an-aiml-sorcerer</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Thu, 17 Jun 2021 17:41:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y20T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y20T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y20T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 424w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 848w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y20T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/55867925-0940-40b4-a683-a533610546dd_2156x1212.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4279935,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Y20T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 424w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 848w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 1272w, https://substackcdn.com/image/fetch/$s_!Y20T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55867925-0940-40b4-a683-a533610546dd_2156x1212.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>TLDR</strong></h1><p>Harnessing the power of AI can be magical and impactful. Before mastering this ability, one must understand the basic foundation of AI. We&#8217;ll go over basic math concepts, common prediction types, and popular algorithms.</p><h2>Math</h2><ul><li><p>Vectors</p></li><li><p>Matrix</p></li><li><p>Cost function</p></li></ul><h2>Classification and regression</h2><ul><li><p>Accuracy</p></li><li><p>Precision</p></li><li><p>Recall</p></li><li><p>Mean absolute error</p></li><li><p>Root mean squared error</p></li></ul><h2>Algorithms</h2><ul><li><p>Linear regression</p></li><li><p>Logical regression</p></li><li><p>K-Nearest Neighbors</p></li><li><p>Decision trees</p></li><li><p>Random forest</p></li><li><p>Support vector machines</p></li><li><p>Neural network</p><h1><strong>Math</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hVT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hVT5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 424w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 848w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 1272w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hVT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png" width="500" height="649" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/e295be6b-7963-4b45-94ef-cb4343030433_500x649.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:649,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:407514,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hVT5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 424w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 848w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 1272w, https://substackcdn.com/image/fetch/$s_!hVT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fe295be6b-7963-4b45-94ef-cb4343030433_500x649.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Mathematical equations lay the foundation for AI. For basic applications of AI, being a math expert isn&#8217;t necessary as there are plenty of tutorials and pre-built libraries maintained by the open source community. However, learning some math concepts will help you understand why an algorithm works the way it does and how it can be improved.</p><h2>Vectors</h2><p>Vectors are&nbsp;an array of numbers (<code>x = [1, 3, 5]</code>), compared to a scalar which is a single number (<code>x = 5</code>). </p><p>A vector is a mathematical way of getting from one point to another. Vectors need to travel some distance which is measured in magnitude (length) and direction (orientation).</p><p>Vectors are used in machine learning for their ability to organize data. One example of a commonly used vector in machine learning is a feature vector. These contain information on multiple elements of an entity; for example, a feature vector can contain 5 values: the age of a user, the gender of a user, their height, their weight, and their current city. Feature vectors represent attributes of an entity in a way that a machine learning model can easily perform calculations on.</p><p>Vectors are written into Python using Numpy. They can be created using the function&nbsp;<code>np.array():</code></p><pre><code># Load Numpy module
import numpy as np

# Creating a 1-D list (horizontal)
list1 = [2, 3, 5]

# Creating a 1-D list (vertical)
list2 = [
    [20],
    [30],
    [50],
]

# Vector as row
vector1 = np.array(list1)

# Vector as column
vector2 = np.array(list2)</code></pre><p>Vectors can be added, subtracted, divided, multiplied, etc.</p><h2>Matrix</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1QWL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1QWL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 424w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 848w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 1272w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1QWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png" width="500" height="303" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:303,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130678,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1QWL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 424w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 848w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 1272w, https://substackcdn.com/image/fetch/$s_!1QWL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0434dc6e-4e71-455a-a11f-512fa091bc84_500x303.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A Matrix is a 2-dimensional array (table) of numbers with at least one column and at least one row. The array in a matrix can be represented as having&nbsp;<code>m</code>&nbsp;columns and&nbsp;<code>n</code>rows; therefore, our matrix is size&nbsp;<code>m x n</code>. A vector can also be considered a matrix. Row vectors can be represented as&nbsp;<code>1 x n</code>, and column vectors as&nbsp;<code>m x 1</code>&nbsp;.</p><p>A matrix is measured by its size which is the number of rows by the number of columns.</p><p>Matrices are used to represent data that machine learning models learn from. By structuring the data in a matrix, machine learning algorithms can leverage linear algebra and matrix multiplication for efficient calculations across large amounts of data.</p><p>In Python, a matrix is represented by a 2-D Numpy array:</p><pre><code>import numpy

input_arr = numpy.array([
    [10, 20, 30],
    [40, 50, 60],
])</code></pre><p>Like vectors, matrices can be added, subtracted, divided, multiplied, etc. Matrices of the same size are added together by adding the corresponding data points.</p><h2>Cost function</h2><p>Cost function is used to optimize a machine learning model to make better predictions. The cost function calculates the error between predicted outcomes compared with actual outcomes. The goal of training a machine learning model is to minimize the error from this cost.</p><p>To find the difference of one datapoint: Cost = ( y &#8722; &#375; )2</p><pre><code>y = actual value
&#375; = predicted value</code></pre><p>To find the difference of all data points: 1/2m x &#931;( y &#8722;&#375; )2</p><pre><code>m = number of data points
y = actual value
&#375; = predicted value</code></pre><h2><strong>Gradient descent</strong></h2><p>To minimize the cost function error so a line best fits the dataset, we need to use a gradient descent algorithm. Gradient descent is an optimization algorithm that finds the minimum of a function &#8212; finding the value that&#8217;ll give us the lowest error.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_wS1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_wS1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 424w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 848w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 1272w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_wS1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png" width="1456" height="852" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:734273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_wS1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 424w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 848w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 1272w, https://substackcdn.com/image/fetch/$s_!_wS1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0963f8f7-e348-40c8-9bd6-4186046848c6_1624x950.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Gradient descent works by taking steps to find the minimum value of the parabola graph.</p><p>As the graph slopes down towards the x-axis, theta (measure of an angle) will increase as the negative slope is turned positive by alpha. As the graph goes up past the minimum, theta will become negative, signaling it has passed the minimum and needs to backtrack. Repeatedly running this algorithm will leave us with the minimum.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k_Wx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k_Wx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 424w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 848w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 1272w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k_Wx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png" width="1005" height="624" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:624,&quot;width&quot;:1005,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74202,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k_Wx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 424w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 848w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 1272w, https://substackcdn.com/image/fetch/$s_!k_Wx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d93367b-c69f-4bf0-a9bd-0490c8efbcc7_1005x624.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>Classification and Regression</strong></h1><p>There are 2 main categories that most machine learning problems belong to: classification and regression.</p><p>Classification is the process of taking an input and mapping it to a discrete label. Classification problems typically deal with classes or categories. For example, a photo of a cat (input) and mapping it to be labeled either cat or dog.</p><p>Regression allows us to predict a continuous outcome variable based on predictor variables. Generally, regression problems deal with real numbers. For example, trying to predict home prices based on recent sales in an area.</p><p>Evaluation metrics explain the performance of a model and can provide insight to areas that might need improvement.</p><p>In our example, we built an MLAI model to predict a color. Everytime the model chooses a color, a score will be added to their box. Actual values are on the y-axis and the model&#8217;s predicted values are on the x-axis.</p><h2>Accuracy</h2><p>Accuracy is the total number of correct predictions divided by the total number of predictions made by the model. Accuracy works well on balanced data: a dataset with approximately the same number values across each category present. For example, 100 dogs and 95 cats is a balanced dataset. An unbalanced dataset is 100 dogs and 11 cats.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!719l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!719l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 424w, https://substackcdn.com/image/fetch/$s_!719l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 848w, https://substackcdn.com/image/fetch/$s_!719l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 1272w, https://substackcdn.com/image/fetch/$s_!719l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!719l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png" width="984" height="210" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:984,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19188,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!719l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 424w, https://substackcdn.com/image/fetch/$s_!719l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 848w, https://substackcdn.com/image/fetch/$s_!719l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 1272w, https://substackcdn.com/image/fetch/$s_!719l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6ec95a30-4e2c-4bb7-a24f-0e03fdcd5cd7_984x210.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><pre><code>18 (correct predictions) / 22 (total number of predictions) = 0.81
Accuracy = 81%</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nMf5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nMf5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 424w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 848w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 1272w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nMf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png" width="986" height="208" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:986,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19450,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nMf5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 424w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 848w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 1272w, https://substackcdn.com/image/fetch/$s_!nMf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc12c69-274d-495c-a5d6-42f732c697e0_986x208.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><pre><code>15 (correct predictions) / 22 (total number of predictions) = 0.68
Accuracy = 68%</code></pre><p>Classification accuracy can give a false sense of achieving high performance. Such can occur when there is a disproportionate number of 1 color over the other (e.g. 100 blues and only 11 reds).</p><p>Models can be evaluated based on four features:</p><ol><li><p>True positives are the correctly identified predictions for each class.</p></li><li><p>True negatives are the correctly rejected predictions for each class.</p></li><li><p>False positives are incorrectly identified predictions for a certain class.</p></li><li><p>False negatives are incorrectly rejected data for a certain class.</p></li></ol><p>We will use these features to identify how well model 1 did at identifying blue.</p><ul><li><p>The true positive rate for model 1 predicting blue was 10 (correct) / 13 (overall predictions)</p></li><li><p>The true negative rate for model 1 predicting blue was 8 (correctly rejected) / 9 (total rejected)</p></li><li><p>The false positive rate for model 1 predicting blue was 1 (incorrectly identified) / 11 (total predictions)</p></li><li><p>The false negative rate for model 1 predicting blue was 3 (incorrectly rejected) / 11 (total rejected)</p></li></ul><h2>Precision</h2><p>Precision is the number of correct positive results divided by the number of positive results predicted by the ML model. Using precision, we discover the amount of positive identifications that were actually correct. Precision is helpful for understanding how good a model is at predicting a specific category. This metric is helpful in multi-category classification problems. For example, predicting which color car to sell.</p><pre><code>Precision = True positive / True positives + False positive</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T3Ts!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T3Ts!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 424w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 848w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 1272w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T3Ts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png" width="984" height="210" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:984,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19188,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T3Ts!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 424w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 848w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 1272w, https://substackcdn.com/image/fetch/$s_!T3Ts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6026d8b9-10d9-4a33-9645-7eeaa9891c76_984x210.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Referring back to our model 1 color identifier from above, the true positive value would be 10 and the false positive value would be 3.</p><pre><code>Precision = 10 / (10 + 3) = 0.769
Accuracy = 77%</code></pre><h2><strong>Recall</strong></h2><p>Recall is the number of all positive results divided by the number of all relevant samples. Recall answers the question: what proportion of actual positives were identified correctly? A model that produces no false negatives has a recall of 1. Recall is useful when assessing whether a model can effectively detect the occurrence of a specific category. For example, if you need a model that can catch all fraudsters on your website then you&#8217;ll want a model that has high recall. A model with high recall may have low precision (gets a lot of predictions wrong) but it&#8217;s really good at detecting all the fraudsters.</p><pre><code>Recall = True positive / True positive + false negative</code></pre><p>Referring to our color identifier model, the true positives are again 10 and the false negative is 1.</p><pre><code>Recall = 10 / (10 + 1) = 0.909
Recall = 91%</code></pre><h2><strong>F1 Score</strong></h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sbko!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sbko!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sbko!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg" width="620" height="465" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:620,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53421,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Sbko!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Sbko!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fac6aa8f0-2d86-4324-a300-3b0d21b44515_620x465.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>F1 score tries to find the balance between precision and recall. It tells how precise and robust a classifier is and ranges on a scale of [0,1]. The greater the F1 score, the better the performance of the model.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9LiK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9LiK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 424w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 848w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 1272w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9LiK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png" width="376" height="127" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5605,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9LiK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 424w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 848w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 1272w, https://substackcdn.com/image/fetch/$s_!9LiK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F95c0ee78-7fff-4eb6-b414-fa9a55cd3fa0_376x127.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><h2><strong>Mean absolute error</strong></h2><p>Mean absolute error measures how far predicted values are from observed values averaged over all predictions.</p><p>In our example, our model will be based on predicted grocery item prices vs the actual grocery item prices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qvtO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qvtO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 424w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 848w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 1272w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qvtO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png" width="1016" height="346" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:346,&quot;width&quot;:1016,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35535,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qvtO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 424w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 848w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 1272w, https://substackcdn.com/image/fetch/$s_!qvtO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2954be9-4e24-4b8c-832c-0aaf069ed925_1016x346.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The error can be predicted as: actual cost &#8212; predicted cost. After subtracting the two, we change any negative number to a positive by taking the absolute value of that number.</p><p>The number of training sets in our data is 5; therefore, we will assign the variable&nbsp;<code>n</code>&nbsp;to equal 5</p><p>MAE = (absolute error A + absolute error B + absolute error C + absolute error D + absolute error E) / n</p><pre><code>MAE = (1 + 2 + 1 + 1 + 2) / 5 = 1.4</code></pre><p>We&#8217;re therefore able to identify that our model predictions were off my $1.40 on average .</p><h2><strong>Root mean squared error</strong></h2><p>Root mean squared error is the square of the difference between the original values and the predicted values. A result from squaring errors is that larger errors become more pronounced.</p><p>Going off to our example above the RMSE would be as followed:</p><pre><code>Apple = 2 &#8722; 1 = 1, 1^2 = 1
Pasta = 3 &#8722; 5 = -2, -2^2 = 4
Almond Milk = 4 &#8722; 5 = -1^2 = 1
Avocado = 1 &#8722; 2 = -1^2 = 1
Ice cream = 3 &#8722; 5 = -2^2 = 4
RMSE = (1 + 4 + 1 + 1 + 4) / 5
RMSE = 2.2</code></pre><h1><strong>Algorithms</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mmRI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mmRI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 424w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 848w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 1272w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mmRI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png" width="720" height="960" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a940aab2-8abb-4c15-9634-d149d208f888_720x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:677901,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mmRI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 424w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 848w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 1272w, https://substackcdn.com/image/fetch/$s_!mmRI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa940aab2-8abb-4c15-9634-d149d208f888_720x960.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There are many great algorithms, some are better than others depending on your use case or data availability. Here&#8217;s a useful visual diagram of when to use which algorithm:</p><p>Here&#8217;s a brief overview of some of the more popular algorithms used below:</p><h2>Linear regression</h2><p>Regression models target values based on independent variables. Linear regression is a type of regression analysis where there&#8217;s a linear relationship between the independent and dependent variables.</p><p>By finding the linear relationship between values, machines are better able to forecast upcoming variables.</p><p>A simple linear regression would be the time spent studying (x-axis) to the grade received on a test (y-axis). Presumably, the most time spent studying would result in a higher grade.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YZ_X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YZ_X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YZ_X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png" width="640" height="480" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/55e82748-efe5-401e-bded-3ba709d36335_640x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YZ_X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!YZ_X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F55e82748-efe5-401e-bded-3ba709d36335_640x480.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Logistic regression</strong></h2><p>Tests whether an independent variable has an effect on a binary dependent variable. In ML, logistic regression is used as a classifier to execute tasks.</p><p>Logistic regression is used for its ability to provide probabilities which can be used to classify new data.</p><p>For example, logistic regression can be used to determine whether or not an email is spam. Spam emails will be categorized based on key words and features that show up in those emails. When new emails come in, it can determine whether or not it&#8217;s spam based on those identified characteristics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8CEo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8CEo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8CEo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg" width="567" height="462" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/bee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:567,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65946,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8CEo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8CEo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbee0ece9-f2ab-4283-bc8c-f47a22edf413_567x462.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>K-Nearest Neighbors</strong></h2><p>Uses data points surrounding a target data point in order to make predictions about the target. It assumes that similar things exist in close proximity to each other.</p><p>KNN can be used in problems that are built on identifying similarities.</p><p>KNN can be used to identify patterns in buying behavior and enable businesses to use that to increase sales. For example, a grocery store can use KNN to identify the types of people who buy wine on Friday. The grocery store can find similar customers using this model and then tailor their marketing to that demographic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hrd9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hrd9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 424w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 848w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 1272w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hrd9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png" width="405" height="346" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/81c82824-8468-43bf-a825-5c0e336caffd_405x346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:346,&quot;width&quot;:405,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hrd9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 424w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 848w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 1272w, https://substackcdn.com/image/fetch/$s_!Hrd9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F81c82824-8468-43bf-a825-5c0e336caffd_405x346.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Decision trees</strong></h2><p>We use decision trees in our everyday life when making choices. For example when buying a new car we usually decide on a price point and look for things below that point. Then we may choose the type of seats we want. Based on what is available with the type of seat we want, we choose the color car we want. Decision trees are commonly used when working with non-linear datasets.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r5S8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r5S8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 424w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 848w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 1272w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r5S8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png" width="900" height="900" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d4232014-247c-4334-858e-3474d0513546_900x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r5S8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 424w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 848w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 1272w, https://substackcdn.com/image/fetch/$s_!r5S8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4232014-247c-4334-858e-3474d0513546_900x900.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Random forest</strong></h2><p>Creates an algorithm based on how many decision trees (creating the &#8216;forest&#8217;) are available. The more trees, the more accurate the algorithm&#8217;s prediction will be.</p><p>Random forest can cross validate inputs, thus, making its output more accurate. This algorithm is used when handling large datasets.</p><p>Stock traders can use decision forests to predict a stock&#8217;s future behavior. They do this by taking decision trees of similar stocks which cross validate each other&#8217;s input which can make predicting the potential of a new, similar stock more accurate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jwD0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jwD0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jwD0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg" width="798" height="438" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:798,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76766,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jwD0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jwD0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc86ef9af-13ed-47b8-a502-2e5029b6c805_798x438.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Support vector machines</strong></h2><p>Hyperplanes are decision boundaries used to classify data. Support vectors are data points lying closest to the decision line that are most difficult to classify. SVMs find an optimal solution to classify these data points.</p><p>SVMs have a high speed and high performance accuracy with a limited amount of data.</p><p>SVMs are being used to classify cancer using image classification. The SVM algorithm runs models with datasets of thousands of cancerous cell images. It classifies the image around the cell and after processing thousands of images, can accurately classify scans in real time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2GUr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2GUr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 424w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 848w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 1272w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2GUr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png" width="900" height="800" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2GUr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 424w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 848w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 1272w, https://substackcdn.com/image/fetch/$s_!2GUr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8581906-4d13-4dda-9b3d-89a17b39f845_900x800.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Neural Network</strong></h2><p>Neural networks are a series of algorithms used to find relationships in data.Neural networks are able to learn by themselves, thus, have the ability to produce an output not limited to the given input. This algorithm has been implemented in image object detection, language understanding, audio detection, and more.</p><p>Neural networks have been used to teach a machine how to play chess. Analyzing over 2.5 million chess matches, this neural network predicts chess moves based on the history of moves in the game. This is significant because it demonstrates the ability of a machine to learn and understand game theory.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0R_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0R_F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 424w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 848w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 1272w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0R_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png" width="500" height="309" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:309,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15362,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0R_F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 424w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 848w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 1272w, https://substackcdn.com/image/fetch/$s_!0R_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbbe5be-8169-4854-9bc5-58664db513ee_500x309.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1><strong>Conclusion</strong></h1><p>With the right foundation, developing AI/ML is an accessible goal. You&#8217;re now ready to start coding. Check out how to build your first machine learning model:&nbsp;<a href="https://m.mage.ai/how-to-get-started-with-ai-ml-8630fecfd776">https://m.mage.ai/how-to-get-started-with-ai-ml-8630fecfd776</a>
</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Migrating Airflow from Amazon ECS to Astronomer]]></title><description><![CDATA[Written by Johnson K.]]></description><link>https://magic.dang.vc/p/migrating-airflow-from-amazon-ecs</link><guid isPermaLink="false">https://magic.dang.vc/p/migrating-airflow-from-amazon-ecs</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Thu, 29 Apr 2021 18:04:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!30fR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Companies of any size working with large amounts of data use&nbsp;<a href="https://airflow.apache.org/">Airflow</a>&nbsp;to run jobs with complex dependencies on a regular schedule. Whether creating a new Airflow project or working off an existing one, using an Airflow managed service can make it easier to get Airflow up and running at scale. Here at&nbsp;<a href="https://www.mage.ai/">Mage</a>, we use&nbsp;<a href="https://www.astronomer.io/docs/cloud">Astronomer Cloud</a>.</p><p><strong>Topics Discussed</strong>:</p><ol><li><p>What is Airflow?</p></li><li><p>Our previous setup</p></li><li><p>Challenges running Airflow in ECS</p></li><li><p>Managed Airflow alternatives</p></li><li><p>Our current setup</p></li><li><p>Migrating to Astronomer Cloud</p><p>Deploying Airflow to production using Astronomer Cloud</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!30fR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!30fR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 424w, https://substackcdn.com/image/fetch/$s_!30fR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 848w, https://substackcdn.com/image/fetch/$s_!30fR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!30fR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!30fR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1311396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!30fR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 424w, https://substackcdn.com/image/fetch/$s_!30fR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 848w, https://substackcdn.com/image/fetch/$s_!30fR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!30fR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd51216e1-70e8-4444-bee1-15dcd5a1d124_1920x1281.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">With Airflow, be the captain, conductor, and manager of tasks that run themselves</figcaption></figure></div></li></ol><h1>What is Airflow?</h1><p><a href="https://airflow.apache.org/docs/apache-airflow/stable/index.html">Apache Airflow</a>&nbsp;is an open-source data orchestration tool for programmatically creating workflows using Python. A workflow includes&nbsp;<a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">directed acyclic graphs</a>&nbsp;(DAGs) which have tasks connected to one another but never in a closed loop.</p><h1><strong>Why should you care?</strong></h1><p>Workflows can automate and streamline repeatable tasks, increasing productivity and efficiency for your project or business. Creating these workflows without a tool like Airflow can be a difficult and increasingly unmanageable endeavor as the number of tasks grows and the dependencies between tasks become more and more complicated.</p><p>If you need to process large amounts of data and have jobs with many steps running on a recurring schedule, Airflow can make your life a lot easier.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Aixr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aixr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 424w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 848w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 1272w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aixr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif" width="500" height="339" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:339,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:333913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Aixr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 424w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 848w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 1272w, https://substackcdn.com/image/fetch/$s_!Aixr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F174a059c-6b23-4712-9134-8fe1a791938b_500x339.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">With Airflow, let repeatable operations run by themselves.</figcaption></figure></div><h1>How we use Airflow at Mage</h1><p>Airflow is an essential part of our software stack. Mage is a tool that helps developers use machine learning and their data to make predictions. We use Airflow to orchestrate the steps required in preparing training data, building new machine learning models, deploying machine learning models, processing streamed data, and more.</p><p>Airflow is an important part of making sure steps in our workflow happen in a certain order and on a recurring basis.</p><h1>Options for running Airflow in production</h1><p>There are many different methods for running Airflow in production, depending on the needs of your project. Though Airflow comes with&nbsp;<a href="https://www.sqlite.org/index.html">SQLite</a>&nbsp;by default, it will need a production database like&nbsp;<a href="https://www.postgresql.org/">PostgreSQL</a>&nbsp;or&nbsp;<a href="https://www.mysql.com/">MySQL</a>&nbsp;for storing metadata. Amazon&#8217;s Relational Database Service (<a href="https://aws.amazon.com/rds/">RDS</a>) or Google&#8217;s&nbsp;<a href="https://cloud.google.com/sql">Cloud SQL</a>&nbsp;are two options for hosting the database.</p><p>The other&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#basic-airflow-architecture">components</a>&nbsp;of Airflow can be hosted in different cloud providers or on your own&nbsp;<a href="https://en.wikipedia.org/wiki/Bare-metal_server">bare-metal</a>&nbsp;server. Here is a non-exhaustive list of various cloud services you can use (get ready for lots of acronyms):</p><h2><strong>Amazon Web Services</strong></h2><ul><li><p>Elastic Compute Cloud (<a href="https://aws.amazon.com/ec2/">EC2</a>)</p></li><li><p>Elastic Container Service (<a href="https://aws.amazon.com/ecs/">ECS</a>)</p></li><li><p>Elastic Kubernetes Services (<a href="https://aws.amazon.com/eks/">EKS</a>)</p></li></ul><h2><strong>Google Cloud Platform:</strong></h2><ul><li><p>Google Compute Engine (<a href="https://cloud.google.com/compute">GCE</a>)</p></li><li><p>Google&nbsp;<a href="https://cloud.google.com/run">Cloud Run</a></p></li><li><p>Google Kubernetes Engine (<a href="https://cloud.google.com/kubernetes-engine">GKE</a>)</p></li></ul><h2><strong>Microsoft Azure</strong></h2><ul><li><p>Azure Virtual Machines (<a href="https://azure.microsoft.com/en-us/services/virtual-machines/">VMs</a>)</p></li><li><p>Azure Container Instances (<a href="https://azure.microsoft.com/en-us/services/container-instances/">ACI</a>)</p></li><li><p>Azure Kubernetes Service (<a href="https://azure.microsoft.com/en-us/services/kubernetes-service">AKS</a>)</p></li></ul><p><strong><a href="https://www.heroku.com/platform/runtime">Heroku</a></strong></p><h1>Our previous setup &#8212; Amazon ECS (Elastic Container Service)</h1><p>For our previous setup, we used an Amazon ECS cluster running Airflow version 1.10.14. In this ECS cluster, we utilized five services: Workers, Webserver, Scheduler, Flower, and the Celery Executor.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kuF8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kuF8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 424w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 848w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kuF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png" width="1438" height="786" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:1438,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191467,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kuF8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 424w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 848w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 1272w, https://substackcdn.com/image/fetch/$s_!kuF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F14fd0843-a6ce-4a47-891e-d03e59775e03_1438x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Simplified Airflow architecture</figcaption></figure></div><p>In addition, we had a Redis cluster in Amazon&nbsp;<a href="https://aws.amazon.com/elasticache/">ElastiCache</a>&nbsp;and a PostgreSQL database hosted in Amazon RDS. Refer to the Appendix at the bottom of this post for more details on the Airflow&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#basic-airflow-architecture">components</a>.</p><h1>Challenges running Airflow in ECS</h1><p>As the number of DAGs in our Airflow cluster grew, we noticed that DAGs would sometimes have issues running successfully, or there would be problems with the scheduler. We also had unnecessary costs due to over-provisioned Airflow workers, and it became a hassle to find the right resource allocation through the Amazon ECS UI.</p><p>Managing the number of Airflow workers and resources allocated to the various AWS services required for Airflow was a bit cumbersome. We needed a way to easily manage these resources and quickly deploy changes to our infrastructure if necessary. We wanted to be able to scale up Airflow task processing efficiently, effectively, and with as little overhead and maintenance from the team as possible, and we were willing to pay for a managed service to help us with that.</p><h1>Managed Airflow alternatives</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fGdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fGdD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fGdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg" width="651" height="383" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:383,&quot;width&quot;:651,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fGdD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fGdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83d30e6b-da2a-4ff4-927f-5a595e2f811a_651x383.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Airflow config can be a complicated process; use these tools to help you manage it.</figcaption></figure></div><h1>Amazon Managed Workflows for Apache Airflow (MWAA)</h1><p><a href="https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html">MWAA</a>&nbsp;is a managed service in AWS for Apache Airflow. It&#8217;s backed by Amazon and meant to integrate with other Amazon services. Google Cloud has their version of a managed service for Airflow in&nbsp;<a href="https://cloud.google.com/composer">Cloud Composer</a>, but since Mage&#8217;s cloud infrastructure is built in AWS (future article on this coming soon), we won&#8217;t be mentioning the advantages or disadvantages of using Google Cloud Composer as it wasn&#8217;t an option for us.</p><p>Pricing for MWAA or Astronomer Cloud isn&#8217;t mentioned below because the difference in pricing between the two wasn&#8217;t so drastically different that it was a deciding factor in choosing one over the other.</p><h2><strong>Pros</strong></h2><p><strong>Autoscaling workers:</strong>&nbsp;MWAA is a fully-managed version of Airflow, so it makes it easier to scale up Airflow. If more worker instances are needed to process tasks, MWAA takes care of it automatically and removes workers when they are no longer needed.</p><p><strong>Compatibility with other AWS services:</strong>&nbsp;MWAA is part the AWS ecosystem and connects well with the tools and other resources required for your workflow if you are already hosting your infrastructure on AWS. For example, it has logging already integrated with Amazon&nbsp;<a href="https://aws.amazon.com/cloudwatch/">CloudWatch</a>.</p><h2><strong>Cons</strong></h2><p><strong>Outdated Airflow Version:</strong>&nbsp;At the time of writing (April 2021), the latest Airflow version available in MWAA was 1.10.12. The current latest version of Airflow is 2.0.2. If you wanted to use Airflow 2.0, that&#8217;s automatically a dealbreaker for integrating MWAA as your tool for managing Airflow. Though MWAA will inevitably support Airflow 2.0, this may or may not mean that MWAA is slower to adopt the latest Airflow versions.</p><p><strong>Required VPC infrastructure:</strong>&nbsp;If you require or already have a specific Virtual Private Cloud (<a href="https://en.wikipedia.org/wiki/Virtual_private_cloud">VPC</a>) infrastructure in AWS, creating a new MWAA environment may require adjustments to your current VPC or an entirely new VPC. This may not be an issue for you, but it can be a hassle if you just wanted to add the MWAA environment into an existing VPC but weren&#8217;t able to due to certain restrictions.</p><p><strong>DAGs have to be uploaded to S3:</strong>&nbsp;Amazon Simple Storage Service (<a href="https://aws.amazon.com/s3/">S3</a>) is used to read all DAGs in MWAA. This could be fine for some workflows, but it could also result in making certain issues harder to debug when new DAGs are deployed. If you want flexibility in where you manage your DAGs and don&#8217;t want to go through the added step of uploading them to S3, this requirement for using MWAA may not be worth the additional effort, especially for existing Airflow projects.</p><h1>Astronomer</h1><p><a href="https://www.astronomer.io/">Astronomer</a>&nbsp;is a commercial managed Airflow platform that is cloud-agnostic. It can be used with your own cloud environment, whether it is AWS, GCP, or another cloud provider.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EKLJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EKLJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 424w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 848w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 1272w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EKLJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif" width="320" height="223.7762237762238" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:286,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1318092,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EKLJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 424w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 848w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 1272w, https://substackcdn.com/image/fetch/$s_!EKLJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F027a5759-b167-48d1-93be-d9c052199e0e_286x200.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">&#8220;Airflow look at me, I&#8217;m the scheduler now.&#8221;</figcaption></figure></div><p><strong>Pros</strong></p><p><strong>DAGs maintained in Git repositories:</strong>&nbsp;You can maintain the folder structure of your current Git repo and dynamically build DAGs without issues potentially caused by importing DAG files to an Amazon S3 bucket. Astronomer allows you to deploy DAGs directly from Git repos.</p><p><strong>Cloud-agnostic:</strong>&nbsp;Astronomer is not confined to one cloud provider. You can also deploy your Airflow project to Astronomer&#8217;s own cloud infrastructure.</p><p><strong>Easy initial setup:</strong>&nbsp;Astronomer Cloud setup and configuration is fairly straightforward following their documentation and doesn&#8217;t require additional security configuration regarding access keys or VPCs, since the Airflow project is hosted in Astronomer&#8217;s VPC. However, you can configure your own security settings if you use Astronomer Enterprise.</p><p><strong>Customer support:</strong>&nbsp;Astronomer users have access to a customer support portal in which they can get quick responses to issues (typically within a business day or two or faster if needed, though it will cost extra) and help with troubleshooting Airflow issues. Astronomer&#8217;s business is built around Airflow so their customer support is specialized in Airflow.</p><p><strong>CI/CD integration:</strong>&nbsp;Airflow deployments through Astronomer can be integrated into&nbsp;<a href="https://en.wikipedia.org/wiki/CI/CD">CI/CD</a>&nbsp;pipelines using several different CI/CD tools like&nbsp;<a href="https://circleci.com/">CircleCI</a>,&nbsp;<a href="https://www.jenkins.io/">Jenkins</a>, etc.</p><p><strong>Quick deployments:</strong>&nbsp;Astronomer&#8217;s UI allows you to adjust resources allocated to the scheduler, webserver, and workers all on one page and deploy the changes within a few minutes. Not having to go through several screens to make these changes is convenient if you&#8217;re using Astronomer Cloud.</p><h2><strong>Cons</strong></h2><p><strong>Limited logs visibility</strong>: There may be issues viewing the worker logs, as well as historical scheduler or webserver logs, through the Astronomer UI in Astronomer Cloud.</p><p><strong>Log retention period:</strong>&nbsp;The log retention period for Astronomer Cloud is 15 days, so if you want access to logs older than that, you may not be able to view them through the Astronomer UI. If you have remote logging enabled, you can still have access to task logs older than 15 days.</p><p><strong>Paying for idle resources with the Celery executor</strong>: If you&#8217;re using the&nbsp;<a href="https://www.astronomer.io/guides/airflow-executors-explained#celeryexecutor">Celery executor</a>&nbsp;and have a lot of resources allocated to your workers but only use your workers for a brief period during the day, you still have to pay for the full capacity of the workers even when they&#8217;re not being fully utilized. You do have the option to use the&nbsp;<a href="https://www.astronomer.io/guides/airflow-executors-explained#kubernetesexecutor">Kubernetes executor</a>, though.</p><p>Astronomer currently has two offerings: Cloud and Enterprise.</p><h2><strong>Astronomer Cloud:</strong></h2><p><a href="https://www.astronomer.io/docs/cloud/">Astronomer Cloud</a>&nbsp;manages all of the infrastructure required to run Airflow. Your Airflow project is run on a&nbsp;<a href="https://kubernetes.io/">Kubernetes</a>&nbsp;cluster and hosted in Astronomer&#8217;s Google Cloud environment.</p><h2><strong>Astronomer Enterprise:</strong></h2><p><a href="https://www.astronomer.io/docs/enterprise/">Astronomer Enterprise</a>&nbsp;allows you to run and manage Airflow in your own cloud environment while still utilizing features and support from Astronomer. The enterprise version can be installed on the following Kubernetes environments: AWS Elastic Kubernetes Services (<a href="https://aws.amazon.com/eks/">EKS</a>), GCP Google Kubernetes Engine (<a href="https://cloud.google.com/kubernetes-engine">GKE</a>), or Microsoft Azure Kubernetes Service (<a href="https://azure.microsoft.com/en-us/services/kubernetes-service">AKS</a>).</p><p>Astronomer Enterprise gives you more control over your infrastructure hosting Airflow, so you can customize your security settings, such as&nbsp;<a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html">IAM roles</a>, authentication, and VPC configuration. In addition, you have access to&nbsp;<a href="https://grafana.com/">Grafana</a>&nbsp;(a monitoring tool for Airflow metrics),&nbsp;<a href="https://www.elastic.co/what-is/kibana">Kibana</a>&nbsp;(a visualization tool for your Airflow logs), and other&nbsp;<a href="https://www.astronomer.io/docs/enterprise#platform-components">tools</a>.</p><h1>Our current setup &#8212; Astronomer Cloud</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zlQJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zlQJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 424w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 848w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 1272w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zlQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif" width="500" height="241" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/af23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:241,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1872041,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zlQJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 424w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 848w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 1272w, https://substackcdn.com/image/fetch/$s_!zlQJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Faf23fbc9-eaf3-4a95-b9fc-72d66c36e975_500x241.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Astronomer is one tool we use to bring our customers magical experiences </figcaption></figure></div><p>We ultimately ended up going with&nbsp;<a href="https://www.astronomer.io/docs/cloud">Astronomer Cloud</a>&nbsp;as our managed service for hosting our Airflow cluster. We did try setting up our Airflow cluster in Amazon&nbsp;<a href="https://aws.amazon.com/managed-workflows-for-apache-airflow/">MWAA</a>&nbsp;initially because all of our infrastructure was already using AWS, so we thought the transition would be easier.</p><p>However, we quickly ran into issues configuring the MWAA environment because we had to create a separate VPC from what our other AWS services were hosted in. Our Airflow setup at the time required a connection to our Redis cluster in Amazon&nbsp;<a href="https://aws.amazon.com/elasticache/redis/">ElastiCache</a>, but we could not make the connection because the Redis cluster was in a different VPC, so we likely needed to create a&nbsp;<a href="https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html">VPC peering connection</a>. We also had issues building all of our DAGs because we have many dynamically-generated DAGs, and the MWAA workflow requiring DAG files to be uploaded to S3 would have required a lot of big changes to our code.</p><p>As for Astronomer Cloud versus Astronomer Enterprise, Astronomer Cloud made more sense for us because we wanted a solution that managed most, if not all, of the infrastructure required for Airflow for us. We had to make some adjustments as mentioned later in this post, but we wouldn&#8217;t consider them major changes. As our company grows, Astronomer Enterprise is still an option, and it&#8217;s common for companies to start off using Astronomer Cloud and then later switch to Astronomer Enterprise as their needs change.</p><h1>Migrating to Astronomer Cloud</h1><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Voh2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Voh2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Voh2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg" width="960" height="600" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/dd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48194,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Voh2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Voh2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd71528a-9cc2-40f3-8f59-3704d56b79d0_960x600.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">One small step to upgrade, one giant step for your operations</figcaption></figure></div><p></p><h1>Upgrading to Airflow 2.0</h1><p>If you&#8217;re not already using Airflow 2.0, you can follow Airflow&#8217;s upgrade&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/upgrading-to-2.html">guide</a>&nbsp;in their documentation to upgrade.</p><p>We were using Airflow 1.10.14 and only had to make some minor changes in order to use Airflow 2.0. These are the changes we made:</p><ol><li><p>Replaced all usages of the deprecated&nbsp;<code>airflow.operators.python_operator</code><a href="https://airflow.apache.org/docs/apache-airflow/1.10.14/_api/airflow/operators/python_operator/index.html">package</a>&nbsp;with the<code>airflow.operators.python</code><a href="https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/python/index.html">package</a>.</p></li><li><p>Removed the&nbsp;<code>provide_context</code><a href="https://airflow.apache.org/docs/apache-airflow/1.10.14/_api/airflow/operators/python_operator/index.html">argument</a>&nbsp;when calling the&nbsp;<code>PythonOperator</code>&nbsp;since that parameter is deprecated and no longer required in Airflow 2.0.</p></li><li><p>Updated environment variables related to remote logging. We had remote logging enabled in Amazon S3, so we had to update these environment variables:</p></li></ol><p>i.&nbsp;<code>AIRFLOW__CORE__REMOTE_LOGGING</code>&nbsp;&#8212;&gt;&nbsp;<code>AIRFLOW__LOGGING__REMOTE_LOGGING</code></p><p>ii.&nbsp;<code>AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER</code>&nbsp;&#8212;&gt;&nbsp;<code>AIRFLOW__LOGGING__BASE_LOG_FOLDER</code></p><p>iii.&nbsp;<code>AIRFLOW__CORE__REMOTE_LOG_CONN_ID</code>&nbsp;&#8212;&gt;&nbsp;<code>AIRFLOW__LOGGING__REMOTE_LOG_CONN_ID</code></p><p>iv.&nbsp;<code>AIRFLOW__CORE__LOGGING_LEVEL</code>&nbsp;&#8212;&gt;&nbsp;<code>AIRFLOW__LOGGING__LOGGING_LEVEL</code></p><p>There are other Airflow environment variables that were deprecated in version 2.0, so you may want to check the&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html">docs</a>&nbsp;to see if your existing project is using any of them.</p><h1>Removing and updating files</h1><p>We were building our own custom&nbsp;<a href="https://docs.docker.com/get-started/overview/">Docker</a>&nbsp;image for setting up the various Airflow services using a&nbsp;<a href="https://docs.docker.com/engine/reference/builder/">Dockerfile</a>&nbsp;with the base image&nbsp;<a href="https://github.com/puckel/docker-airflow">puckel/docker-airflow:1.10.9</a>. This Dockerfile had an&nbsp;<code>ENTRYPOINT</code>&nbsp;that pointed to an&nbsp;<code>entrypoint.sh</code>&nbsp;script which defined several environment variables and installed Python packages.</p><p>Since Astronomer manages their own Docker images with all the Airflow configuration for the webserver, scheduler, and&nbsp;<a href="https://www.postgresql.org/">Postgres</a>&nbsp;database out-of-the-box, we were able to delete the following files from our root Airflow directory:</p><ul><li><p><code>entrypoint.sh</code></p></li><li><p><code>airflow.cfg</code></p></li><li><p><code>docker-compose.yml</code></p></li></ul><p>We no longer needed all the instructions in the Dockerfile, so we deleted everything inside it and simply replaced it with one command:</p><p><code>FROM quay.io/astronomer/ap-airflow:2.0.0-4-buster-onbuild</code></p><p>You can check Astronomer&#8217;s Docker container registry at&nbsp;<a href="https://quay.io/repository/astronomer/ap-airflow?tab=tags">quay.io</a>&nbsp;to find the latest Airflow Docker image. One of the packages in our&nbsp;<code>requirements.txt</code>&nbsp;file was&nbsp;<code>apache-airflow==1.10.14</code>, but we removed that since Astronomer's Docker images already have Airflow installed.</p><p>We had used a Redis cluster in Amazon ElastiCache to dynamically build DAGs, so an Airflow connection to Redis was required. This worked well for us at the time because our Airflow services and Redis cluster were all hosted on the same Virtual Private Cloud (<a href="https://aws.amazon.com/vpc/">VPC</a>) in AWS.</p><p>Since production Airflow projects are managed in Astronomer&#8217;s own cloud environment for Astronomer Cloud, there were issues with Airflow connecting to our ElastiCache Redis cluster. Instead of trying to create a VPN connection to our VPC containing the Redis cluster, we took advantage of the built-in&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/variable.html">Airflow Variables</a>&nbsp;as it also acts as a key-value store. This required refactoring all the areas of our code where we were setting Redis keys and getting Redis values.</p><pre><code>from airflow.models import Variable
from datetime import datetime, timedelta

import json

class AirflowVariable():    
def get_json_variable(self, key): 
       return json.loads(Variable.get( 
           key,
          default_var='{}'),
        ).get('value', None)

        def set_json_variable(
        self,
        key,
        value,
        expires_after=timedelta(hours=1),
    ):
        Variable.set(
            key,
            json.dumps({
                'value': value,
                'expires_at': (
                    datetime.utcnow() + expires_after,
                ).isoformat(),
            }),
        )</code></pre><p><em>An example of Airflow variable helper methods for storing values as json</em></p><h1>Installing and using Astronomer locally</h1><ul><li><p>Follow the steps in Astronomer&#8217;s&nbsp;<a href="https://www.astronomer.io/docs/cloud/stable/develop/cli-quickstart">CLI Quickstart Guide</a>&nbsp;to install and start Astronomer locally, taking note of the items below.</p></li><li><p>When initializing an Airflow project on Astronomer, enter your existing Airflow root directory where the&nbsp;<code>dags</code>&nbsp;folder is located in. You don't need to create a new directory and&nbsp;<code>cd</code>&nbsp;into it, since you already have an existing Airflow project.</p></li></ul><pre><code>airflow # root directory
&#9500;&#9472;&#9472; dags
&#9500;&#9472;&#9472; Dockerfile
&#9500;&#9472;&#9472; README.md
&#9492;&#9472;&#9472; requirements.txt</code></pre><p><em>A simple Airflow project folder structure</em></p><ul><li><p>Run the following command:&nbsp;<code>astro dev init</code></p></li><li><p>Some new files and folders will be generated automatically. We didn&#8217;t need to include additional files, plugins, OS-level packages, or Airflow connections, so our&nbsp;<code>include</code>&nbsp;and&nbsp;<code>plugins</code>&nbsp;folders were empty and the&nbsp;<code>packages.txt</code>&nbsp;file blank.</p></li><li><p>We used to have a Redis connection as described earlier in this post, but since it was no longer needed, our&nbsp;<code>airflow_settings.yaml</code>&nbsp;file was also blank.</p></li><li><p>If you previously had Docker containers running Airflow locally before installing Astronomer, make sure you stop those containers or change their ports in the&nbsp;<code>.astro/config.yml</code>&nbsp;file before running Airflow locally with Astronomer using the&nbsp;<code>astro dev start</code>&nbsp;command. There is a note with more details in the "Start Airflow Locally" step of the Astronomer&nbsp;<a href="https://www.astronomer.io/docs/cloud/stable/develop/cli-quickstart#step-4-start-airflow-locally">Quickstart Guide.</a></p></li><li><p>Earlier in this post, we mentioned that one of the files we deleted was the&nbsp;<code>docker-compose.yml</code>&nbsp;file. We had used it to build and deploy Docker images for the Airflow webserver, scheduler, and worker locally, but with Astronomer, it conveniently takes care of this for us without the need for a&nbsp;<code>docker-compose.yml</code>&nbsp;file. We just need to specify the Docker image (and Airflow version) that we want to use from Astronomer's container&nbsp;<a href="https://quay.io/repository/astronomer/ap-airflow?tab=tags">registry</a>&nbsp;inside of the Dockerfile.</p></li></ul><h1>Deploying Airflow to production using Astronomer Cloud</h1><ul><li><p>You can deploy your Airflow project to production by&nbsp;<a href="https://www.astronomer.io/docs/cloud/stable/deploy/manage-workspaces">creating an Astronomer workspace</a>&nbsp;and following the steps in Astronomer&#8217;s&nbsp;<a href="https://www.astronomer.io/docs/cloud/stable/deploy/deploy-cli">deployment guide</a>.</p></li><li><p>Astronomer lets you choose between three&nbsp;<a href="https://www.astronomer.io/guides/airflow-executors-explained">executors</a>&nbsp;to execute the tasks within your DAGs. These are the Kubernetes, Celery, and Local&nbsp;<a href="https://www.astronomer.io/guides/airflow-executors-explained">executors</a>. You won&#8217;t be able to change the executor through the&nbsp;<code>AIRFLOW__CORE__EXECUTOR</code>&nbsp;environment variable because Astronomer sets it automatically.</p></li><li><p>At Mage, we use the Celery executor, and it has worked well for us so far, though we would consider switching to the Kubernetes executor in the future if the situation called for it.</p></li></ul><h1>Astronomer production deployment settings</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6wgE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6wgE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 424w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 848w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 1272w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6wgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png" width="1047" height="677" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1047,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6wgE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 424w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 848w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 1272w, https://substackcdn.com/image/fetch/$s_!6wgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1274ca8-84ac-47ad-8a03-d34a42021d91_1047x677.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p>The screenshot above shows how much resources we allocated to our Celery workers, the webserver, and the scheduler. This setup costs $670/month, but you can see the monthly cost for other resource allocations when you adjust the sliders for the settings.</p></li><li><p>This required some experimentation to see what made sense for us while trying to avoid over-provisioning resources and spending money we didn&#8217;t need to. For context, we have around 300 DAGs that get run daily at the time of writing.</p></li><li><p>The webserver and scheduler are at their default levels, so we didn&#8217;t have to increase resources for those yet.</p></li></ul><h1><strong>Environment variables to take into account for scalability</strong></h1><ul><li><p>Since we removed the&nbsp;<code>airflow.cfg</code><a href="https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html">file</a>&nbsp;and no longer need it when using Astronomer, we make changes to environment variables (the different methods are explained in Astronomer's&nbsp;<a href="https://www.astronomer.io/docs/cloud/stable/deploy/environment-variables">documentation</a>) if we want to update the Airflow configuration.</p></li><li><p><code>AIRFLOW__CORE__PARALLELISM</code>&nbsp;- Max number of overall task instances to run in parallel;&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#parallelism">default of 32</a>.</p></li><li><p><code>AIRFLOW__CORE__DAG_CONCURRENCY</code>&nbsp;- Number of task instances to run concurrently in one DAG;&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#dag-concurrency">default of 16</a>.</p></li><li><p><code>AIRFLOW__CELERY__WORKER_CONCURRENCY</code>&nbsp;- Number of tasks each Celery worker can process at a time;&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#worker-concurrency">default of 16</a>. We initially set this way too high given the limited resources allocated to one worker, so be careful not to set an arbitrarily high number or your DAGs may not get properly executed. We have this value set at 30 in our current setup.</p></li><li><p><code>AIRFLOW__CORE__DAGBAG_IMPORT_TIMEOUT</code>&nbsp;- Seconds before timing out a Python file import;&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#dagbag-import-timeout">default of 30</a>. If you have dynamic DAGs that may take some time to parse, increase this value. We have it set to 3600.</p></li><li><p>Depending on how many DAGs you have, the number of Airflow workers, and the amount of resources allocated to each worker, you&#8217;ll need to adjust the environment variables above to accommodate your Airflow configuration. Refer to Airflow&#8217;s&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#">configuration reference</a>&nbsp;for all the other environment variables you can use, as well as Astronomer&#8217;s&nbsp;<a href="https://www.astronomer.io/guides/airflow-scaling-workers">guide</a>&nbsp;on scaling out Airflow for more details.</p></li></ul><h1><strong>Closing thoughts</strong></h1><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BUoM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BUoM!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 424w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 848w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 1272w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BUoM!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif" width="680" height="381" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:381,&quot;width&quot;:680,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6552688,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BUoM!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 424w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 848w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 1272w, https://substackcdn.com/image/fetch/$s_!BUoM!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7d3fae15-9a1e-4ae9-9451-b84e54e9044e_680x381.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Getting your Airflow off the ground will have a big payoff for your team!</figcaption></figure></div><p>Our Airflow setup and configuration isn&#8217;t perfect and we&#8217;ll inevitably have to make adjustments as our company grows. But if you&#8217;re planning on moving your Airflow project to a managed solution, hopefully this post saved you the headache of dealing with some of the issues we ran into and may serve as a starting point. If you have any questions related to this post or about our company or just found some errors you wanna tell us about, feel free to email&nbsp;<a href="mailto:eng@mage.ai">eng@mage.ai</a>. We are always open to all types of feedback and looking for ways to improve our content!</p><p></p><p><strong>Airflow Components Appendix</strong></p><p><strong>Workers:</strong>&nbsp;Workers function to execute the logic of tasks. By listening to message queues, workers pull the desired tasks of a DAG and process them.</p><p><strong>Webserver:</strong>&nbsp;The Webserver UI (user interface) of Airflow provides the ability to control and visualize aspects of each pipeline. Two important functions that the Webserver provides are monitoring DAGs and providing DAG visualization tables. This shows each DAG&#8217;s runs and the status of every task&#8217;s runs.</p><p><strong>Scheduler:</strong>&nbsp;The Airflow&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/scheduler.html">scheduler</a>&nbsp;is a Python process which checks the code in the Airflow DAG folder. The scheduler manages DAG runs, tasks, and the storing of DAGs. From there, it decides which DAGs should run on each&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/concepts.html?highlight=pool#pools">pool</a>&nbsp;and will monitor the DAGs to see which are running successfully and which need to be executed or retired.</p><p><strong>Flower:</strong><a href="https://flower.readthedocs.io/en/latest/">Flower</a>&nbsp;is a tool which monitors and administers Celery clusters &#8212; distributed task queues based on distributed message passing.</p><p><strong>Celery Executor:</strong>&nbsp;The&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/executor/index.html">executor</a>&nbsp;is responsible for running each task. There are various types of executors, but we used the&nbsp;<a href="https://airflow.apache.org/docs/apache-airflow/stable/executor/celery.html">Celery executor</a>&nbsp;as it allowed for horizontal scaling of workers without the need for Kubernetes. Astronomer has a great guide in their documentation explaining&nbsp;<a href="https://www.astronomer.io/guides/airflow-executors-explained">Airflow executors</a>.</p><p><strong>Redis:</strong>&nbsp;We used&nbsp;<a href="https://redis.io/">Redis</a>&nbsp;(an in-memory data store) as the&nbsp;<a href="https://docs.celeryproject.org/en/latest/getting-started/backends-and-brokers/index.html">Celery broker</a>&nbsp;for message transports. We also used Redis to dynamically build DAGs by regularly making calls to our backend to retrieve live model data and storing it in Redis. The DAGs would get updated or created based off of this data in Redis.</p><p><strong>PostgreSQL</strong>: This was our metadata database used to store configurations, variables, tasks, schedule intervals, and other relevant data.</p>]]></content:encoded></item><item><title><![CDATA[Startup SaaS stack for people and processes]]></title><description><![CDATA[Don&#8217;t be afraid to ask for help. If you aren&#8217;t asking, you aren&#8217;t pushing yourself hard enough. Here at Mage, we get lots of help from the tools we use.]]></description><link>https://magic.dang.vc/p/startup-saas-stack-for-people-and</link><guid isPermaLink="false">https://magic.dang.vc/p/startup-saas-stack-for-people-and</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Thu, 22 Apr 2021 06:24:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3v1y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A startup&#8217;s SaaS (software-as-a-service) stack can be a game changer in improving and optimizing day-to-day operations. While every company&#8217;s needs are different, there are foundational pieces that are critical for long term success and growth within your company.</p><p>To help other startups get ahead, we are sharing what software we currently use at Mage (tech related SaaS such as AWS, Datadog, Effx, etc. will be shared in a future article).</p><p>Here are the categories of SaaS we cover in this edition:</p><ol><li><p>Coding</p></li><li><p>Design</p></li><li><p>IT/Security</p></li><li><p>Communication</p></li><li><p>Documentation</p></li><li><p>Project management</p></li><li><p>CRM</p></li><li><p>HR &amp; payroll</p></li><li><p>Legal services</p></li><li><p>Finance &amp; accounting</p></li><li><p>Stocks &amp; compensation</p></li></ol><h1><strong>Coding</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3v1y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3v1y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3v1y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How society will look once every startup finds the right coding tools&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How society will look once every startup finds the right coding tools" title="How society will look once every startup finds the right coding tools" srcset="https://substackcdn.com/image/fetch/$s_!3v1y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3v1y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F36abff84-3443-4c28-956a-ef1e425ebec5_1645x926.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How society will look once every startup finds the right coding tools</figcaption></figure></div><p>Using the right text&nbsp;editor software can drastically increase productivity by catching errors in your code, increasing automation, keyboard shortcuts, and more.</p><p><strong>What we use</strong>:&nbsp;<a href="https://code.visualstudio.com/">VSCode</a>,&nbsp;<a href="https://www.sublimetext.com/">Sublime</a>,&nbsp;<a href="https://www.jetbrains.com/pycharm/">PyCharm</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://atom.io/">Atom</a>,&nbsp;<a href="https://www.eclipse.org/downloads/">Eclipse</a></p><p>We use Sublime as one of our text editors. Drawn to it for its &#8220;fuzzy search&#8221; which allows for a quick recovery of files based on a few letters or words, Sublime integrates well with our functions. Another feature we utilize is the package manager which allows us to install community created modules that add functionality and a customized look and feel. Sublime is also more lightweight than other software and thus loads much faster.</p><p>Another staple coding tool we use is VSCode. VSCode has several out-of-the-box features that set it apart from other tools: searching code across several directories, built-in git features, plethora of extensions, and integrated terminals. It provides a great interface and shortcuts that are familiar to our programmers. A huge pro of VSCode is that its open source; meaning anyone can add new improvements to software that benefits every user.</p><p>PyCharm&#8217;s IDEs (integrated development environments) are extremely beneficial to the developer: superfast code navigation and indexing, automatic code linting and reformatting, intuitive git integration, powerful refactoring capabilities and import optimization, great error catching, and support for third party plugins. PyCharm&#8217;s IDE works well in tandem with Python&#8217;s type hints as it unlocks a new layer of error catching and information to present. When using a debugger, PyCharm is powerful, a joy to use, and has helped to avoid countless difficult to track bugs and problems.</p><h1><strong>Design</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5CB0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5CB0!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 424w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 848w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 1272w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5CB0!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif" width="600" height="253" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Add some magic to your product&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Add some magic to your product" title="Add some magic to your product" srcset="https://substackcdn.com/image/fetch/$s_!5CB0!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 424w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 848w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 1272w, https://substackcdn.com/image/fetch/$s_!5CB0!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F59b37911-d0d5-4a01-97c9-8ee08960fb6f_600x253.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Add some magic to your product</figcaption></figure></div><p>Delivering magical experiences (one of our core virtues) to customers through an intuitive and simple product should be the main objective of any product team. This is done in large part by using the right design tool. We believe that collaboration produces the best result (that&#8217;s why Mage is a collaborative AI tool for developers), and thus sought out a design tool that can deliver that need.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.figma.com/">Figma</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.sketch.com/">Sketch</a>,&nbsp;<a href="https://affinity.serif.com/en-us/">Affinity Designer</a></p><p>For our design processes, we use the cloud-based design tool Figma. We use Figma to draw low-fidelity wireframes and product flows in the early stages of ideation. Towards the later stages, we do high-fidelity screen designs, prototyping, and lots of pixel pushing. At every stage of the process, we get feedback from our stakeholders. Once our designs are agreed upon, our developers can get the specs they need. This streamlined workflow saves time and effort for every person involved in the process. With Figma, there are no downloads needed; making it easy to share with anyone involved. Using Figma in this way is a great way to include non-design partners in the design process.</p><h1><strong>IT/Security</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gne3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gne3!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 424w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 848w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 1272w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gne3!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif" width="600" height="332" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:332,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Don&#8217;t leave yourself vulnerable for attack&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Don&#8217;t leave yourself vulnerable for attack" title="Don&#8217;t leave yourself vulnerable for attack" srcset="https://substackcdn.com/image/fetch/$s_!Gne3!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 424w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 848w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 1272w, https://substackcdn.com/image/fetch/$s_!Gne3!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf6c705-5294-42dd-8904-ee90f000fbcb_600x332.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t leave yourself vulnerable for attack</figcaption></figure></div><p>Cloud-based IT software can be used for password protection, data security, and compliance solutions. Integrating a SaaS security solution into a startup increases IT&#8217;s efficiency by providing up-to-date software to protect against cybersecurity threats.</p><h2><strong>Password manager</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://www.lastpass.com/">Last Password</a>,&nbsp;<a href="https://1password.com/">1Password</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="http://www.awallet.org/">aWallet</a>,&nbsp;<a href="https://bitwarden.com/">Bitwarden</a></p><p>Last Password is the number one password manager tool and works well for our needs. By logging into your accounts on their software, Last Password will secure your passwords in one safe and easy to access platform. Last Password also generates strong passwords, has a sharing feature, and alerts customers when personal information is at risk. 1Password uses similar features and technology that keep passwords safe while allowing team members access to these passwords.</p><h2><strong>Single sign-on</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://www.okta.com/">Okta</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.onelogin.com/">OneLogin</a></p><p>Okta&#8217;s cloud-based software helps companies guarantee proper user authentication when logging into accounts. It also allows developers to build identity controls into applications and web services. Okta&#8217;s interface is easy to navigate, and its popularity makes it familiar to most team members and customers.</p><h2><strong>2FA (aka two factor authentication)</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;hl=en_US&amp;gl=US">Google Authenticator</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://duo.com/product/multi-factor-authentication-mfa/duo-mobile-app">Duo</a></p><p>Google Authenticator is an easy-to-use, straightforward two-step verification service.</p><h2><strong>Mobile Device Management</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://www.jamf.com/">Jamf</a>,&nbsp;<a href="https://business.apple.com/">Apple Business Manager</a>,&nbsp;<a href="https://support.apple.com/en-us/HT204142">Apple Automated Device Enrollment</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.hexnode.com/">Hexnode</a>,&nbsp;<a href="https://www.kandji.io/">Kandji</a></p><p>Jamf provides a free and straightforward setup to effectively manage all Apple devices. We use this in tandem with Apple Business Manager and Apple&#8217;s automated device enrollment program.</p><h2><strong>Compliance</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://secureframe.com/">SecureFrame</a>,&nbsp;<a href="https://www.verygoodsecurity.com/">VGS</a>,&nbsp;<a href="https://kolide.com/">Kolide</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.cb1security.com/">CyberOne</a></p><p>Kolide can help to communicate your security guidelines to employees, integrated with Slack, and recommends clear and easy to resolve action items.</p><p>SOC 2 is an auditing process designed to protect the privacy of an organization and clients. It&#8217;s an eventual requirement for SaaS companies who store customer data. Using software can help your company to navigate the important information and requirements needed for a successful audit.</p><p>For our SOC 2 process, we are choosing between SecureFrame and VGS. VGS&#8217;s security foundations are free and helpful in getting started with the SOC 2 process. Secureframe offers great customer support to get our certification complete from end-to-end. They also provide a lot of automation during the process to reduce the amount of time our developers need to spend working on SOC 2 compliance.</p><h1><strong>Communication</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Or7z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Or7z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Or7z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png" width="1440" height="1080" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1440,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Stay productive while working away from coworkers&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stay productive while working away from coworkers" title="Stay productive while working away from coworkers" srcset="https://substackcdn.com/image/fetch/$s_!Or7z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Or7z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5fa20af0-d83a-4670-a0cc-432f57397217_1440x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Stay productive while working away from coworkers</figcaption></figure></div><p>With most teams working remotely, it becomes essential for businesses to implement communication software that can help facilitate the brainstorming and the exchange of ideas that comes naturally with spontaneous workplace communication.</p><h2><strong>Internal Collaboration</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://slack.com/">Slack</a>,&nbsp;<a href="https://www.tandem.net/">Tandem</a>,&nbsp;<a href="https://www.vowel.com/">Vowel</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://hangouts.google.com/">Google Hangouts</a>,&nbsp;<a href="https://www.microsoft.com/en-us/microsoft-teams/group-chat-software">Microsoft Teams</a></p><p>We use Slack for its depth of features: file sharing, messaging, and customer integration which provides our team with an easy-to-use, well-managed communication software that is the solution to long email chains. Slack integrates well with other apps. Our team pairs Slack with GitHub which increases productivity by displaying our development work alongside the team&#8217;s communication channel.</p><p>For voice calls, small video chats, and real time collaboration, we found Tandem to be the best on the market. Its desktop integration allows teams to talk and collaborate without links and meeting rooms. It also allows the team to share what they&#8217;re working on and when they&#8217;re available to talk and collaborate. We found this to be the closest thing to working in an office.</p><p>Finally, we use Vowel for our large team meetings. Vowel not only provides video meetings, but a meeting management service. Its features and integrations: automatic transcription, assigning action items, and setting agendas allow for a much more productive and efficient way of running meetings and recalling discussion notes.</p><h2><strong>External Communication</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://zoom.us/">Zoom</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://meet.google.com/">Google Meet</a>,&nbsp;<a href="https://www.uberconference.com/">UberConference</a>,&nbsp;<a href="https://www.skype.com/en/">Skype</a></p><p>We found Zoom to be the best service to hold customer meetings. Zoom&#8217;s superior video quality and audio was reason enough for us to choose it over other video conference software such as Google Meet or Skype. The depth of Zoom exclusive features: recording, waiting room, and participant interaction allows us to conduct the most professional and productive meetings possible with our customers. Zoom isn&#8217;t perfect though, it has many flaws such as complicated default settings such as not allowing other participants to share their screen without changing a setting in Zoom.</p><h2><strong>Email</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://gmail.com/">Gmail</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://outlook.live.com/owa/">Outlook</a>,&nbsp;<a href="https://sparkmailapp.com/">Spark</a>,&nbsp;<a href="https://superhuman.com/">Superhuman</a></p><p>Having quick email communication is one of the easiest ways to boost customer support satisfaction. Using a software that can help organize your inbox and track conversations with teammates, customers, and investors will result in better team organization, communication, and efficiency.</p><p>For its widespread availability, easy to use interface, and multitude of features, we use Gmail for our email correspondence. Gmail makes sorting your inbox extremely easy to do by creating categories based on keywords or senders. The cloud-based software allows for email access on any device and nearly unlimited free storage. Gmail&#8217;s streamline interface and wide range of features integrated best into our company.</p><h1><strong>Documentation</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oNxu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oNxu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oNxu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Don&#8217;t bury yourself in paperwork or get lost in file cabinets&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Don&#8217;t bury yourself in paperwork or get lost in file cabinets" title="Don&#8217;t bury yourself in paperwork or get lost in file cabinets" srcset="https://substackcdn.com/image/fetch/$s_!oNxu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!oNxu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fca978e53-5d66-487d-939f-e8e192e07d43_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t bury yourself in paperwork or get lost in file cabinets</figcaption></figure></div><p>Choosing the right document management software is key to streamlining workflows, scaling the team, and properly organizing business materials. We sought out a document sharing software that could foster collaboration amongst team-members.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.notion.so/">Notion</a>,&nbsp;<a href="https://www.google.com/docs/about/">Google Docs</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://slab.com/">Slab</a>,&nbsp;<a href="https://coda.io/welcome">Coda</a>,&nbsp;<a href="https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage">OneDrive</a></p><p>We are currently using a combination of Google Docs and Notion. Google Doc&#8217;s straight-forward, easy to use approach to editing and collaborating on content is top-notch. One downside to Google Docs is that it&#8217;s hard to find documents. We use Notion for its ease in browsing and discovering documents that you may not know existed. While we are still testing out Notion, we found the app difficult to copy and paste large sections and to tab list type sections on mobile devices; such as numbered or bullet lists.</p><h1><strong>Project management</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kgf5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kgf5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 424w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 848w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 1272w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kgf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png" width="780" height="439" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/cc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:439,&quot;width&quot;:780,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Poor project management blocks progress&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Poor project management blocks progress" title="Poor project management blocks progress" srcset="https://substackcdn.com/image/fetch/$s_!Kgf5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 424w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 848w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 1272w, https://substackcdn.com/image/fetch/$s_!Kgf5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc4afc6b-c202-4965-8c91-cdf517cb9f1c_780x439.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Poor project management blocks progress</figcaption></figure></div><p>Effectively managing projects and their processes aids in shipping valuable features to your customers. Using a project management software can lead to better team collaboration to increase the quality of the product and decrease time it takes to create it.</p><p><strong>What we use</strong>:&nbsp;<a href="https://airtable.com/">Airtable</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://linear.app/">Linear</a>,&nbsp;<a href="https://www.google.com/sheets/about/">Google Sheets</a>,&nbsp;<a href="https://asana.com/">Asana</a>,&nbsp;<a href="https://monday.com/">Monday</a>,&nbsp;<a href="https://www.atlassian.com/software/jira">Jira</a>,&nbsp;<a href="https://trello.com/en-US">Trello</a>,&nbsp;<a href="https://www.wrike.com/vj/">Wrike</a></p><p>Airtable is a necessary part of our weekly business operations. As straightforward as a Google Sheet, Airtable goes further by offering a better interface, flexible database, and many more features: ability to create multiple tables, sorting different types of data, linking records together. Its integration with Kanban boards and storage in different columns provides helpful information when tracking projects. Read more on how we use Airtable by reading &#8220;<a href="https://link.medium.com/dYErmInHEfb">How we organize our software development process</a>&#8221;.</p><h1><strong>CRM (customer relationship management)</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jNli!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jNli!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!jNli!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!jNli!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!jNli!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jNli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/acbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Tim Cook looking at all the loyal Apple customers in his CRM&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Tim Cook looking at all the loyal Apple customers in his CRM" title="Tim Cook looking at all the loyal Apple customers in his CRM" srcset="https://substackcdn.com/image/fetch/$s_!jNli!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!jNli!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!jNli!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!jNli!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Facbf796e-703b-4abd-9aed-b39ea1812945_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Tim Cook looking at all the loyal Apple customers in his CRM</figcaption></figure></div><p>Productively using a CRM (customer relationship management) tool can give your company insight on customer behavior and information that will aid in creating and adapting products best suited to customer needs.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.clay.run/">Clay</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.salesforce.com/">Salesforce</a>,&nbsp;<a href="https://www.hubspot.com/">Hubspot</a></p><p>We use Clay because it&#8217;s very flexible and we can configure it to our specific needs. It&#8217;s as flexible as a Google Sheets but has a superior user experience. One of the biggest pros of using Clay is how programmable it is. You can utilize its vast capabilities right out of the box. However, they provide many no-code and low-code functions that allow you to fetch data from various sources and map that data to your columns. Furthermore, you can have different functions&#8217; output be the input into another function. For example, we have a function that looks up a company website URL based on the company name. Then, using the inferred website URL, we have another function to look up more details about that company which are derived from their website and other related sources.</p><h1><strong>Community management</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ftod!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ftod!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ftod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Build a strong product through connecting with your community&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Build a strong product through connecting with your community" title="Build a strong product through connecting with your community" srcset="https://substackcdn.com/image/fetch/$s_!Ftod!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Ftod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7dc7f844-ae16-452d-9e9c-d1e66f258800_1920x1080.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Build a strong product through connecting with your community</figcaption></figure></div><p>It&#8217;s through the use of a community management tool that we are able to understand the needs of our customers and build the most useful products. Without the right community management software, you will fall out of touch with your users and build the wrong product.</p><p><strong>What we use</strong>:&nbsp;<a href="https://discord.com/">Discord</a>,&nbsp;<a href="https://yen.io/">Yen</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://orbit.love/">Orbit</a>,&nbsp;<a href="https://www.getopensocial.com/">Open Social</a></p><p>We use Discord as our primary community management software. Discord servers can accommodate hundreds of users in one company&#8217;s channel at no additional cost to the company. We can use this service to host webinars and tutorials on our software to better grow our brand and build up our community.</p><p>While not currently available for public access, we plan to use Yen as soon as it launches out of stealth. Yen allows for potential users, team members, and your community a way to engage with one another without leaving your website. This integration allows for a better user experience as no additional app needs to be downloaded and all community feedback, engagement, and reviews can be easily accessed through your website.</p><h1><strong>HR &amp; payroll</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yj4v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yj4v!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 424w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 848w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 1272w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yj4v!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif" width="621" height="349" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:349,&quot;width&quot;:621,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;When you find talent, hold on to it&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="When you find talent, hold on to it" title="When you find talent, hold on to it" srcset="https://substackcdn.com/image/fetch/$s_!yj4v!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 424w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 848w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 1272w, https://substackcdn.com/image/fetch/$s_!yj4v!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6955237c-0f9e-48f4-9514-7d91614e6195_621x349.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">When you find talent, hold on to it</figcaption></figure></div><p>Equipping your HR team with the right tools for success is essential in hiring the right talent and implementing practices that will make your startup run smoothly. Using a SaaS-based HR program allows businesses the power to manage all the classic HR functions and use them to evolve with advancing technology.</p><p><strong>What we use</strong>:&nbsp;<a href="https://gusto.com/">Gusto</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.rippling.com/">Rippling</a>,&nbsp;<a href="https://quickbooks.intuit.com/">Quickbooks</a></p><p>Gusto is our preferred choice as it offers the most all-encompassing functions: manage payroll, benefits, new team member on-boarding, project tracking, team directory and surveys, company policies, and more. The platform is user-friendly and comes with a very helpful and responsive customer service team, unlike other platforms we tested. Gusto had the most transparent pricing with no additional or hidden fees and since we used Brex for our banking, we received 50% off for the first 12 months of Gusto.</p><h1><strong>Legal services</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wRpH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wRpH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 424w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 848w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 1272w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wRpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png" width="1456" height="956" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:956,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Don&#8217;t let your scales get out of balance&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Don&#8217;t let your scales get out of balance" title="Don&#8217;t let your scales get out of balance" srcset="https://substackcdn.com/image/fetch/$s_!wRpH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 424w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 848w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 1272w, https://substackcdn.com/image/fetch/$s_!wRpH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F166e4601-b8bb-4f1e-b640-0bf65bd8cb2c_2400x1575.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Don&#8217;t let your scales get out of balance</figcaption></figure></div><p>With any startup comes lots of legal paperwork and documentation. Learning how to navigate, read, and write such paperwork can be extremely time-consuming and riddled with errors. We use legal assistance software to increase efficiency, saving ourselves time and money.</p><p><strong>What we use</strong>:&nbsp;<a href="http://clerky.com/">Clerky</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.rocketlawyer.com/">Rocket Lawyer</a>,&nbsp;<a href="https://www.legalshield.com/">LegalShield</a></p><p>We found Clerky to be the best fit for our functions. Their interface is easy to navigate and read even for those not equipped with a legal background. Clerky&#8217;s team provides responsive customer support who will answer your questions and flag paperwork issues. The platform offers legal assistance for formation, fundraising, and hiring.</p><p>Note: Clerky is great to get started quickly. However, if you start raising money and your company grows, you&#8217;ll want a team of great corporate lawyers by your side. We use Cooley because they have very smart people who feel like part of our team.</p><h1><strong>Finance &amp; accounting</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R6eZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R6eZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 424w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 848w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 1272w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R6eZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png" width="721" height="463" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:463,&quot;width&quot;:721,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Protect your assets&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Protect your assets" title="Protect your assets" srcset="https://substackcdn.com/image/fetch/$s_!R6eZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 424w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 848w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 1272w, https://substackcdn.com/image/fetch/$s_!R6eZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc138a3-d8bb-47aa-b843-8f6125bd92b6_721x463.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Protect your assets</figcaption></figure></div><h2><strong>Banking</strong></h2><p>SaaS financial services help to keep your cash safe, monitor and pay bills, and accumulate corporate credit card rewards. For online platforms, it&#8217;d be very difficult to facilitate any of these transactions without the proper software.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.brex.com/">Brex</a>,&nbsp;<a href="https://www.svb.com/">SVB</a>,&nbsp;<a href="https://www.northone.com/">NorthOne</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://mercury.com/">Mercury</a>,&nbsp;<a href="https://www.rho.co/">Rho</a></p><p>For our financials we use a combination of Brex and SVB. Brex offers an easy to use mobile app and website interface making it easy to access and view funds. Their platform is very affordable for startups as it offers free transactions, no wire fees, and no minimum balance requirement.</p><p>SVB&#8217;s customer service is top of the line and their vast experience working with startups has made them experts in startup banking. Banking with SVB is ideal for startups because of its three-year period of no/low fees, unlimited transactions, as well as access to networking events and webinars. Putting money away with SVB gives customers a 1% interest rate. SVB falls short in that their online interface feels dated and functions like opening an account, can be confusing to navigate and could take a few days to complete.</p><p>We just learned about NorthOne and applied to become a member. Their automatic categorization of purchases, reporting, team sub-accounts, mobile app, instant customer support, and focus on smaller companies is a huge need for us.</p><h2><strong>Credit Cards</strong></h2><p><strong>What we use</strong>:&nbsp;<a href="https://ramp.com/">Ramp</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.americanexpress.com/us/credit-cards/business/business-credit-cards/american-express-business-platinum-credit-card-amex/">American Express Business Platinum</a>,&nbsp;<a href="https://www.chase.com/business">Chase Business</a></p><p>For credit card purchases, we use Ramp. Ramp offers 1.5% cash back on all purchases, and its intuitive software keeps spending reports well organized. This helps us better monitor our spending and more easily create reports for financial planning and analysis.</p><h2><strong>Accounting</strong></h2><p>Accounting services are used to track financial statements, monitor and reconcile bank accounts, facilitate purchase orders, and cash flow. Keeping an organized track record of these reports is essential to the business process.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.xero.com/us/">Xero</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://quickbooks.intuit.com/">Quickbooks</a>,&nbsp;<a href="https://www.freshbooks.com/">Freshbooks</a></p><p>While Quickbooks is the most popular software on the market, we found Xero to be best fit for our needs. Xero&#8217;s user-friendly interface makes it easy to pay bills, manage inventory, and account for assets. While Xero lacks a payroll service, it integrates well with Gusto. At a more affordable price point, Xero doesn&#8217;t sacrifice any of the features its competitors offer.</p><h1><strong>Stocks &amp; compensation</strong></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lqn1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lqn1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lqn1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/cea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Take your stocks to the moon by managing them with the right SaaS tool&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Take your stocks to the moon by managing them with the right SaaS tool" title="Take your stocks to the moon by managing them with the right SaaS tool" srcset="https://substackcdn.com/image/fetch/$s_!lqn1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!lqn1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea61cd8-a11f-4dd7-9931-a4cb68c8bf01_1280x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Take your stocks to the moon by managing them with the right SaaS tool</figcaption></figure></div><h2><strong>Equity Management/Stocks</strong></h2><p>Going at equity management alone by using spreadsheets is error-prone and can hold back the daily functioning and success of a business. Equity management software allows startups a medium to manage their cap tables, valuations, and equity plans which can then be shared with investors and the team.</p><p><strong>What we use</strong>:&nbsp;<a href="https://carta.com/">Carta</a></p><p><strong>Alternatives</strong>:&nbsp;<a href="https://ledgy.com/">Ledgy</a>,&nbsp;<a href="https://insightsoftware.com/certent/">Certent</a></p><p>Carta offers us an equity management tool that simplifies the way we manage our shares. Carta&#8217;s well constructed user interface allows for non-experts to read, construct, and share cap tables in an intuitive and informative way. Carta beats out its competitors by offering an extensive list of features which cover all the equity management assistance a startup needs.</p><h2><strong>Compensation</strong></h2><p>To attract and onboard new talent, a well-thought-out compensation package is needed to create and reflect a new hire&#8217;s experience as well as the size of company, industry, and location. Using SaaS tools to create compensation packages can create the most accurate package, while saving your company time and money.</p><p><strong>What we use</strong>:&nbsp;<a href="https://www.getpequity.com/">Pequity</a>,&nbsp;<a href="https://www.levels.fyi/">Levels</a>, data from investors</p><p><strong>Alternatives</strong>:&nbsp;<a href="https://www.glassdoor.com/Salaries/index.htm">Glassdoor</a>,&nbsp;<a href="https://www.indeed.com/career/salaries">Indeed</a></p><p>We use Pequity because it acts as your in-house talent organization. The software helps create salaries that fit the needs of the company at every stage of growth. Additionally, they provide us a tool for equity compensation for each level and function; they even break it down by geography (helpful for remote companies). With a great user experience and responsive customer support, we highly recommend Pequity.</p><p>As additional tools, we use&nbsp;<a href="http://levels.fyi/">Levels.fyi</a>&nbsp;and leverage our investors&#8217; data and their equity packages to determine the most beneficial compensation packages to offer our top talent.</p><h1><strong>Tech stack coming soon</strong></h1><p>In a follow-up article next month (May 2021), we&#8217;ll be sharing what SaaS tools we use in our tech stack. Stay tuned!</p>]]></content:encoded></item><item><title><![CDATA[A Visualizer for PyTorch Image Transformations]]></title><description><![CDATA[Teammates are your best bet for giving open and honest feedback. Another way to obtain feedback is by using tools, such as this one to help spot errors when transforming images for training AI.]]></description><link>https://magic.dang.vc/p/a-visualizer-for-pytorch-image-transformations</link><guid isPermaLink="false">https://magic.dang.vc/p/a-visualizer-for-pytorch-image-transformations</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Wed, 14 Apr 2021 18:49:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z1H1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z1H1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z1H1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 424w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 848w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 1272w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z1H1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png" width="1329" height="844" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/cfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:844,&quot;width&quot;:1329,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z1H1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 424w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 848w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 1272w, https://substackcdn.com/image/fetch/$s_!Z1H1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfe2a51d-1d21-449e-b8de-a508a54e4787_1329x844.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Image augmentation is a common technique used when training computer vision models in order to generate artificial training data by transforming in your actual training data, for example, random rotations and shifts.</p><p>However, bugs are tricky because no errors will be raised. Instead the result would be that the model will not perform as well on the un-augmented test dataset as it could have.</p><p><a href="https://m.mage.ai/a-visualizer-for-pytorch-image-transformations-e9c07bf27382">You can use this tool</a> to develop and sanity check your transforms on actual images before using them in a training script.</p>]]></content:encoded></item><item><title><![CDATA[Explorations in Knowledge Distillation]]></title><description><![CDATA[By Chris Zhu]]></description><link>https://magic.dang.vc/p/explorations-in-knowledge-distillation</link><guid isPermaLink="false">https://magic.dang.vc/p/explorations-in-knowledge-distillation</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Wed, 31 Mar 2021 23:29:31 GMT</pubDate><enclosure url="https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/8862bf6b-69e4-4d73-8ce7-f2afb1d318c1_1116x635.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You don&#8217;t need too many resources to give back and start mentoring others. Similarly, you don&#8217;t need fancy hardware to train your machine learning models using techniques like this: <a href="https://medium.mage.ai/explorations-in-knowledge-distillation">https://medium.mage.ai/explorations-in-knowledge-distillation</a></p>]]></content:encoded></item><item><title><![CDATA[How we organize our software development process]]></title><description><![CDATA[Craft your process to maximize your team&#8217;s autonomy, collaboration, and adaptability; thus, increasing your team&#8217;s effectiveness.]]></description><link>https://magic.dang.vc/p/how-we-organize-our-software-development</link><guid isPermaLink="false">https://magic.dang.vc/p/how-we-organize-our-software-development</guid><dc:creator><![CDATA[Tommy DANGerous]]></dc:creator><pubDate>Fri, 19 Mar 2021 19:11:13 GMT</pubDate><enclosure url="https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/debcee03-2685-4c91-929a-c611de0f267d_1200x630.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>TLDR</h1><ul><li><p>We used Scrum at our previous startup and at Airbnb, with a few tweaks.</p></li><li><p>We currently use a hybrid of <a href="https://en.wikipedia.org/wiki/Scrum_(software_development)">Scrum</a> and <a href="https://en.wikipedia.org/wiki/Kanban_(development)">Kanban</a> at <a href="https://www.mage.ai/">Mage</a> (AI application development tool), with a few tweaks.</p></li><li><p>Craft your process to maximize your team&#8217;s autonomy, collaboration, and adaptability; thus, increasing your team&#8217;s effectiveness.</p></li></ul><h1>What is it?</h1><p>According to <a href="https://en.wikipedia.org/wiki/Software_development_process">Wikipedia</a>, &#8220;a&nbsp;software development process&nbsp;is the process of dividing&nbsp;software development&nbsp;work into distinct phases to improve&nbsp;design,&nbsp;product management, and&nbsp;project management&#8221;.</p><h1>Why should you care?</h1><p>A good process helps your team be more effective in delivering value to customers by empowering your team to be autonomous (make decisions on their own), collaborative (sum is greater than the parts), and adaptive (ship relevant products that customers need).</p><h1>Our process in the past</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z22R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z22R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 424w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 848w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 1272w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z22R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png" width="1456" height="498" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/b91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3623856,&quot;alt&quot;:&quot;Airbnb cabin&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Airbnb cabin" title="Airbnb cabin" srcset="https://substackcdn.com/image/fetch/$s_!Z22R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 424w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 848w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 1272w, https://substackcdn.com/image/fetch/$s_!Z22R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb91a75f8-ef5e-49be-b4f1-c5d696ed11b2_2000x684.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Courtesy of Airbnb</figcaption></figure></div><p>At OnMyBlock (our previous startup) and at Airbnb, we used Scrum (with a few tweaks) as our software development process.</p><p>Every 2 weeks, our team would get together to review all the work that was done in the previous sprint (a time-boxed window usually 2-4 weeks long) and then plan for the upcoming sprint. This meeting is typically called sprint review and sprint planning.</p><p>Here is how we conducted the sprint review and planning:</p><ol><li><p>Before the meeting, the scrum master (a single person responsible for project managing the stories during a sprint) would ping everyone to make sure they updated all their stories (aka tasks) in our project management software.</p></li><li><p>At the start of the meeting, each person goes around and shares what they shipped, what work they couldn&#8217;t finish, and explain why they couldn&#8217;t accomplish the unfinished work.</p></li><li><p>Then, the scrum master leads the team in discussion on which upcoming epics (aka features) are most urgent and important.</p></li><li><p>Everyone independently plans what they will deliver by the end of the next sprint, choosing from a list of prioritized epics. Each person is allotted a fixed number of story points. If you are allotted 13 story points (we used Fibonacci numbers to scale our story points), you can only commit to stories that have a total sum of 13 story points. Story points are values assigned to a story (aka tasks) that attempt to provide a sense of how difficult it will be to accomplish that story.</p></li><li><p>After everyone is done planning, each person goes around and shares what they are committing to delivering in the upcoming sprint.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NG1T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NG1T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 424w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 848w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NG1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png" width="1456" height="1053" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1053,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Sprint schedule&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sprint schedule" title="Sprint schedule" srcset="https://substackcdn.com/image/fetch/$s_!NG1T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 424w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 848w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!NG1T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6aa7660-d0e8-4df7-9ad6-1b03230d28e5_1996x1444.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Sprint schedule</figcaption></figure></div><p>There are usually &#8220;stand-ups&#8221; in Scrum, which are short daily meetings for the team to update each other. Our team felt daily stand-ups were too frequent and unproductive so we cut it down to 3 per week except we have 2 per week on the weeks where we have sprint review and planning. Our stand-ups follow the typical agenda where each person goes around and shares what they did yesterday, what they are working on today, and if they have any blockers to their current story (aka task).</p><h2>Pros of how we did Scrum</h2><ul><li><p>Engineers had more ownership of the features they were responsible for and this resulted in better performance reviews because we were assessed on which projects we led and delivered end-to-end.</p></li><li><p>There was clear accountability because if someone commits to work that they didn&#8217;t finish, they would be responsible for explaining why they couldn&#8217;t finish it by the deadline.</p></li><li><p>Less knowledge was required to accomplish tasks because an engineer can fill up their sprint with tasks that were related to their area of expertise; such as backend, frontend, data, ML, different services, specific languages, etc.</p></li></ul><h2>Cons of how we did Scrum</h2><ul><li><p>Estimating the difficulty of stories was rarely accurate, which led to frequent over estimating and underestimating of the work.</p></li><li><p>When we pre-assign ourselves stories, we typically chose stories that belonged to an epic we were responsible for. Many of us ended up working in silos, which decreased collaboration during the implementation phase of projects (we had a lot of collaboration during the design phase).</p></li><li><p>Entire features shipped slower because the concentration of effort was spread out across multiple epics at once.</p></li><li><p>It was difficult for our team to quickly adapt and change course mid sprint since we planned 2 weeks in advance.</p></li></ul><h1>The process today</h1><p>At our current company, <a href="https://www.mage.ai/">Mage</a> (AI application development tool), we use a hybrid of Scrum and Kanban with a few tweaks. The tool we use to manage this is called <a href="https://airtable.com/">Airtable</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mfRu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mfRu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 424w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 848w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 1272w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mfRu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6699815,&quot;alt&quot;:&quot;WandaVision and Doctor Strange&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="WandaVision and Doctor Strange" title="WandaVision and Doctor Strange" srcset="https://substackcdn.com/image/fetch/$s_!mfRu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 424w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 848w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 1272w, https://substackcdn.com/image/fetch/$s_!mfRu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F200687c7-11d8-47d8-9ba8-4d1ec1c5923c_2000x1125.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Magic</figcaption></figure></div><p>Once a week, we hold a meeting called &#8220;Mage Force&#8221; where we review all the features we shipped last week and then prioritize the features we need to deliver in the upcoming release. Before we start the meeting, we hold a trust activity where the goal is to build trust amongst ourselves and to build each other up (one of our core virtues of &#8220;give people power-ups&#8221;). In contrast to having a 2 week sprint, we have 1 week release cycles where we ship as much product as possible that our customers need.</p><p>Here is how we plan our release cycle:</p><ul><li><p>We make sure that every epic (aka features) is attributed to a key result or a specific customer use case. That way, we are making sure to deliver as much value to our customers as possible.</p></li><li><p>Each epic is given a deadline ship date that corresponds to when a customer will use it.</p></li><li><p>Each epic is broken down into stories (aka tasks), which can be worked on in parallel</p></li><li><p>The order in which stories are worked on is based on the related epic&#8217;s deadline and whether or not there are downstream dependent stories</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_iMa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_iMa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 424w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 848w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 1272w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_iMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png" width="1456" height="31" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:31,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47115,&quot;alt&quot;:&quot;A story in Scrum&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A story in Scrum" title="A story in Scrum" srcset="https://substackcdn.com/image/fetch/$s_!_iMa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 424w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 848w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 1272w, https://substackcdn.com/image/fetch/$s_!_iMa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F64f3f264-f17f-441b-b7ed-4a331def7a90_2000x43.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">A story</figcaption></figure></div><ul><li><p>A story in the same epic with a lower priority means it depends on another story within the same epic to be completed first</p></li><li><p>Each person who creates a story during planning will fill in as much detail in the notes to give any future engineer context on why the story exists, the requirements of the story, and any additional knowledge that will be helpful in completing the story.</p></li><li><p>When we decide which epic must be shipped for the next release, we change all the stories for that epic to &#8220;Not started&#8221;; which will then make it appear on our Kanban board.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rn1W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rn1W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 424w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 848w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 1272w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rn1W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png" width="1456" height="921" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:921,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:383762,&quot;alt&quot;:&quot;Kanban board&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Kanban board" title="Kanban board" srcset="https://substackcdn.com/image/fetch/$s_!Rn1W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 424w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 848w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 1272w, https://substackcdn.com/image/fetch/$s_!Rn1W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F8a4f1d6b-dcd5-416a-b0d4-33b6581de898_2000x1265.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Kanban board</figcaption></figure></div><ul><li><p>Stories are not pre-assigned. When someone has no stories &#8220;In progress&#8221;, they will take the highest priority story that has &#8220;Not started&#8221;, move it to &#8220;In progress&#8221;, and assign it to themselves.</p></li><li><p>Each story moves through the following stages on the Kanban board: Not started, In progress, Review (e.g. review pull request), QA (merged into master and need to manually test on staging), Complete (new change is on production).</p></li><li><p>Once a story is finished, the DRI (directly responsible individual) moves it to &#8220;Review&#8221;, creates a pull request on GitHub, and associates it to the story for someone else to review.</p></li><li><p>Once the code is reviewed, approved, and merged into the master branch, the DRI moves the story to &#8220;QA&#8221; where they must now manually test their changes on the staging environment.</p></li><li><p>After the new changes are verified on staging, the DRI deploys the code to production and moves the story to &#8220;Complete&#8221;.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Suf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Suf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Suf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png" width="1456" height="1052" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1052,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154744,&quot;alt&quot;:&quot;Hybrid schedule&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Hybrid schedule" title="Hybrid schedule" srcset="https://substackcdn.com/image/fetch/$s_!6Suf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 424w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 848w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 1272w, https://substackcdn.com/image/fetch/$s_!6Suf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F86ee81a7-10b5-4ed0-8358-48db69d674b8_1990x1438.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Hybrid schedule</figcaption></figure></div><p>We have stand-ups (daily meetings in Scrum) 4 times a week, skipping the day we have &#8220;Mage Force&#8221;. Our stand-up meetings are called &#8220;Mission Briefings&#8221;. Each person goes around and shares what they learned yesterday and what their plan of attack is for crushing their story today. With this format, we maximize learnings (one of our core virtues of &#8220;always be leveling up&#8221;) instead of simply reporting tasks (which can be done by looking at the Kanban board).</p><h2>Pros of our hybrid approach</h2><ul><li><p>There is a lot more collaboration at the implementation phase because people are able to work on the same epic together at the same time.</p></li><li><p>Working closer together is more fun and exciting, leading to higher team morale and solidarity.</p></li><li><p>We ship new features on a daily basis, helping us make customers happier and win more new business.</p></li><li><p>Everyone works across multiple codebases and is responsible for many areas of the product. This increases the speed in which we ship new features because everyone is capable of working across the entire tech stack, unblocking themselves if needed.</p></li><li><p>We are able to adapt rapidly and change our focus as customer needs change or more urgent features arise unexpectedly.</p></li></ul><h2>Cons of our hybrid approach</h2><ul><li><p>Because stories are not pre-assigned, individuals on the team are required to understand multiple code bases and technologies in order to effectively complete stories.</p></li><li><p>There is less accountability at the individual level because each person is not committing to being responsible for delivering a set of stories. Instead, the entire team is committing to the work. If something doesn&#8217;t get done, who is responsible? We have yet to solve for this.</p></li><li><p>Since everyone on the team works together to ship as much customer value as fast as possible, there can be a lack of &#8220;ownership&#8221; of projects. At Airbnb, engineers were awarded for having ownership of projects and therefore ownership of projects was desired by individuals. The system in place rewarded that desire and behavior.</p></li></ul><h1>Conclusion</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RLpg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RLpg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RLpg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/f2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165940,&quot;alt&quot;:&quot;Teamwork makes the dream work&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Teamwork makes the dream work" title="Teamwork makes the dream work" srcset="https://substackcdn.com/image/fetch/$s_!RLpg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RLpg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a698f1-9b16-469f-8782-a4dd9b7b3c9d_1200x630.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Teamwork makes the dream work</figcaption></figure></div><p>Structure your software development process to maximize your team&#8217;s autonomy (make decisions on their own), collaboration (sum is greater than the parts), and adaptability (ship relevant products that customers need).</p><p>A hybrid of Scrum and Kanban, with a few tweaks, works great for Mage at this stage because we are prioritizing speed and focus through deeper collaboration.</p><p>As we grow and evolve our process, we need to keep in mind how we deal with individual &#8220;ownership&#8221; of projects and the increasing need for specialization.</p>]]></content:encoded></item></channel></rss>