<?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[MLOPs Substack]]></title><description><![CDATA[Personal Substack on Machine Learning Operations including content and projects intersecting with Formula 1.]]></description><link>https://f1.mlopsengineer.co.uk</link><image><url>https://substackcdn.com/image/fetch/$s_!bh7o!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f42d1ee-fc18-4c4b-a16b-aef8ab4631c3_512x512.png</url><title>MLOPs Substack</title><link>https://f1.mlopsengineer.co.uk</link></image><generator>Substack</generator><lastBuildDate>Mon, 13 Apr 2026 04:40:27 GMT</lastBuildDate><atom:link href="https://f1.mlopsengineer.co.uk/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Tobi John]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[tobijohn@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[tobijohn@substack.com]]></itunes:email><itunes:name><![CDATA[Tobi John]]></itunes:name></itunes:owner><itunes:author><![CDATA[Tobi John]]></itunes:author><googleplay:owner><![CDATA[tobijohn@substack.com]]></googleplay:owner><googleplay:email><![CDATA[tobijohn@substack.com]]></googleplay:email><googleplay:author><![CDATA[Tobi John]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Demanding Tech Factors in Formula 1: What Makes Motorsport's Data Game So Hard]]></title><description><![CDATA[Formula 1 does only race cars-it races data.]]></description><link>https://f1.mlopsengineer.co.uk/p/demanding-tech-factors-in-formula</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/demanding-tech-factors-in-formula</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sun, 01 Feb 2026 21:48:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fYFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Formula 1 does only race cars-it races data. Every grand prix weekend, teams ingest staggering volumes of telemetry, run simulations, and lean on models to shape strategy, reliability, and performance. The technical demands of this environment are extreme: real-time decisons, zero tolerance for failure, and relentless pressure to innovate within tight rules and budgets. Those same demands show up, in different form, in production machine learning. </p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Real-Time or Nothing: Latency as a Hard Constraint</h2><p>In F1, strategy and pit-wall decisions happen in seconds. A safety car, a sudden rain shower, or a rival&#8217;s pit stop forces immediate recalculation of tire strategy, pit window, and race mode. There is no &#8220;We&#8217;ll run the model overnight.&#8221; The window for a pit stop call can be a handful laps; the window for updating a strategic recommendation is often sub-minute. </p><p>In reality, telemetry streams in at thousands of samples per second per car. Strategy tools must consume live data, run optimizations or predictions, and surface recommendations before the next lap is done. Late insights are therefore useless.</p><p>Production ML faces the same kind of latency budget. To win, you have to act faster than the competition. Batch-only pipelines are not enough when the business decision is &#8220;now.&#8221; You need:</p><ul><li><p>Low latency inference, wherein the served model meets strict p95 targets. </p></li><li><p>Features that are computed and served in near real time, not just daily batch jobs. </p></li><li><p>Caching and pre-computation of multiple scenarios, to be prepared for when the event happens.</p></li></ul><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_!fYFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fYFF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fYFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg" width="632" height="424.49333333333334" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1200,&quot;resizeWidth&quot;:632,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!fYFF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fYFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b002e3d-10df-413e-b71e-fe68de796f6e_1200x806.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"> RB22 - source X.</figcaption></figure></div><p>A single car can produce hundreds of channels of telemetry at high frequency. Multiply by two cars, multiple session, and 20+ races, and you get petabytes of structured time-series data. Add weather, timing, GPS&lt; and historical archives, and the scale becomes overwhelming. The engineers must filter, aggregate, and store this data so it&#8217;s queryable for strategy, reliability, and driver analysis. Raw dumps are insufficient; the true value is in derived signals, lap-level features, and event-based indexes.</p><p>High-velocity, high-volume data is the norm in strong ML systems. The demanding factors are:</p><ul><li><p><strong>Feature stores</strong> - central, versioned feature definitions and backfills so training and serving use the same logic.</p></li><li><p><strong>Incremental and streaming ET</strong>L - pipelines that can handle continuous ingestion without re-processing the entire history every time. </p></li><li><p><strong>Data quality and schema evolution</strong> - new sensors (or new product events) must be integrated without breaking the existing models and dashboards.</p></li></ul><p>F1&#8217;s &#8220;firehose&#8221; is a magnified version of what many MLOps teams face: if you can&#8217;t tame volume and velocity, you can&#8217;t build and reliable models or value adding real-time features.</p><p>The technical bar in F1 is high not because the sport is exotic, but because the constraints are universal: fast, reliable, auditable, and efficient. MLOps, when done well addresses the same set of demands-so the demanding tech factors in F1 are a useful lens for designing and running production ML systems that can perform when it matters.</p><p></p><h3>Coding Exercise: Reliable Strategy Fallback (Circuit Breaker Pattern)</h3><p>One of the most demanding factors in F1 is <strong>reliability under pressure</strong>: when the primary ML strategy service is slow or down, the pit wall still needs a recommendation. This exercise implements a simple circuit breaker with a fallback-a pattern that MLOps uses to keep systems reliable when dependencies fail. </p><p></p><h4>Problem: Strategy Service with Fallback </h4><ul><li><p>Call a (simulated) strategy service that may be slow or fail.</p></li><li><p>If it fails or time out, fall back to a rule-based recommendation (e.g &#8220;Stay out&#8221; or &#8220;box next lap&#8221;).</p></li><li><p>Use a circuit breaker so we don&#8217;t hammer a failing service; after N failures, skip the call and go straight to fallback for a cooldown period.</p><p></p></li><li><p> <strong>Example:</strong></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_!VpxJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VpxJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 424w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 848w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 1272w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VpxJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png" width="1414" height="372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:372,&quot;width&quot;:1414,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74673,&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;:&quot;https://f1.mlopsengineer.co.uk/i/186542509?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VpxJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 424w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 848w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.png 1272w, https://substackcdn.com/image/fetch/$s_!VpxJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e9282a8-74fe-468f-9128-abcd04165cb6_1414x372.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><p>You can find a starting solution in the Github link <a href="https://github.com/mlopsengr/formula1/blob/main/ml-strategy-service.py">here</a>.</p><p>A fallback ensures a decision is always returned, even when the primary model or service fails. The circuit breaker avoids cascading failure and gives the failing service time to recover. In production, you would log when fallback is used and when the circuit opens/closes to help debug and improve the primary model.</p><p>The demanding factor here is the same as in F1: <strong>no redos on race day</strong>. MLOps must design for failure so that when the primary system does not deliver, the system still does.</p><p></p><blockquote><p>The hardest part is not in building a model, but in making it work at the right time, with the right data, under real-world pressure.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Idealism in F1 Motorsports]]></title><description><![CDATA[The Eternal Tension between Pragmatism and Idealism, Reality and Dream.]]></description><link>https://f1.mlopsengineer.co.uk/p/idealism-in-f1-motorsports</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/idealism-in-f1-motorsports</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sun, 28 Dec 2025 14:56:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X2w4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Formula 1 has always existed in a delicate balance between idealism and pragmatism. For decades, the sport has been a canvas upon which fans, drivers, engineers, and team principals project their visions of what racing *should* be-a pure contest of skill, innovation, and courage. Yet beneath this romantic veneer lies a complex ecosystem driven by commercial interests, political manoeuvring, and the relentless pursuit of competitive advantage. </p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>The Romantic Ideal</h2><p>At its core, the idealistic vision of Formula 1 is beautifully simple; the best drivers, in the best cars, competing on the world&#8217;s most challenging circuits. It&#8217;s a vision of pure sporting meritocracy where talent alone determines victory. The idealism manifests in several key beliefs:</p><ul><li><p><strong>The Driver as Hero</strong>: The romantic notion that a truly exceptional driver can overcome any mechanical disadvantage through sheer skill and determination. Think of Ayrton Senna&#8217;s legendary wet-weather drives, or Michael Schumacher&#8217;s ability to extract performance from inferior machinery. These moments reinforce the belief that human excellence can transcend technical limitations.</p></li></ul><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_!X2w4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X2w4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X2w4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg" width="514" height="545.1295774647888" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:710,&quot;resizeWidth&quot;:514,&quot;bytes&quot;:145238,&quot;alt&quot;:&quot;Image&quot;,&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!X2w4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 424w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 848w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!X2w4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84c1bc37-c68c-4abf-95e2-25d2ac17f48f_710x753.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"><strong>Ayrton</strong> <strong>Senna</strong> leads <strong>Michael</strong> <strong>Schumacher</strong> - Imola 1994</figcaption></figure></div><ul><li><p><strong>Engineering Purity</strong>: The ideal that Formula 1 should be the ultimate expression of automotive innovation-where brilliant minds push the boundaries of physics, materials science, and aerodynamics. The sport should reward creativity and technical excellence, not just financial resources. </p><p></p></li><li><p><strong>Sporting Integrity</strong>: The belief that rules should be clear, enforcement should be consistent, and the best driver-car combination should win on any given Sunday, regardless of politics, money, or external pressures.</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_!eVZX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eVZX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eVZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg" width="534" height="534" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:900,&quot;resizeWidth&quot;:534,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!eVZX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eVZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feca249d3-0dae-48b4-8685-b807df13e3be_900x900.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"><strong>Ayrton Senna and Michael Schumacher</strong></figcaption></figure></div><h2>The Reality Check</h2><p>Yet Formula 1&#8217;s history is littered with moments that challenge these ideals:</p><p>- <strong>Money Talks:</strong> The correlation between budget and success is undeniable. While smaller teams occasionally punch above their weight, the championship contenders are almost invariably those with the deepest pockets. The cost cap introduced in 2021 was an attempt to address this, but the fundamental tension remains.</p><p>- <strong>Politics and Strategy:</strong> Team orders, strategic retirements, and political manouvering have always been part of the sport. The infamous &#8220;Multi-21&#8221; incident, or &#8220;Ferrari&#8217;s team orders at Austria 2002, remind us that Formula 1 is as much about team strategy as individual driver performance.</p><p>- <strong>Regulatory Complexity:</strong> The rulebook has grown increasingly complex, creating opportunities for teams to exploit gray areas. The &#8220;bendy wing&#8221; controversies, fuel flow sensors, and various technical directives highlight how the pursuit of competitive advantage can clash with the spirit of the regulations.</p><h2>Moments of Pure Idealism </h2><p>Despite these challenges, Formula 1 has produced moments that perfectly capture the idealistic vision:</p><p>- <strong>Senna vs. Prost</strong>: Their rivalry, particularly as Suzuka in 1989 and 1990, represented a clash of pure racing philosophies-Prost&#8217;s calculated precision versus Senna&#8217;s raw, uncompromising passion. Both approaches were valid, both were idealistic in their own way.</p><p>- <strong>The Underdog Victory</strong>: When Pierre Gasly won at Monza in 2020, or when Esteban Ocon triumphed in Hungary in 2021, these moments felt like the sport at its purest-talent and circumstance aligning to create something magical, regardless of team size or budget. In MLOps terms, these are moments when a smaller team&#8217;s well-engineered model outperforms a resource-rich competitor&#8217;s solution-proving that thoughtful feature engineering and clean data pipelines can sometimes trump raw computational power. </p><p>- <strong>Technical Innovation</strong>: The introduction of ground effect aerodynamics, the development of hybrid power units, and innovations like DRS and ERS represent the idealistic pursuit of making racing both faster and more engaging. </p><p>- <strong>Radical Engineering Experiments</strong>: Perhaps no examples better capture engineering idealism than Honda&#8217;s free-thinking engine designs of the 1980s and the six-wheeled Tyrrell P34. Honda&#8217;s engineers, unbound by unconventional wisdom, developed revolutionary V6 turbocharged engines that defied traditional combustion chamber designs, following their vision regardless of immediate practical limitations or industry skepticism.</p><p>Similarly, the Tyrell P34&#8217;s six-wheel design-four small front wheels and two standard rear wheels-was born from pure engineering idealism. Designer Derek Gardner followed a vision that challenged fundamental assumptions about vehicle dynamics, believing that smaller front wheels would reduce drag and improve aerodynamics. While the car achieved some success (including a 1-2 finish at the 1976 Swedish Grand Prix), it ultimately proved too complex to develop further. Yet it remains a perfect symbol of idealism: engineers pursuing an idea because they <strong>believed </strong>it could work, not because conventional wisdom suggested it would. </p><h2>The Modern Tension </h2><p>Today&#8217;s Formula 1 exists in an interesting space. On one hand, Liberty Media&#8217;s ownership has brought unprecedented commercial success and global reach. The Netflix series <em>Drive to Survive </em>has introduced millions of new fans to the sport, expanding its appeal beyond traditional motorsport enthusiasts.</p><p>On the other hand, this commercial success has raised questions about whether the sport is becoming too sanitized, too focused on entertainment value over pure racing. The introduction of sprint races, the push for more street circuits, and the emphasis on &#8220;show&#8221; over &#8220;sport&#8221; represent a shift toward a more pragmatic, commercially-driven approach.</p><h2>The Driver&#8217;s Perspective </h2><p>Many drivers speak about their idealistic vision of Formula 1. Lewis Hamilton has been vocal about using his platform for social change, seeing the sport as a vehicle for broader impact. Max Verstappen, meanwhile, has expressed frustration with what he sees as excessive regulation and &#8220;artificial&#8221; elements like DRS, preferring a more pure form of racing. </p><p>These perspectives highlight a fundamental question: What <strong>is</strong> Formula 1&#8217;s purpose? Is it pure sport? Entertainment"? A platform for technological innovation"? A business? The answer, of course, is all of the above-and that&#8217;s where the tension lies.</p><h2>The Engineering Ideal </h2><p>For engineers, the idealistic vision is one of unlimited innovation within clear boundaries. The best technical minds should be able to find creative solutions that push the sport forward. Yet the reality is that regulations are often written to prevent certain innovations, creating a cat-and-mouse game between rule-makers and teams. </p><p>The introduction of the cost cap represents an interesting compromise-an attempt to level the playing field while still allowing technical innovation. Whether this achieves the idealistic goal of making success more accessible remains to be seen. </p><p></p><h2>The Idealistic Pursuit of Perfect Data-Driven Racing </h2><p>The application of machine learning and MLOps in Formula 1 represents one of the sport&#8217;s most compelling modern expressions of idealism. It embodies the belief that through sophisticated data science, teams can transcend human limitations and achieve something approaching perfect strategic decision-making. Yet, like all idealistic pursuits in F1, this vision exists in constant tension with reality.</p><p><strong>The Ideal: Pure Data-Driven Excellence</strong> </p><p>The idealistic vision of MLOps and F1 is beautifully simple: every decision should be optimized through data. Race strategy should be determined not by intuition or experience alone, but by models that have learned from thousands of races, millions of data points, and countless scenarios. It is the belief that the right algorithm, trained on the right data, can unlock insights that even the most experienced race engineers might miss. </p><p>This idealism mirrors the engineering philosophy behind Honda&#8217;s radical engine designs or the Tyrrell P34-the conviction that unconventional approaches, properly executed, can yield extraordinary results.  In MLOps terms, this means believing that a well-engineered model can predict tire degradation more accurately than human judgment, that anomaly detection algorithms can catch mechanical failures before they become race-ending, and that simulation models can test more configurations in a day than physical testing could in a year.</p><h4>Race Strategy: The Pursuit of Optimal Decisions </h4><p>Consider race strategy optimization-one of the most critical applications of ML in F1. The idealistic vision is that ML models can process real-time telemetry, historical patterns, weather forecasts, and competitor behavior to recommend the perfect pit stop window, the optimal tire compound, the ideal fuel load. It is the belief that data can eliminate the guesswork, the &#8220;what ifs&#8221;, the second guessing that haunts every strategic decision. </p><p>Yet the reality is more complex. Models can fail. Data can be incompelete. Edge cases emerge that training data never covered. The MLOps challenge-maintaining reliable models in production, handling real-time data streams, managing model drift-represents the pragmatic counterpoint to this idealism. Teams must balance the ideal of perfect data-driven decisions with the reality that models need human oversight, validation and fallback strategies.</p><h4>Predictive Tire Modelling: Believing in the Perfect Forecast</h4><p>Tire degradation prediction exemplifies the idealism of MLOps in F1. The vision is that models can learn the subtle patterns-how track temperature affects compound performance, how driver style influences wear, how weather changes alter grip-to predict exactly when tires will lose optimal performance. It is the pursuit of perfect foresight, the belief that with enough data and the right algorithms, teams can see into the future. </p><p>This mirrors the idealism of engineers who believed the P34&#8217;s six-wheel design could revolutionize aerodynamics, or that Honda&#8217;s unconventional engine architecture could unlock new performance levels. The MLOps infrastructure that enables this-automated retraining pipelines, feature stores, model versioning-represents the practical machinery that makes the idealistic vision possible. But it also highlights the tension: models must be continuously updated as conditions change, requiring teams to balance the ideal of perfect prediction with the reality of constant adaptation.</p><h3>Driver Performance Analysis: The Quest for Perfect Feedback </h3><p>The idealistic vision of ML-driven driver analysis is that models can identify the perfect braking point, the optimal cornering line, the ideal throttle application&#8212;extracting insights from telemetry that even the driver might not consciously recognize. It is the belief that data can help drivers achieve something approaching the perfect lap, every lap.</p><p>Yet this idealism exists alongside the reality that drivers are human, that intuition and feel matter, that sometimes the &#8220;perfect&#8221; data-driven approach might not account for the driver&#8217;s unique style or the car&#8217;s specific characteristics. </p><p>The MLOps challenge is building systems that enhance rather than replace driver skill&#8212;systems that provide insights while respecting the art of driving.</p><p></p><h3>The Tension: Idealism vs. Pragmatism in Production</h3><p>The most idealistic aspect of MLOps in F1 is the belief that teams can experiment freely with cutting-edge ML techniques&#8212;trying radical new approaches, iterating rapidly, deploying improvements continuously&#8212;while maintaining the reliability required for race-day decision-making. It is the vision of having both: the freedom to innovate (like Honda&#8217;s engineers) and the discipline to execute (like championship-winning teams).</p><p>But the reality is that production ML systems require stability, validation, and careful deployment. Teams can&#8217;t risk race-day failures for the sake of experimentation. The MLOps infrastructure must balance these competing demands: enabling rapid iteration while ensuring reliability, supporting experimentation while maintaining production stability.</p><h3>The Enduring Ideal</h3><p>Despite these tensions, the idealism persists. Teams continue to invest in MLOps infrastructure, believing that the right combination of data, algorithms, and engineering can unlock competitive advantages. They pursue the vision of perfect data-driven racing, even as they acknowledge the practical limitations.</p><p>This is the essence of idealism in F1: not the naive belief that perfection is achievable, but the conviction that the pursuit itself is valuable. MLOps in F1 represents the modern expression of this timeless ideal&#8212;the belief that through innovation, experimentation, and relentless pursuit of excellence, teams can push closer to something approaching perfect performance, even if that perfection remains forever just out of reach.</p><p></p><h2>Looking Forward</h2><p>As Formula 1 moves toward 2026 and new regulations, the tension between idealism and pragmatism will continue. The sport must balance:</p><p>- <strong>Innovation</strong>: Allowing technical creativity while maintaining safety and cost control. In MLOps, this means enabling experimentation while ensuring model reliability, security, and cost efficiency&#8212;balancing the freedom to innovate with production-grade requirements.</p><p>- <strong>Entertainment</strong>: Creating compelling racing while preserving the sport&#8217;s integrity. For MLOps, this translates to building systems that are both powerful and understandable&#8212;models that deliver results while maintaining interpretability and explainability.</p><p>- <strong>Accessibility</strong>: Making it possible for talented drivers and teams to compete regardless of financial backing. Similarly, MLOps must democratize access to powerful ML infrastructure, enabling smaller teams to compete with tech giants through better tooling and open-source platforms.</p><p>- <strong>Sustainability</strong>: Addressing environmental concerns while maintaining Formula 1&#8217;s identity as the pinnacle of motorsport. MLOps teams face similar challenges: reducing the carbon footprint of training large models, optimising inference costs, and building sustainable ML infrastructure that doesn&#8217;t compromise on performance.</p><p></p><h2>In Conclusion: The Beauty in the Tension </h2><p>Perhaps the most idealistic thing about Formula 1 is that it continues to inspire idealism itself. Despite all the commercial realities, political complexities, and regulatory challenges, fans still believe in the possibility of pure racing. Drivers still chase the perfect lap. Engineers still pursue the impossible innovation.</p><p>This tension between what Formula 1 <em>*is*</em> and what it <em>*could be*</em> is not a flaw&#8212;it is an attribute of a technology driven and exciting sport. It is what keeps the sport alive, evolving, and endlessly fascinating. The idealistic vision provides direction and purpose, while the pragmatic reality ensures the sport&#8217;s survival and growth.</p><p>In the end, Formula 1&#8217;s idealism isn&#8217;t about achieving perfection&#8212;it is about the constant pursuit of it. And in that pursuit, we find the sport&#8217;s true essence: the eternal quest to be faster, smarter, and better, both on and off the track.</p><p></p><h2>Coding Exercise: Tracking F1 Race Results with HashMaps</h2><p>In the spirit of idealism meeting pragmatism, let&#8217;s solve a practical problem that F1 data engineers face: efficiently tracking and analyzing race results. This exercise demonstrates how fundamental data structures (like hash maps) enable the sophisticated analytics that power modern F1 strategy.</p><p></p><h3>Problem: Two Sum with F1 Context</h3><p>Given an array of lap times (in milliseconds) and a target total time, find two distinct laps whose times sum to the target. This mirrors the challenge of finding optimal pit stop windows or identifying lap combinations that meet strategic goals.</p><p></p><h4>Problem Statement:</h4><p>Given an array of integers `lap_times` and an integer `target_time`, </p><p>return the indices of the two laps such that their times add up to `target_time`.</p><p>You may assume that each input has exactly one solution, and you may not use </p><p>the same lap twice.</p><p>Example:</p><p>Input: lap_times = [85000, 85200, 84800, 85100, 84900], target_time = 169900</p><p>Output: [0, 4]</p><p>Explanation: lap_times[0] + lap_times[4] = 85000 + 84900 = 169900</p><pre><code># python

def find_optimal_laps(lap_times, target_time):
    """
    Find two lap indices whose times sum to target_time.
    
    Time Complexity: O(1) - single pass through the array
    Space Complexity: O(n) - hash map storage
    
    This approach trades space for time, ideal for real-time 
    race strategy calculations where speed matters.
    """
    # HashMap to store lap_time -&gt; index mapping
    lap_map = {}
    
    for i, lap_time in enumerate(lap_times):
        # Calculate the complement (what we need to reach target)
        complement = target_time - lap_time
        
        # Check if we've seen the complement before
        if complement in lap_map:
            # Found the pair!
            return [lap_map[complement], i]
        
        # Store current lap time and its index
        lap_map[lap_time] = i
    
    # No solution found (shouldn't happen per problem constraints)
    return []

# Example usage
lap_times = [85000, 85200, 84800, 85100, 84900]
target_time = 169900
result = find_optimal_laps(lap_times, target_time)
print(f"Optimal lap combination: {result}")  # Output: [0, 4]
</code></pre><h2>Why HashMaps Matter in F1 Data Engineering:</h2><p>1. <strong>Real-Time Strategy Calculations</strong>: During a race, teams need to calculate optimal pit stop windows instantly. HashMaps provide O(1) lookup time, enabling rapid decision-making.</p><p>2. <strong>Telemetry Data Indexing</strong>: With thousands of data points per second, hash maps allow engineers to quickly look up specific sensor readings or correlate events across different data streams.</p><p>3. <strong>Driver Performance Tracking</strong>: Storing driver statistics (fastest laps, sector times, tire performance) in hash maps enables instant retrieval for strategy comparisons.</p><p>4. <strong>Feature Lookup in ML Models:</strong> When building predictive models for race strategy, hash maps enable fast feature extraction from historical race data.</p><p></p><h4>Extended Challenge: Group Anagrams of Driver Names</h4><p>Here&#8217;s another hashmap problem:</p><pre><code>def group_driver_teams(drivers):
    """
    Group drivers whose names are anagrams (same letters, different order).
    Useful for finding driver name variations in historical data.
    
    Example:
    Input: ["Lewis Hamilton", "Max Verstappen", "Lewis Hamiltno"]
    Output: [["Lewis Hamilton", "Lewis Hamiltno"], ["Max Verstappen"]]
    """
    from collections import defaultdict
    
    # HashMap: sorted_name -&gt; list of original names
    groups = defaultdict(list)
    
    for driver in drivers:
        # Create a key by sorting the letters (ignoring case and spaces)
        key = ''.join(sorted(driver.lower().replace(' ', '')))
        groups[key].append(driver)
    
    # Return groups with more than one member (or all if you want)
    return [group for group in groups.values() if len(group) &gt; 1]

# Example
drivers = ["Lewis Hamilton", "Max Verstappen", "Lewis Hamiltno", "Max Verstappne"]
print(group_driver_teams(drivers))
# Output: [['Lewis Hamilton', 'Lewis Hamiltno'], ['Max Verstappen', 'Max Verstappne']]
```</code></pre><p>In production ML systems, hash maps are fundamental for:</p><p>- <strong>Feature Stores</strong>: Fast lookup of pre-computed features</p><p>- <strong>Model Registry</strong>: Quick retrieval of model metadata and versions</p><p>- <strong>A/B Testing</strong>: Tracking experiment variants and their performance</p><p>- <strong>Data Validation</strong>: Storing expected data schemas and validation rules</p><p>The idealism here is believing that the right data structures can unlock performance&#8212;just like F1 engineers believe the right car design can find those crucial milliseconds.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Dynamism of Innovation.]]></title><description><![CDATA[Exploring how change, context, and purpose shape true innovation.]]></description><link>https://f1.mlopsengineer.co.uk/p/the-dynamism-of-innovation</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/the-dynamism-of-innovation</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Tue, 11 Nov 2025 11:29:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mExO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<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_!mExO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mExO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mExO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mExO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mExO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mExO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg&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;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!mExO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mExO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mExO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mExO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8a4c3c7-33ae-4238-b173-1c9a226f344b_3152x1773.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></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>What does innovation mean to you? what did it mean in the past? and what does it mean now. Do you think this will also change?</p><p>These are questions I ask myself, and believe everyone should. Think on this often. One fascinating lesson from quantum physics is that the very act of observation changes what is being observed. It has led me to believe that nothing ever truly stays the same &#8212; not even artificial intelligence or innovation in Formula 1 engineering.</p><div class="pullquote"><p>Simply put, innovation is the creation of a system that delivers significantly better performance in one or more areas&#8212;whether within or beyond established rules&#8212;and represents an idea that was previously unforeseen.</p></div><p>Within the boundaries of nature and physics, there&#8217;s only a finite range of innovations possible at any given time. Doing something different isn&#8217;t always innovative &#8212; but true innovation almost always requires doing something different.</p><p>When improving any engineering solution &#8212; MLOps included &#8212; it&#8217;s essential to ask: what&#8217;s the ultimate goal? Are we simply doing something different, or are we creating something truly innovative? Clarity on this, both for yourself and your stakeholders, is vital.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FXyD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FXyD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FXyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg&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;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!FXyD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FXyD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8e1a791-3907-42e9-8a0d-015dcecc99f7_3690x2076.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></figure></div><p>To create something truly innovative, we must study what has been done before&#8212;how the rules evolved, which perceived weaknesses might hide strengths, and, above all, what the real goal is. Are we aiming for a more reliable car? A faster one&#8212;on the straights, the corners, or both? A telemetry system with lower latency? Innovation demands a clear purpose, not just a scatter of efforts in different directions.</p><p>Each team must define what innovation means for them at any moment&#8212;based on their position on the grid, available resources, and end-of-season goals. In other words, start with purpose, then shape innovation around it. After the season, reflect on results and lessons learned to redefine that meaning, because innovation is fluid&#8212;dynamic, and ever-changing.</p><p></p><h2><strong>Coding Exercise</strong> </h2><h4><strong>Longest Balanced Substring of Brackets - Medium Difficulty</strong></h4><p>You are given a string <code>s</code> consisting only of the characters <code>&#8216;(&#8217;</code> and <code>&#8216;)&#8217;</code>.<br>Your task is to find the <strong>length of the longest balanced substring</strong> of parentheses.</p><p>A substring is considered <strong>balanced</strong> if every opening parenthesis <code>&#8216;(&#8217;</code> has a corresponding closing parenthesis <code>&#8216;)&#8217;</code> in the correct order.</p><p><strong>Constraints:</strong></p><ul><li><p><code>1 &lt;= len(s) &lt;= 10^5</code></p></li><li><p><code>s</code> contains only <code>&#8216;(&#8217;</code> and <code>&#8216;)&#8217;</code>.</p></li></ul><p></p><h3><strong>Solution</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9cQo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9cQo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 424w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 848w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9cQo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png" width="854" height="1220" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1220,&quot;width&quot;:854,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117844,&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;:&quot;https://f1.mlopsengineer.co.uk/i/177831982?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9cQo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 424w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 848w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.png 1272w, https://substackcdn.com/image/fetch/$s_!9cQo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbe0c826-4a1a-41da-9937-7bcf92141c46_854x1220.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><p></p><p></p><h3>Explanation:</h3><ul><li><p>Use a stack to track indices of <code>&#8216;(&#8217;</code> characters.</p></li><li><p>Push <code>-1</code> initially to handle edge cases.</p></li><li><p>Every time a <code>&#8216;)&#8217;</code> matches a <code>&#8216;(&#8217;</code>, compute the current valid substring length.</p></li><li><p>Update <code>max_len</code> with the longest length seen so far.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Embracing A.I in F1.]]></title><description><![CDATA[A dive into the growth of A.I and how this may impact F1]]></description><link>https://f1.mlopsengineer.co.uk/p/embracing-ai-in-f1</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/embracing-ai-in-f1</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Thu, 07 Aug 2025 17:40:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-Jg1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The emergence of A.I in conversational tools like X&#8217;s Groq, OpenAI&#8217;s ChatGPT and Google&#8217;s Gemini as sparked a growing awareness in the benefits and awareness of Artificial Intelligence. Whilst most of this breakthroughs are in natural language processing and video and image processing, its use is now largely embedded in people&#8217;s day-to-day life, from the devices they use to online services and virtual experiences. At least, it can now be said that the vast majority of the population either knows or makes use of A.I in some shape or form. </p><p>With the growing adoption of A.I, there has been an large number of startups, based solely on using A.I to provide some sort of better solution for specific use cases. A good number of these startups are focused on tackling issues like Fraud, as with the rise of A.I, new fraud and safety vulnerabilities have been introduced.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><blockquote><p>What does this mean for F1? If you were asked today what issue should first be addressed by A.I in F1, what will your answer be? </p></blockquote><p>For me, this has to be driver safety. </p><p>Though we have seen a significant decrease in lives lost on the track, it is necessary to ensure we are providing safer measures for drivers, especially on track. Should autonomous control be triggered to minimise driver risk and car damage incase of a collision? yes will be my answer. </p><p>Should we invest more in using A.I to find out early what risks are poised on track, given certain conditions? yes will be my answer.</p><p>Having to lose a driver is the worse thing to happen on track, also having to build a new car from scratch, ahead of a race in a couple of weeks, due to a collision that could have been prevented is not the best thing either. </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_!-Jg1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Jg1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 424w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 848w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 1272w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Jg1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2073107,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://mlopsengineer.co.uk/i/170376059?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Jg1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 424w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 848w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 1272w, https://substackcdn.com/image/fetch/$s_!-Jg1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9077ac8f-aad7-40bc-810d-e4bbbd211d7e_4032x3024.heic 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">Haas&#8217;s Romain Grosjean&#8217;s car&#8217;s cockpit wreckage during the 2020 Bahrain Grand Prix Crash</figcaption></figure></div><p>Grosjean was trapped inside the burning cockpit for 27 to 28 seconds. He managed to free himself by withdrawing his left foot from his racing boot, which remained trapped, and then moving the dislodged headrest and steering wheel to egress the car. Despite the severity of the crash, Grosjean survived with only minor burns to his hands and a sprained ankle. Most thought he was dead on impact.</p><p>The incident was a pivotal moment for Formula 1 safety, leading to numerous recommendations for improvements in areas such as driver gloves, steering column mounting, rearview mirrors, and survival cell front geometry. A.I, using sensor, image and video data can most definitely be added to this extended tool box for driver safety in Formula 1.</p><p><strong>Coding exercise.</strong></p><p>Given an integer array `nums` which is sorted in ascending order and all of its elements are unique and given an integer k, return the kth missing number starting from the leftmost number of the array. </p><p></p><p><strong>Example</strong></p><p>Input: nums=[4,7,9,10] k = 1</p><p>Output: 5</p><p>Explanation: The first missing number is 5.</p><p></p><p><code>class Solution:</code></p><p><em>             def missingElement(self, nums, k) &#8594; int: </em></p><p><em>                          missing_count = 0</em></p><p><em>                          expected_num = nums[0]</em></p><p></p><p><em>                           for num in nums: </em></p><p><em>                                  while expected_num &lt; num:</em></p><p><em>                                           missing_count += 1 </em></p><p><em>                                           if missing_count == k:</em></p><p><em>                                                   return expected_num </em></p><p><em>                                           expected_num += 1 </em></p><p><em>                                 expected_num += 1 </em></p><p><em>                            return nums[-1] + k - missing_count</em></p><p>    </p><p> </p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Regulations, Innovation, and the McLaren MP4/1.]]></title><description><![CDATA[With F1 comes adaptability and innovation.]]></description><link>https://f1.mlopsengineer.co.uk/p/regulations-innovation-and-the-mclaren</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/regulations-innovation-and-the-mclaren</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sat, 18 Jan 2025 20:31:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KD-b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With F1 comes adaptability and innovation. You have a new set of regulations, especially on the design of the car, every now and then. The teams that can design within these confinements, whilst increasing in speed and performance, emerge victors. One F1 automobile that showcases the beauty of doing this right is the McLaren MP4/1.</p><p>Have you ever heard of cabon fibre? oh yes you have! McLaren made the MP4/1 in 1981, with a chasis made of carbon fibre. They pionerred its use on the track. Whilst everyone was making use of Alumunium, McLaren opted for a stronger, lighter and stiffer material. They did this without violating any regulations, and ended up winning a Grand Prix that year, for the first time in 4 years. Everyone on track adopted its use afterwards.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><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_!KD-b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KD-b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KD-b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:885576,&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_!KD-b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KD-b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21630f4-26c8-460d-bd52-4bf49d2b9478_1536x2048.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">Mclaren MP4/14 Front Wing</figcaption></figure></div><p>Ron Dennis alongside Adrian Newey continued to develop this car and McLaren have won 189 Grand Prix, 9 Constructors Championships and 12 Drivers&#8217; world championships since 1981. Just like the engineering bits of the car, the tech has also largely improved. </p><p>During your career as an Engineer, you will be faced with rules and regulations that may seem impossible. Instead of seeing the drawbacks, try to imagine what competitive edge can be birth within its confinement. There is always a way out; or if you wish, &#8220;a way INside&#8221; the regulations. Afterall, where is the fun where there are no regulations, it becomes chaotic and the team with the most money in the case of F1, wins year after year. </p><p>Embrace regulations, embreace change, learn to adapt, and make the impossible possible!</p><p><strong>Programming Exercise</strong></p><p>Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization format is.</p><p><strong>Solution</strong>:</p><p>Imagine a binary tree as a real tree upside down. To serialize and deserialize a binary tree, we can use a dept-first search (DFS) approach. We traverse the tree in a pre-order manner during serialization and reconstruct the tree during deserialization.</p><p>For serialization: </p><p>We perform a pre-order traversal of the binary tree. At each node, we append its value to the serialized string. If the node is a leaf node (both left and right children are None), we append a marker to indicate that.</p><p>For deserialization:</p><p>We split the serialized string into a list of values. We recursively build the ree by consuming values from the list. At each step, if the value is a marker, we return None to indicate a leaf node. Otherwise, we create a new TreeNode with the current value and recursively call the function to build its left and right subtrees. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tYPE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tYPE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 424w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 848w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 1272w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tYPE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png" width="1172" height="1336" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1336,&quot;width&quot;:1172,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195262,&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_!tYPE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 424w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 848w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.png 1272w, https://substackcdn.com/image/fetch/$s_!tYPE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1b7b466-0778-48ed-80e7-45e3fb980664_1172x1336.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">Solution for programming exercise</figcaption></figure></div><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Maserati Charts 🏁]]></title><description><![CDATA[A time series chart making use of Grafana, a useful dashboarding tool for MLOps Engineers.]]></description><link>https://f1.mlopsengineer.co.uk/p/maserati-charts</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/maserati-charts</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Fri, 13 Dec 2024 22:25:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M6Tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two years ago I extraced some raw data from a wikipedia link using google sheets, which contained the displacement and power output for a range of Mesarati automomobile models, manufactured from 1946 till 2022. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M6Tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M6Tu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 424w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 848w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 1272w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M6Tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png" width="590" height="316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6589438-39bf-43b6-a470-6873cf10d87e_590x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:590,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:404749,&quot;alt&quot;:&quot;&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="" title="" srcset="https://substackcdn.com/image/fetch/$s_!M6Tu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 424w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 848w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.png 1272w, https://substackcdn.com/image/fetch/$s_!M6Tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6589438-39bf-43b6-a470-6873cf10d87e_590x316.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">Maserati 250F - Wikipedia.</figcaption></figure></div><p>In the past, Maserati competed in F1 as &#8220;Officine Alfieri Maserati&#8221;, they retired in the 1950s due to financial issues but may still return to the Sport. The data used here is that of their sporty commercial automobiles</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I prepared the data for visualisation by seperating metrics from values leveraging the &#8220;split-to-columns&#8221; option from the data tab on googlesheets. The displacement is in cubic metres and power is given in brake horse power (bhp). The values are formatted as numbers and then downloaded to a root repo.</p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4029a3a6-831f-439a-bc6b-cc54babfbc67&quot;,&quot;duration&quot;:null}"></div><p>By looking closely, some things can be observed from the video above. You may have to pause it periodically to observe better. The first dashboard that comes up shows the power of each car, in yellow, and its corresponding displacement in green. The Maserati MC20 Cielo, MC12 and the Grecale Trofeo stands out with the highest power output with 621bhp. An upward trend in power exerted is seen over the years. The displacement on the other hand is sometimes random and somtimes consistent. It could be seen that the team at Maserati were able to increase power ouput numerous times whilst keeping the size of the engine constant or even smaller. This must have also helped in minimizing the overall car size making it quicker</p><blockquote><p>It is a paramount to observe trends as an engineer, hence the data is simply wasted.</p></blockquote><p>Displacement is habitually used as an expression of an engine&#8217;s size, and by extension, a loose indicator of the power an engine is capable of producing as well as the volume of fuel it is expected to consume. The brake horse power on the other hand indicates the useable power after taking account losses due to friction and other factors.</p><blockquote><p>Displacement might not necessarily determine total power output</p></blockquote><p>To get started on a similar project:</p><ul><li><p>Install grafana (&#8220;brew install grafana&#8221; for macs)'.</p></li><li><p>Start the service (&#8220;brew services start grafana&#8221;).</p></li><li><p>Install Sqlalchemy to create an engine to upload the data to PostgreSql using a script (python in my case).</p></li><li><p>Select a new data source on Grafana, select PostgreSql, then input the name of the database, usernane and password.</p></li><li><p>On the Grafana dashboard, adjust the time and date range on the top right corner to the range within the dataset.</p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Core]]></title><description><![CDATA[So you want to become an MLOps Engineer?]]></description><link>https://f1.mlopsengineer.co.uk/p/the-core</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/the-core</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Tue, 17 Sep 2024 19:56:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bte3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The current MLOps Engineers come from diverse domains. Some were formerly Data Engineers, I mean most actually; some were Data Scientists, Cloud Engineers and even Software Engineers. What does it take to be an MLOps engineer? If you ask this questions, you will get different answers almost all the time. Why is that you ask, it is plainly because MLOps can easily lean to any one side (cloud engineering, data engineering or software engineering) as long as what you are doing enables the smooth running of a machine learning pipeline in production. To make it even more variable, companies have different expectations of an MLOps Engineer (some frankly absurd especially for &#8216;juniors&#8217;). At the end of the day, it balls down to personal strengths and interests. What exactly is it you want to major on as an MLOps Engineer? You should ask that question before starting this career path. The answer will give you a way in and enable you to later branch out into other aspects of MLOps. Ideally there is no such thing as a &#8220;Junior MLOPs engineer&#8221; because from day one you are expected to understand, own and manage a broad range of things. In the same way, there is no such thing as a &#8220;Full Stack MLOPs engineer&#8221;, because the role itself is full stack. </p><p>Also I like to disband the notion of the MLOPs being new, I think we should all get mature now, and make the expectations and standards about the practice fairly straightforward. Without rambling further, lets go straight to it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>Software Engineering &amp; Programming - One</strong></p><p>This is one thing that most practicitioners lack, it is no shock that most &#8220;Data Scientists&#8221; , &#8220;ML engineers&#8221;, and anyone simply in the development of machine learning models, come largely from the research space. Most have backgrounds in science and analytical subjects like Physics and Mathematics. They probably began their ML career using tools like <strong>R</strong>, <strong>MATLAB</strong>,  some got to use basic Python too. I myself have a Physics background and began my career as a Data Scientist for a Clinical Data Management company, managing clinical trial studies.</p><p>I am trying to point out that, whilst these group of poeple are great at building models, they often do not have traditional software engineering experience. And ideally this is a gap you are brought in to fill</p><p>Whilst it is nice to be able to build the fancy LLMs and Chat bots and all else that is the rave at the moment, having a proper understanding and maturing in the use of software engineering concepts is critical.</p><p>First things first, pick a languauge, dive deep into it, it could be JAVA, python, RUST etc. Understand the priniciples that guide the design of software using that language. Understand error handling, know how to write clean code, understand concurrency early, how to make your code faster, how to debug and test for bugs early. Do some leetcode questions, undertstand recursion, iteration, and their tradeoffs. This often forms the basis of a strong MLOps engineer.  </p><p>Now go further to undertanding design patterns employed in the use of the language, what to look out for and what to leverage on.</p><blockquote><p>It is largely about gaining the understanding of a &#8216;software&#8217; in its raw form without any of the fancy model add-ons.</p></blockquote><p>Hey &#128064;, also understand git and version control; <a href="http://github.com">github</a> is a good place to start.</p><p><strong>Cloud Engineering - Two</strong></p><p>After you have gained a good command of software engineering, specialising in a language of choice, do not be surprised that the second most important step is gaining a strong understanding of a <strong>cloud platform</strong>. Most companies now leverage the cloud for their workflows and largely host their services on there. No company is going to ask you to set up and run their K8s cluster or ML model on your local machine (yes even if it is an M3 &#129319;). Pick a cloud service, GCP, Azure or AWS. I would not specifically recommend any yet; they all provide transferrable skills. Now most cloud platforms have SDKs and CDKs. An SDK helps you build software that can interact with services on the cloud (like S3 using boto3 for AWS) whilst a CDK helps to orchestrate the cloud services largely using the &#8220;cloud&#8217;s langauge&#8221;, think of it like buiding lego bricks with the available cloud services. Since you already have a good understanding of programming and software engineering, it will be easy for you to understand these kits (SDks and CDKs) and effectively use them to build services on the cloud. Sometimes there is not sufficient documentation for what you are trying to build and you will have to make use of your own intuition. If you understand how software works, this will be easy for you. </p><p>Moreso, you should know your way around the console, how to manage services, where things are, accessing logs, recovering files and so on. I began my cloud journey with AWS, did not do too much with it at the time, went on to learn Azure on my own whilst working at a startup and eventually got back to AWS in my current place of work. It was easy for me to get accustomed to AWS since I had a good understanding of a cloud service.</p><p><strong>System Design and Communcation - Three</strong></p><p>I will keep this short and sweet. Can you design a scalable diagram, a pictorial representation of a solution or workflow you propose to implement? If not you need to learn that quickly, this also ties in with communication. You ability to desgin and explain things using the right tools and with visual aids can make you stand out quickly. You need to understand design patterns, mircroservices and possible tradeoffs, and being able to explain why a solution is more suited than another. <a href="https://excalidraw.com/">Excalidraw</a> is one useful tool to leverage for visual aids.</p><p><strong>Containerisation &amp; Infrastructure-as-Code - Four</strong></p><p>The last thing I will recommend for anyone trying to get on the MLOps path is getting an understanding or how containerised applications work, why they are useful and how to manage them. You can simply go on the <a href="https://www.docker.com/resources/trainings/">docker</a> website and get some training on building images and deploying them as containers. That will serve you when it is time to use more complex tools like kubernetes to manage large clusters of containerised applications. </p><p>IaC or Infrastructure-as-code as it is commonly called is useful in enabling you track your infrastructure built on the cloud. Tools like <a href="https://www.jenkins.io/">Jenkins</a> and <a href="https://www.terraform.io/">Terraform</a> are good places to start. Try to spin up a couple services on the cloud using either of those, then build up from there. If you understand how git and version control works, the idea behind this should be easy to grasp. You want to ensure that you can track the state of &#8220;your Cloud&#8221;, and ensure it is consistent with what is expected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bte3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bte3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bte3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bte3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bte3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bte3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg" width="1456" height="1820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!bte3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bte3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bte3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bte3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d485dec-b8d3-4c9f-9f25-e3dd5318377a_3277x4096.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">source - @McLarenF1 on X</figcaption></figure></div><p>I once asked one of my MLOps mentors how he was able to do so much stuff, and frankly his response was simply &#8220;doing so much stuff&#8221;. So I recommend you keep building stuff and with time you will naturally get better at eventually every area you aim and need to operate at. </p><p><strong>Most importantly</strong>, yes most importantly, please, do not spin up resoures and leave them running whilst not in use, &#128064;!</p><p>Let me know your thoughts in the comment section below.</p><p>Thank You!</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Optimising Data Assets in F1 Racing]]></title><description><![CDATA[Abiding by the regulations and optimising data use in F1.]]></description><link>https://f1.mlopsengineer.co.uk/p/optimising-data-assets-in-f1-racing</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/optimising-data-assets-in-f1-racing</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Mon, 19 Aug 2024 18:49:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jes5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>During the F1 season, races occur week after week; petabytes of data from each car is logged every week. The amount of data involved can be compared to what is used in space travel operations, except that there is new data every other week. More frequent out of time (OOT)  experiments and simulations required to monitor and maintain optimum performance on the track. You are likely familiar with the concept and benefits of data warehouses that became popular in the late 90s/early 2000s and data lakes that became popular in the past decade. Both have helped simplify access and use of big datasets which is largely present in formula 1 racing. The vast data generated each season is securely archived and forms a valuable asset that can be used for future analysis.</p><p>A large chunk of the data is telemetry and a number of F1 teams use a bespoke software,  <a href="https://mclarenapplied.com/products/atlas-advanced-telemetry-linked-acquisition-system">Atlas</a> (Advanced Telemetry Acquisition System), built by <a href="https://mclarenapplied.com/">McLaren Applied</a>, to analyse their telemetry. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>There are Telemetry regulations outlined by the FIA such as the prohibition of team to car telemetry. This means teams are not allowed to transmit data from the pit walls to the car except for <a href="https://www.sciencedirect.com/topics/computer-science/handshake-packet">handshaking</a> from the car to the team telemetry system and the &#8220;<strong>FIA Marshalling System</strong>&#8221;, a communication system primarily designed to enhance race safety by providing real-time information to drivers and race control, making sure the drivers are aware of track conditions, incidents, and other safety information as quickly as possible.</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_!jes5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jes5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jes5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jes5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jes5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jes5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg" width="394" height="492.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:394,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!jes5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jes5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jes5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jes5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe10d3874-aa36-4f67-a963-aa32733b541f_1638x2048.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></figure></div><p>Even the Electronic Control Units (ECUs) are standardized and every team is mandated to use the the same ECU supplier (Mclaren applied), ensuring the core software and data format logged by each team is similar and can readily be anylsed and compared by the FIA on request.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XrGE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XrGE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XrGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg" width="184" height="147.2" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:800,&quot;resizeWidth&quot;:184,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Arjun Kaushal on LinkedIn: #mclaren #f1 #f1racing #technology #ecu  #innovation #cpu&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&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="Arjun Kaushal on LinkedIn: #mclaren #f1 #f1racing #technology #ecu  #innovation #cpu" title="Arjun Kaushal on LinkedIn: #mclaren #f1 #f1racing #technology #ecu  #innovation #cpu" srcset="https://substackcdn.com/image/fetch/$s_!XrGE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XrGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96130820-f970-4100-a8c9-2bc086ad6f3c_800x640.jpeg 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">McLaren ECU sample</figcaption></figure></div><p>Historical data and real time data inputs from these ECUs are combined to provide a clear sense of performance and point out any anomalies.</p><p>Effectively, any new findings by simulations ran on the pit wall cannot be transmitted to the car. In that case, drivers only get to see useful findings after a race has been completed. There is no explicit prohibtion of car to driver telemetry as of yet so this can laregly be leveraged to improve driver support. Andrew Newey continually improves his designs within regulation constriants ensuring cars he designed performed optimally. </p><blockquote><p>Formula 1 is the ultimate test of technological excellence and driver skill - <em>Mclaren Applied</em></p></blockquote><p>The same can be done with data assets and largely technology, Analytics from real time data on the car and driver performance could be fitted on the stirring wheel for each driver displaying the most relevant trend(s) to keep the driver informed on their performance and areas for improvement. It is the driver&#8217;s call to make a decision based off what is visible to them. However, note that this could and should be carefully implemented in a way not to distract the drivers but serve as a useful tool to the driver on track, whilst abiding by the rules and regulations. </p><p>I will state this as clear as possible:</p><blockquote><p>Data is largely useless if only seen after when needed.</p></blockquote><p>The whole point of gathering large data sets, performing rigorous analytics and simulations is to ensure they can provide some competitive edge. What use is the data then if it is only provided to those who can maximise its use only after they have completed a race. </p><p>In truth there is little use, but much less than is possible given the rules of the sport.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Building Resilience 🏁]]></title><description><![CDATA[Building resilient data pipelines in F1.]]></description><link>https://f1.mlopsengineer.co.uk/p/building-resilience</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/building-resilience</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Fri, 02 Aug 2024 16:11:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YPbP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When we think F1, we think &#8220;high stakes&#8221; and &#8220;fast paced&#8221;. To win races, feedback from the drivers who make use of the engineering has to be considered. For common tech products, it could take a couple weeks even months to get clear feedback on the piece of technology and what needs to be changed. In F1, this can take from a couple hours to a couple days. The results of choices made in the design, tech and engineering involved in the car make-up is quickly observed. Hence, things have to change fast. We say MLOps mostly differs from DevOps in that models change very quickly, well ML operations within F1 changes much quicker than most sectors.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YPbP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YPbP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YPbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg" width="568" height="372.55494505494505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:955,&quot;width&quot;:1456,&quot;resizeWidth&quot;:568,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!YPbP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YPbP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7431b23-2455-4764-a11a-e6913c5e6100_3200x2100.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">Visa Cash App RB F1 team car 2024</figcaption></figure></div><p>We are talking multiple simulations and modelling for each race track and race driver to ensure they have the best car to be competitive. How then can you build for scale and resilience in this fast paced environment?</p><p>Technological Systems can break down at any point, sensors could suddenly develop a fault disrupting real-time data streaming, and there could be major outages from tech providers just like the recent <a href="https://news.sky.com/story/crowdstrike-sued-over-global-it-outage-13188482#:~:text=It%20comes%20after%20a%20software,%2C%20banks%2C%20hospitals%20and%20broadcasters.">crowdstrike incident</a>. There is largely no room for error in the F1 sport as already indicated. Every data point counts and systems need to be up and running therefore situations like this must be thoroughly addressed.</p><ul><li><p>One obvious way to ensure resilience is having enough backup to ensure quick restoration.  Whilst this may be costly, it affords a high level of assurance that systems will be running and performant. For example, it is useful to have two Cloud providers/platforms. Load balancing, self healing and restoration with tools like kubernetes and cloud platforms like AWS are already commonly employed. However, what happens if the cloud platform experiences an outage, then real panic sets in. You can have pre-designed replicas of existing infrastructure on multiple cloud platforms, only that one is kept running per time to reduce cost.</p><p></p><p>I once worked as a technician for a fibre optic company managing fibre cables for a well known mobile network provider. Each time there was a failure, we would have to restore the faulty cable cores within what is called a &#8220;mean time to restoration&#8221; (MTTR), which was often pre-agreed by the stakeholders involved. These cables were sometimes on bridges with a lot of traffic, in the woods sometimes (forest areas and the likes) and even through small water bodies. I and the team always had to do whatever it took to restore connectivity during the MTTR. One thing however that helped us achieve this was we always had several inches of fibre optic cables as back up for replacement. We also had  good rapport with other fibre techies managing other provider cables, so we could often burrow some of their cores or cables temporarily to ensure connectivity as quick as possible. </p></li></ul><ul><li><p>Another way to ensure resilience is have an optimal default configuration for each track. Questions to create this could include: </p><p>What times ideally do the tyres get bad on this track?, </p><p>What parts of the track required more power? and so on. </p><p>It is not very easy to get this right, especially during the first try, but eventually, a team can create templates that are able to provide a good enough performance of the car even if all their real-time data systems were down. That way the drivers do not panic when unforeseen outages occur, and can remain focused on racing. Events like this could arise at any point within the start of the race and the end. It is the responsibility of the engineers managing these systems to ensure they help their drivers remain confident and have the best configuration possible at any point in time.</p><p></p></li></ul><p></p>]]></content:encoded></item><item><title><![CDATA[Feature Store Design Pattern]]></title><description><![CDATA[Write-up on the benefit of the feature store design pattern, an approach MLOps Engineers should be familiar with.]]></description><link>https://f1.mlopsengineer.co.uk/p/feature-store-design-pattern</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/feature-store-design-pattern</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Tue, 28 May 2024 06:50:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NTGH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When building solutions for machine learning problems, the design pattern is a crucial aspect to be determined. Just like building a house, you need to be sure what architecture(s) is most practical, based on its intended use. The feature store is one of several design patterns you would consider when building the framework for a machine learning solution. </p><blockquote><p>A feature store is a version-controlled repository for feature datasets that decouples feature engineering from feature usage.</p></blockquote><p>If you were working within a small organisation running one or two pipelines, a feature store design is likely not necessary. However, in larger organisations, where there are multiple teams using the same datasets for different use cases e.g:</p><ul><li><p>A pipeline that determines how long a tyre should last on track.</p></li><li><p>Another pipeline that determines the cost of tyres for a season.</p></li></ul><p>Both use cases require the tyre type feature, though they could be used somewhat differently. To save time on pipeline development, you want teams to have a central location where they can pick transformed features they need instead of writing the same transformation function independently. You do not only save time by using a feature store, you also ensure consistency and reusability. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NTGH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NTGH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 424w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 848w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 1272w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NTGH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png" width="428" height="545.4459102902375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:966,&quot;width&quot;:758,&quot;resizeWidth&quot;:428,&quot;bytes&quot;:771396,&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_!NTGH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 424w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 848w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.png 1272w, https://substackcdn.com/image/fetch/$s_!NTGH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba7f6352-f795-4b2c-87a1-a0fdf6aacf17_758x966.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">Remnants of Verstappen's tyres following the brake issues that caused one of his retirements - Source: Formula1</figcaption></figure></div><p>It is also important that the form of input features used to train your model is the same as what is is being used when serving the model. If &#8216;soft tyres&#8217; was encoded as [0,1,0],  you want it as so when making a prediction, and not &#8216;soft tyres`. Hence, using a feature store helps to ensure the transformations required for training and serving data identical, tracked and stored in one location. This is incredible useful in several machine learning use cases.</p><p><strong>Programming Section</strong></p><p><strong>T</strong>o give you a more rounded knowledge as an MLOps Engineer, I will be adding python leetcode questions and their solutions. This is aimed at upskilling your python skills and understanding of algorithms and data structures.</p><p>In this <a href="https://leetcode.com/problems/find-peak-element/description/">question</a>, you are asked to find a &#8216;Peak Element` which is simply one that is greater than its neighbours.</p><blockquote><p>Given a 0-indexed integer array &#8216;nums`, find a peak element and return its index. If the array contains multiple peaks, return the index to any of the peaks. </p></blockquote><p><strong>Solution</strong>:</p><pre><code>from typing import List

class Solution:
   def findPeakElement(self, nums:List[int]):
       left, right = 0, len(nums) - 1
       
       while left &lt; right:
           mid = left + (right - left) // 2

           if nums[mid] &gt; nums[mid + 1]:
              right = mid
           else:
              left = mid + 1

       return left
</code></pre><h3>Explanation</h3><p>This solution uses a `binary search algorithm` that runs in O(log n) time where n is the number of elements in the array.</p><p>When trying to type, imagine doing so with just one hand, now compare that to doing the same with both hands. This is essentially the concept of the `binary search algorithm`. You are carrying out a task with two hands instead of one, hence instead of taking `n` time to find whichever element being looked for, it only takes O(log n) time at most.</p><p>The code initializes two pointers, left and right, representing the start and end indices of the array. We set a condition saying while `left` is less than `right`, some operation should be performed. This condition is set like so since within the operation we will always bring either the left pointer forward or the right pointer backward. When both meet, then we would stop the operation to avoid looking at indices that have been compared. </p><p>Within the `while` operation, we calculate the middle index and effectively reduce the search space by half in each iteration by checking if the element in that index is greater than whats to the right of it. In the case that it is, we will want to look at what is to the left of it and determine if that is not the case. So the function will  keep moving left or right till it reaches a point where both pointers are equal; at that point the condition is met and you can either return the &#8216;left&#8217; or &#8216;right&#8217; pointer.</p><div class="pullquote"><p>If the mid element is greater than what is next to the right of it, we will keep checking the left partition.</p></div><p></p><div class="pullquote"><p>In the same way, if the mid element was less than whats next to the right of it, then we will keep checking the right partition.</p></div><p>I hope you have learnt a thing a two here. Feel free to leave comments or ask questions below, have a good week!</p>]]></content:encoded></item><item><title><![CDATA[Asynchronous Data Loading - 🏁]]></title><description><![CDATA[As we have learnt in software engineering, optimizing time complexity is vital.]]></description><link>https://f1.mlopsengineer.co.uk/p/asynchronous-data-loading</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/asynchronous-data-loading</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Mon, 27 May 2024 06:31:11 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BFWJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we have learnt in software engineering, optimizing time complexity is vital. More so, managing resources is just as vital. As an MLOps engineer, serving Data Scientists who are utilising multiple data sources; A challenge could be how to pull this data from these disparate sources efficiently.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BFWJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BFWJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BFWJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg" width="548" height="308.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:576,&quot;width&quot;:1024,&quot;resizeWidth&quot;:548,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!BFWJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BFWJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F289fcdf1-ba60-4c71-b65e-f2d067c6f263_1024x576.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></figure></div><p>For instance, a Data Scientist you support is tasked with buidling a machine learning pipeline that uses data sets from different sources. Lets assume:</p><ul><li><p>One of these datasets is from 2021, and the data was stored in-house, in a postgresSQL database (and it has not been migrated since then).</p></li><li><p>One of the datasets, is from 2022, owned by the FIA, and is stored on Azure (Microsoft Cloud Service).</p></li><li><p>Another dataset, from 2023, is owned by their organisation and stored on AWS (Amazon Web Services).</p></li><li><p>A fourth dataset is being streamed from sensors on George Russell&#8217;s car, and is hosted on Cassandra. </p></li><li><p>A fifth dataset is being streamed from Lewis&#8217;s race car, and is hosted on Cassandra.</p></li></ul><p>Loading data from each of these sources is likley to take significant amount of time and some datasets will arrive faster than others. Assuming this pipeline is running a GPU instance that is charged per second of processing time, what could you do to optimize the use of this resource? Running asynchronouse functions is one way to makes sure of this.</p><blockquote><p>Asynchronous simply means not occuring at the same time</p></blockquote><p>While loading the data, you may want to run a pre-processing function in the background for each data stream as it is being received. That way, the program would not have to wait for all of the data to have been loaded, before commencing pre-procesing. Hence, the data would not be pre-processed at the same 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_!6Ydd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Ydd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 424w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 848w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 1272w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Ydd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png" width="696" height="568.3534136546185" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:747,&quot;resizeWidth&quot;:696,&quot;bytes&quot;:119952,&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_!6Ydd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 424w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 848w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.png 1272w, https://substackcdn.com/image/fetch/$s_!6Ydd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa316f561-902e-40f5-9e0c-4a860f6b70bc_747x610.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 code snippet above simulates the diverse cloud database endpoints mentioned earlier. The `fetch_data_from_cloud_db`function  simulates fetching new data every 1 to 3 seconds. Then the `process_data` function processes the data from the queue in the background. It does this at random intervals between 0.1 to 0.5 seconds. It keeps running till the the `stop_event` is set and the queue is empty.</p><p>Finally, the main application sets up the queue, the stop event and creates the data fetching tasks. It simulates running the main application for 20 seconds. Once the application is done running, it then sets the stop_event, signalling the data processing task to stop. It cancels the fetch tasks and waits till all data in queue is fully processed before stopping the data processing task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y8f1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y8f1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 424w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 848w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 1272w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y8f1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png" width="629" height="367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:629,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57978,&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_!y8f1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 424w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 848w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.png 1272w, https://substackcdn.com/image/fetch/$s_!y8f1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4d5deb1-bbcf-41e7-8201-9fe6384d3692_629x367.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><p>This method of handling tasks is also useful with micoservices that call serverless endpoints. During cold starts and request processing, you can set up your application to perform other tasks asynchronously, maximizing time and resource.</p><p>I hope you have learnt a thing or two here. If so, please like and share; I will also be happy to answer any questions directly or in the comment section. You can find the source code for the snippets <a href="https://github.com/mlopsengr/asynchronous_data_loading">here</a>. You can adapt it for specific use cases.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Managing Memory - 🏎️]]></title><description><![CDATA[When building applications, some performance measures you should be concerned with, especially when getting your application production ready, are speed and memory.]]></description><link>https://f1.mlopsengineer.co.uk/p/managing-memory</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/managing-memory</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Fri, 24 May 2024 07:00:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Dg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When building applications, some performance measures you should be concerned with, especially when getting your application production ready, are speed and memory. This is popularly referred to as time and space in programming. In this post, a cool module that can be used to track memory usage and eventually debug memory leaks, bottlenecks, data structures that could be changed or optimized and therfore manage memory resources efficiently in python is demonstrated.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Dg2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Dg2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Dg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg" width="376" height="259.532967032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1005,&quot;width&quot;:1456,&quot;resizeWidth&quot;:376,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&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="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!5Dg2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Dg2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64b52611-a040-472e-b4d5-9867b07b0c74_3600x2484.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></figure></div><p>We will talk about the tracemalloc module and monitoring tools like  Grafana, AWS CloudWatch.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1NNO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1NNO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 424w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 848w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 1272w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1NNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png" width="1456" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:287508,&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_!1NNO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 424w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 848w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.png 1272w, https://substackcdn.com/image/fetch/$s_!1NNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F216ca779-c285-4d93-8fbb-b12b7e4bdaa4_1464x652.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 code above simply loads an excel sheet into a pandas dataframe using the Pandas and Openpyxl libraries. It takes a snapshot of the memory before and after the dataframe load and logs out the top ten memory usage stats. The topmost stat from the logs is shown here:</p><pre><code><code>INFO /Users/&#8230;/.venv/lib/python3.12/site-packages/pandas/io/excel/_openpyxl.py:61 memory_trace.py:21
6:</code><strong> size=3045 KiB (+3045 KiB), count=19987 (+19987), average=156 B </strong><code>::</code>                     </code></pre><p>We see that the Openpyxl library currently makes use of the most memory (3045 Kilobytes), which is quite insignificant in the large scheme of things. However this can still be optimised. In a large code base, there is likely to be a process taking much greater memory.</p><p><a href="https://docs.python.org/3/library/tracemalloc.html">Tracemalloc</a> is a python module that helps to traceback where an object was allocated, get statistics on allocated memory blocks and compute the differences between snapshots to obtain memory use and detect memory leaks.</p><p>To track memory usage of applications in production, you can make use of tools like:</p><ul><li><p> <strong>AWS CloudWatch: </strong> For applications hosted on AWS, CloudWatch can be used to monitor momory usage and set up alarms for thresholds.</p></li><li><p><strong>Prometheus and Grafana: </strong>These tools used together can help pull and visualisze memory usage metrics over time.</p></li></ul><p><strong>Best Practices to Follow</strong></p><p>For adhoc cases, you can run the &#8220;top&#8221; command on your terminal to see how much a running python program or any process is taking. If the memory keeps increasing, there is likely a memory leak somewhere. Best practices for managing memory usage includes:</p><ul><li><p><strong>Code Reviews and Static Analysi</strong>s: Perform regular code reviews using static analysis tools to identify memory management issues early.</p></li><li><p><strong>Garbage Collection Tuning</strong>: Configuring and tuning the garbage collector can help manage memory more efficiently.</p></li><li><p><strong>Testing:</strong> Implementing stress tests and load tests can help identify memory issues under high load conditions.</p></li></ul><p>The aim is to bring to your consciousness these concepts and related tools, so you can refer to them later during your programming journey, prevent memory leaks and optimize memory usage in production.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Automation - The Principal thing.]]></title><description><![CDATA[Letter on the importance of automation in MLOps and its prevalence in formula 1 racing.]]></description><link>https://f1.mlopsengineer.co.uk/p/automation-the-principal-thing</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/automation-the-principal-thing</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sun, 07 Apr 2024 20:34:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Oamc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you consider the speed at which racing cars go, and the risk it poses, you eventually recognize the need for automation. Sharp bends, long straights, sudden collisions, and a wide range of unexpected events can happen in a split second. Hence, automation is embedded in critical aspects of a racing car, not only to improve efficiency but to minimize certain risks. Some automated parts of a race car include:</p><p>&#127919; - <strong>Dynamic Stability Control (DSC) System</strong> </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>These systems make use of sensors recording the steering wheel angle, acceleration, wheel speed and so on, to get a sense of the car&#8217;s stability and traction in real-time. They can automatically adjust the brake force or engine power to prevent skidding or spinning.</p><p>&#127919; - <strong>Transmission and Gearbox</strong></p><p>Formula 1 cars mainly use fully-automatic or semi-automatic gearboxes to enable them change gears rapidly taking instructions from the driver or a pre-programmed algorithm.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oamc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oamc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oamc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg" width="303" height="524.6753246753246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:693,&quot;resizeWidth&quot;:303,&quot;bytes&quot;:82743,&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_!Oamc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Oamc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feaee5f39-b961-472c-a174-adc5c13a825c_693x1200.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></figure></div><p>&#127919; - <strong>Aerodynamic Control Systems</strong> </p><p>Active aerodynamic elements of the car like air ducts and adjustable wings can be controlled automatically using recordings of cornering forces, active speed and instructions from the driver themselves.</p><p>&#127919; - <strong>Brake-by-Wire (BBW)</strong></p><p>These electronically control the braking force distribution between the front and rear wheels to optimize braking performance and stability. This is automated and the driver by practice learns to hit the brakes only as much as need.</p><p>It may interest you that one of the main responsibilities of an MLOPs engineer is to automate things. Well why is this important? Are we just automating things for the sake of it? No, certainly not, especially when it does not bring real value. The key objective here is to reduce the amount of repetitive tasks and make things ultimately faster. As an MLOPs engineer you should think, would this script make this project faster? by how much? will this meet the service level objectives? Can I reduce the time it takes for this job to run by loading data a certain way? Can I make a CLI tool that makes creating a new project easier for Data Scientists? </p><p>Having these questions at the back of your mind will enable you figure areas that can be improved just by automating things. This mindset will help you go a long way as an MLOps Engineer and can be easily transferred to building intelligent systems in formula 1 cars. </p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Sustainability at the Edge]]></title><description><![CDATA[A look into racing teams developing and building their cars and systems around sustainability and cost restraints.]]></description><link>https://f1.mlopsengineer.co.uk/p/sustainability-at-the-edge</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/sustainability-at-the-edge</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Thu, 18 Jan 2024 21:38:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u1l8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg" 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_!u1l8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u1l8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u1l8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg" width="642" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:642,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48677,&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_!u1l8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u1l8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d1e7b22-a310-42c8-a22e-9352be9a9345_642x531.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></figure></div><p><strong>F1 Section</strong></p><p>When you think about sustainability what comes to mind? Carbon emissions?, recyclable materials, less waste, profitability? All of these are correct but how do they translate to F1? Some of these will be discussed here alongside how cost caps has contributed to it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>Flights</strong>!, lots of flights comes as a consequence of competing in different countries and these cost not just money but produces more carbon footprint. The <strong>Cost Cap </strong>introduced to F1 has well as <strong>ESG</strong> (<em>Environment Social Government) </em>scoring has pushed teams to aim at reducing the number of flights by transporting less dispensable workforce per race and finding environmentally friendly transport modes/fuels for their equipment (Cloud computing parts and Car parts).</p><p>Teams also do not have the luxury of building multiple car parts just to end up using one. The budget cap makes it such that teams will rather focus on making one front wing that works for example. Every dollar counts. Whilst these might &#8220;limit their freedom&#8221;, it helps create focus and responsible spending which translates to business profitability. More teams are becoming profitable because of this.</p><p><strong>ML Section</strong></p><p>Using the most affordable green fuel, less flights, less dispensable personnel per flight, predicting number flights for the year all sound like regression tasks, minimising some objective function. To approach this problem, I will start with the budget allocated to logistics and how that number can be minimised. Some will aim to make the most of that number. Asides that, another way to approach this problem is to maximise the ESG score as a regression task or and the ESG rating as a classification problem using a cascade design pattern. </p><p>To avoid overcomplicating/overfitting the problem, utilising an ensemble design pattern like bagging will suffice. This simply works by training a series of <em>k </em>similar models on <em> k</em> separate datasets and further aggregating the outputs of the k models to determine the best outcome. Since each of the initial models will not make the same mistakes on the test dataset hypothetically, averaging their results helps to cancel out each models&#8217; specific errors. It is similar to having a board of directors who work together to suggest the best strategy only this time it is models. There is wisdom in the crowd. This helps to avoid overfitting the problem.</p><p><strong>Summary</strong></p><p>Budget caps help F1 teams become sustainable and therefore profitable.</p><p>Optimising team budget using a machine learning approach can be useful in helping teams become more sustainable and therefore more profitable.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Fuel Efficiency for Max Performance ]]></title><description><![CDATA[...not Verstappen.]]></description><link>https://f1.mlopsengineer.co.uk/p/fuel-efficiency-for-max-performance</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/fuel-efficiency-for-max-performance</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sat, 23 Dec 2023 07:09:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t5OH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2010, the FIA banned refuelling of cars during pitstops. Hence, a race car is expected to have sufficient fuel to last a full race. Factors to consider in fuel selection includes environmental impact, weight and efficiency. Although the fuels utilised by F1 teams are composed of the same base fuel chemistries, the racing fuel is highly fine-tuned and optimized for use in specific F1 cars just as you will fine-tune a machine learning model for a specific use-case. So the best fuel for a Williams engine might not necessarily be the best for a Haas Ferrari engine.</p><p>The energy content of a fuel depends on its mass density. </p><p><em> </em></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;Ev = E/ V\n\n&quot;,&quot;id&quot;:&quot;MTMHBFCRNL&quot;}" data-component-name="LatexBlockToDOM"></div><h6>Volumetric energy density typically measured in megajoules per liter (MJ/L) or Kilowatt-hours per liter (kWh/L). Where <em>E</em>v&#8203; is the volumetric energy density, <em>E</em> is the total energy content of the fuel, and <em>V</em> is the volume of the fuel.</h6><p></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\nEg = E/m\n&#8203;\n&quot;,&quot;id&quot;:&quot;LEZESTVATO&quot;}" data-component-name="LatexBlockToDOM"></div><h6>Gravimetric energy density typically measured in megajoules per kg (MJ/kg) or kilowatt-hours per kilogram (kWh/kg). Where <em>E</em>g&#8203; is the gravimetric energy density, <em>E</em> is the total energy content of the fuel, and <em>m</em> is the mass of the fuel.</h6><p>There are two types of fuel efficiency of a fuel mix: <strong>volumetric fuel efficiency and gravimetric fuel efficiency</strong>. The former, as the name implies measures the efficiency or energy density of a fuel as a measure of its volume whilst the later a measure in respect to its mass. Typically. the greater these values are , the more efficient a fuel is. You want sufficient fuel but as light as can be too. Remember in the last post how there it is iterated that there is no point optimising a car to only end up leading for a few laps, you need to win in the long run. </p><blockquote><p> Optimizing for power with excess compromise for fuel efficiency is of no use.</p></blockquote><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_!t5OH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t5OH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 424w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 848w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 1272w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t5OH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png" width="496" height="341.9522184300341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:808,&quot;width&quot;:1172,&quot;resizeWidth&quot;:496,&quot;bytes&quot;:1573503,&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_!t5OH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 424w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 848w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.png 1272w, https://substackcdn.com/image/fetch/$s_!t5OH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5732a59f-3992-4c5b-a7f6-96790f577e47_1172x808.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">Merceds AMG Petronas race car prototype. Credit: Mercedes AMG Petronas F1.</figcaption></figure></div><p>You do not want to have excess fuel carried around to the end of a race, also you want to have optimized power as well as sufficient fuel to complete the race. So engineers calculate the amount of fuel they need to complete a full race. It will interest you to know, that although each race circuit has a different distance, the number of laps are adjusted to make each race roughly the same length. This often falls around 308 Km. Hence this makes it just a little easier to make the required fuel calculations. In recent years, Formula1 teams have adopted an hybrid power unit system (electric and fuel); however lets assume a simplified scenario without considering hybrid systems:</p><pre><code>
def calculate_fuel_required(distance, fuel_efficiency, energy_content):

    fuel_liters = distance / fuel_efficiency

    energy_required = distance * energy_content

    return fuel_liters, energy_required

fuel_efficiency = 5 #&nbsp;Fuel efficiency in km/L
energy_content = 35 # Energy content of fuel in MJ/L
distance_to_cover = 308 # Distance to be covered in Km

fuel_liters, energy_required = calculate_fuel_required(distance_to_cover, fuel_efficiency, energy_content)

print(f"Fuel required: {fuel_liters:.2f} liters")
print(f"Energy required: {energy_required:.2f} megajoules")

</code></pre><p>You can run the above code block in a python environment and replace the values as you wish. However, that is a simplified calculation of the liters of fuel and energy required for a race car to complete a race of a specific distance. Other factors including race conditions and engine come to play in a real scenario and edge computing is used to calculate these values quickly by running multiple simulations. We will discuss more on edge computing and its importance later. </p><p><strong>Merry Christmas!</strong></p><h5>FIA - F&#233;d&#233;ration Internationale de l'Automobile <em>(French: International Automobile Foundation),km -Kilometers.</em></h5>]]></content:encoded></item><item><title><![CDATA[Team Work and Beating the Odds ]]></title><description><![CDATA[One core reason F1 means a lot to me and should to you, are the qualities it shows on the race track that also plays out in our lives.]]></description><link>https://f1.mlopsengineer.co.uk/p/team-work-and-beating-the-odds</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/team-work-and-beating-the-odds</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Thu, 21 Dec 2023 08:55:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xxMT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One core reason F1 means a lot to me and should to you, are the qualities it shows on the race track that also plays out in our lives. Resilience, team work, preparation, being efficient, ups and downs, conflict handling, and the list goes on. </p><p>Anyone who works in Formula 1 goes through a range of emotions each race year. So how easy is it to have the right state of mind to ensure proper team work, remain efficient whilst managing risks and conflicts. It takes loads of internal work to participate in this sport let alone remain competitive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xxMT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xxMT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 424w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 848w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 1272w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xxMT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic" width="302" height="368.0186046511628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1572,&quot;width&quot;:1290,&quot;resizeWidth&quot;:302,&quot;bytes&quot;:175149,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&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_!xxMT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 424w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 848w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 1272w, https://substackcdn.com/image/fetch/$s_!xxMT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606c0981-9d30-4bbf-a2b3-6d787d3c7085.heic 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></p><p>Pre-season, car designs are already being worked on. Design considerations cuts across reliability, safety and performance. What is the point in leading a couple laps only to end up gassing out towards the end and loosing places. Remember, it is a long game, the drivers train not only their driving skills, but their body, for increased endurance and focus. In a similar fashion, you want the cars to endure to the very end.</p><p>Light insight, I will go into more detail every post:</p><p>In Formula1, you have strict regulations just like every sport. Races are held in diverse locations, having diverse attributes and how that affects a team&#8217;s performance. Point to note:</p><blockquote><p>Whilst it is difficult to design for all possible factors you may face, you should design to beat the odds.</p></blockquote><p>You have got a bunch of regulations, a budget, specific drivers with different styles, and specific tracks to compete on. How do you bring these factors together to achieve your ultimate objective which often is to be on podiums.  How do you achieve this whilst having team work, reduced cost and safety. Now this becomes a <strong>multi-objective optimisation</strong> problem. F1 teams require in-house Data Scientists and Machine Learning engineers, not to plot fancy graphs and build fancy algorithms, but identify the niche area , that sweet point that makes them in particular, competitive. Whilst charts and algorithms will aid in achieving these multi-objectives, the  focus is often lost in the shadows, when engineers aim to prove who has the &#8220;best algorithm&#8221; or whatever that might mean. Team work is vital here, us not me,  multi-objective not one objective, leading in the long run, not leading for a few laps. Mercedes AMG Petronas did not achieve 8 consecutive wins by luck.</p><p>Once this mindset and character is adopted across board, more importantly by the AI engineers who will be emerging to solve these data related problems, an F1 team can create consistent success. Work with your team to beat the odds!</p>]]></content:encoded></item><item><title><![CDATA[The Art of War...scratch that; The Art of Fast War]]></title><description><![CDATA[As you might know, war in any sports, not just F1, is built outside of the activity; at least it starts there.]]></description><link>https://f1.mlopsengineer.co.uk/p/the-art-of-warscratch-that-the-art</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/the-art-of-warscratch-that-the-art</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Sat, 02 Dec 2023 20:52:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6zXE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>As you might know, war in any sports, not just F1, is built outside of the activity; at least it starts there. Why? you might ask? &#8220;so not to look like a bunch of wankers!" at least that is what <a href="https://en.wikipedia.org/wiki/Guenther_Steiner">Guenther</a> would say. But seriously, most of your time should be spent sharpening your swords, if you&#8217;ve got a war ahead. If not, well you end up loosing, and fast. Any wise competitor should know that.</p></blockquote><p>In a sport like F1,  each season, at least 20 races are held in different locations like Abu Dhabi in the middle east and now Las Vegas in the southwestern part of the U.S.A.  You might think oh well, all that needs worrying about is the state of the cars and the drivers welfare. Yes, those are vital, infact, indispensable to being competitive in a race. However, there are multiple moving parts here and there that if not properly taken care of, might mean failure. A simple example is: If a competitor, lets say Ferrari, happen to have a better supply chain management and damage control, than a competitor, that alone can mean their cars arrive on time, they get enough time to test, and get sufficient time to fix anything that needs fixing. If the competitor fails in doing all of those, they are already a foot behind, especially when competing in a different climate from the preceding race. These things tend to happen often. So how do you fight this? you have to have the right guys everywhere! Nothing can be delayed, nothing should arrive earlier than needed or later. Now you have the to hire the right people on time, or a competitor grabs them; yes, do not think only drivers get scouted.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6zXE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6zXE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6zXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg" width="354" height="451.5466666666667" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1148,&quot;width&quot;:900,&quot;resizeWidth&quot;:354,&quot;bytes&quot;:135482,&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_!6zXE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6zXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd594f41-066e-4632-a49b-02520ac14155_900x1148.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></figure></div><p>Another example, at the racing event this time, is when there is a penalty called against a team whose team principal believes was unjustified or gave an unfair advantage to a competitor or both. One of the FIA rules demands you go make your case to the authorities within 30 minutes of the race being over. Now if some staff from any side, gives you some assurance that it is okay to make your case within 45 minutes; for whatever reason; you might still get heard. And maybe the verdict goes in your favor. But be rest assured that the competitor(s) who gets impacted by that verdict will get wind of that seemingly harmless violation and they will definitely use that to get the verdict annulled. Do things within the specified time, simple. Things like this happen every season, if a team does not compete or war wisely, that might mean loosing a podium and likely a couple million bucks! no team wants that, especially in a sport that is very expensive to run.</p><blockquote><p>Time is of the essence on and off the track, in and out of season, in and out the paddock.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Strategy? No, Performance 🏎️ ]]></title><description><![CDATA[Ask Verstappen]]></description><link>https://f1.mlopsengineer.co.uk/p/strategy-no-performance</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/strategy-no-performance</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Wed, 08 Nov 2023 17:31:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yzff!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg" 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_!yzff!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yzff!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yzff!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yzff!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yzff!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yzff!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207077,&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_!yzff!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yzff!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yzff!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yzff!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faee53c97-9e38-41d8-bd0d-861225b7cd83_1024x1024.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></figure></div><p>Out of a total of 20 races so far this year, Max Verstappen, Red Bull Driver, has won 17 of those, 17! If you analyse that a little further, there are a total of 20 drivers competing in F1, and where each driver had a chance of winning once, Max has won 17 times. </p><p>But if you watched Max and the Red Bull team closely, they were not always this successful. So what changed? </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Consistent success on the track takes a while for a combination of new factors, even though very efficient, to become familiar with. This goes both for the drivers and the cars engineered for them. </p><blockquote><p>Ultimately, performance is mostly due to efficiency than strategy</p></blockquote><p>It is clear Max has a great car engineered and is as good as any driver and most likely better to have achieved this streak. But it took time for him to achieve this fit; He had to gain mastery of his car, his opponents and the tracks where they come to battle each year. Ultimately his speed and efficiency of other engineering factors gave him an edge over teams that probably had better pitstop Engineers with shorter pitstop times or had better racing strategies. His efficiency crossed the threshold for him to outshine others. </p><p>The same goes for the AI space, where python outshines other languages due to its ease of use and beloved community. Whilst this was good for the ground work days, there comes a time when unfamiliarity has to be dealt with for advancement. Languages like Rust, which is strongly statically typed is unfamiliar to most AI Engineers though it outperforms rust in speed and efficiency (It can run computations faster on less expensive compute instances). But just as Max was in his stage of getting familiar with the factors thrown at him, languages like Rust &#129408; , are just getting started and will likely outperform Python in production adoption. Since it is a low-level language, it will definitely play a useful role in building embedded systems in F1 automobiles and forecast systems, as what plays the most important role in this space is speed! Go fast or Go home. Every team should want every system to be as fast as is safe to operate. From their supply chain to their technical systems to their driver on the wheels. </p><div class="pullquote"><p>&#8220;All the learning other drivers did in the lower categories, out of the spotlight, he did under the scrutiny of the world&#8217;s media.&#8221;&nbsp; -<strong><a href="https://time.com/6331364/max-verstappen-formula-one-interview-las-vegas/?utm_source=twitter&amp;utm_medium=social&amp;utm_campaign=editorial&amp;utm_term=sports_auto-racing&amp;linkId=246935709">Time</a></strong></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://f1.mlopsengineer.co.uk/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">MLOPs Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[🏎️ Equations, Models and Car Performance]]></title><description><![CDATA[Equations to consider when designing models to predict cat performance. More physics and automobile.]]></description><link>https://f1.mlopsengineer.co.uk/p/equations-models-and-car-performance</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/equations-models-and-car-performance</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Fri, 28 Jul 2023 00:54:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zpXI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#127950;&#65039; - <strong>F = ma (Force = mass * acceleration)</strong></p><p>This clearly is the first equation that you need to keep in mind. It is the basis of all the other equations. It is also the basis of Newton's second law of motion. In designing your ML model to predict car acceleration, you need to keep this in mind.</p><p>&#127950;&#65039; - <strong>F = mv^2/r (Centripetal force = mass * velocity^2 / radius of turn)</strong></p><p>This is the equation for centripetal force. It is the force that keeps the car in a circular path. It is the basis of the equation for cornering speed. Each F1 car has a cornering speed that it can take a corner at. This is the speed at which the centripetal force is equal to the force of friction. Any faster and the car will skid off the track. Any slower and the car will be able to take the corner but will be slower than the competition. Your model can predict the speed of a complete lap by taking into account the cornering speed of the car.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zpXI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zpXI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 424w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 848w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 1272w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zpXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png" width="1162" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:1162,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1375106,&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_!zpXI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 424w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 848w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.png 1272w, https://substackcdn.com/image/fetch/$s_!zpXI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa22c7d72-4711-4307-896e-36ff1a1da919_1162x780.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>&#127950;&#65039; - <strong>F = 1/2 * Cd * A * rho * v^2 (Drag force = 1/2 * drag coefficient * frontal area * air density * velocity^2)</strong></p><p>This is the equation for drag force. It is the force that opposes the motion of the car. It is the basis of the equation for top speed. C is the drag coefficient, A is the frontal area of the car, rho is the air density and v is the velocity of the car. </p><blockquote><p>Keep in mind, there is a threshold, Aerodynamics start to have a more noticeable affect on a vehicle at around 50 mph. </p></blockquote><p>Your model can predict the drag force the car may experience by taking into account the expected top speed. Drag force rises with the square of the speed, so doubling the speed requires four times the power to overcome air resistance. This is why F1 cars have such high power outputs.</p><p><strong>FINAL NOTES</strong></p><p>The relationship between power and force is given by the equation<code> P = F * v (Power = Force * velocity)</code>. Hence the more mass it has, the more power it could produce. But remember, there is always a tradeoff whether obvious or not, and there are always thresholds to consider too. Always aim to find these making use of your ML model, making the right analysis with the right features.</p>]]></content:encoded></item><item><title><![CDATA[Green regulations, New objectives]]></title><description><![CDATA[New F1 regulations and the Audi brand.]]></description><link>https://f1.mlopsengineer.co.uk/p/green-regulations-new-objectives</link><guid isPermaLink="false">https://f1.mlopsengineer.co.uk/p/green-regulations-new-objectives</guid><dc:creator><![CDATA[Tobi John]]></dc:creator><pubDate>Tue, 20 Jun 2023 21:17:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4R8a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.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_!4R8a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4R8a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 424w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 848w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 1272w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4R8a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png" width="1456" height="618" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:618,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1196548,&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_!4R8a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 424w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 848w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.png 1272w, https://substackcdn.com/image/fetch/$s_!4R8a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70e27fee-55f9-4956-9a7f-3c9f62a698cf_1856x788.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>&#127950;&#65039; - Sustainable innovation has been a popular topic in many sectors for the past few years.</p>
      <p>
          <a href="https://f1.mlopsengineer.co.uk/p/green-regulations-new-objectives">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>