<?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[Ankur's Songbook]]></title><description><![CDATA[A blog that is moving out of the personal space and the professional space and getting into that in-between where anything is possible. Lets meet life as life, not some compartmentalized folder.]]></description><link>https://blog.ankurr0y.com</link><image><url>https://substackcdn.com/image/fetch/$s_!yZpb!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6ca6b9-12da-4574-ad18-76d6a272ac13_320x320.png</url><title>Ankur&apos;s Songbook</title><link>https://blog.ankurr0y.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 08 Aug 2026 02:32:40 GMT</lastBuildDate><atom:link href="https://blog.ankurr0y.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ankur Roy]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ankurr@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ankurr@substack.com]]></itunes:email><itunes:name><![CDATA[Ankur Roy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ankur Roy]]></itunes:author><googleplay:owner><![CDATA[ankurr@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ankurr@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ankur Roy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[New Name, New Direction, Same Old Songbook]]></title><description><![CDATA[You may have noticed some changes around here ....]]></description><link>https://blog.ankurr0y.com/p/new-name-new-direction-same-old-songbook</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/new-name-new-direction-same-old-songbook</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Thu, 06 Aug 2026 21:44:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a745dfcd-1661-4a80-9c8c-d5c865940773_320x320.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Let&#8217;s start at the beginning. The beginning being today, when I started evaluating the last few years. The years have gone by since I started this blog, Substack has changed, my circumstances have changed, and I have been on adventures which I cannot possibly cover by simply writing them down. </p><p>One thing hasn&#8217;t changed though: my passion for writing and culture and self-expression, I would even wager to say that I have improved as a writer these past couple of years since I published my book. I just didn&#8217;t write as much, I had other obligations and a lot of other projects to get through (that&#8217;s not saying I don&#8217;t have them now, I&#8217;ll always have something to do, I think) but now I found myself looking back at this blog and thinking to myself: why?</p><p>&#8220;Why?&#8221; has been a question I have been asking myself about a lot of things lately. I used to just do things for the sake of doing them (simpler times) but now there is a need within me for greater motivation as I have realized that often our actions carry a lot of responsibilities and consequences that we do not think of. Often, these are irrelevant or immaterial and we should have the ability to look past them, but when one begins to have constraints on one&#8217;s time while simultaneously developing passions and enthusiastic furor for many other things in life, one cannot help wonder &#8230; &#8220;why?&#8221;. Why is something worth my time? Why do I always do this and not that? Why have I ended up where I ended up?</p><p>These questions are haunting, and yet unlike ghosts they are tangible and their answers, even at the smallest scale, have a profound effect on one&#8217;s life. And in trying to resolve this blog, I landed on the question of &#8220;Why do I do this blog?&#8221; and the answer to me felt incomplete when I actually came up with it. In brief, the answer was:</p><ul><li><p>For when I feel the need to brag about something.</p></li><li><p>For when I feel the need to promote something.</p></li><li><p>For when I just want to write out my feelings (this use hasn&#8217;t been relevant for quite a while)</p></li></ul><p>In coming up with these answers, I also came up with what was missing, and that wasn&#8217;t really motivation or enthusiasm, but investment. I was enthusiastic about ideas, even motivated to execute them, but I hadn&#8217;t applied myself well enough, nor had I invested the time and the subtle little tricks to make this publication the best that it can be. I hadn&#8217;t taken the responsibility I had for my own expression seriously.</p><p>And that finally brings us to this revamp. This is my blog. The blog of me. It&#8217;s why my name&#8217;s in the new title now. The blog is going to be different now. Though I am not a 100% sure in what way. There will be tech, but there will also be more. But more importantly, it will independently support the thoughts and creative expression of one individual: me. </p><p>You see dear reader, I feel a responsibility now to myself to create something that I can be proud of, that I can put up as a platform that shows not just career growth, or success, or serves as some sort of obligatory IT guy career tool, but is a genuine reflection of things I am enthusiastic about and is an independent expression of me, things that I do and see in my life and as many of my interests as I can fit on here.</p><p>It&#8217;s also going to be pretty damn entertaining.</p><p>So expect more from this blog (just as I expect more from myself now), I don&#8217;t know how, but I know soon.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading Ankur's Songbook! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[Antigravity CLI problem breakdowns, or how the command line interface is the best way to breakdown and solve a problem with your AI]]></title><description><![CDATA[Some people think I only write these when there's something in it for me, well that was true until the end of this article. It'll still be true afterwards, but that's not the point. Enjoy!]]></description><link>https://blog.ankurr0y.com/p/antigravity-cli-problem-breakdowns</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/antigravity-cli-problem-breakdowns</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Fri, 10 Jul 2026 12:25:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ttAz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have decided to start being a little more structured, a little tighter with my writing now that I am growing older, taking you on a journey but also getting to the point. And the point here is most of you have probably never heard of Antigravity CLI, you&#8217;ve probably heard of the term Antigravity from that one gun in Half-Life 2. </p><p>And this is perfectly normal. During the numerous talks that I have given over the years (many of the at <span data-color="#ff0000" style="color: rgb(255, 0, 0);">G</span><span data-color="#b6d7a8" style="color: rgb(182, 215, 168);">oo</span><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">g</span><span data-color="#f6b26b" style="color: rgb(246, 178, 107);">l</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">e</span> events, btw) I have scarcely had half the room raise their hands when I even asked them if the knew what Gemini was. So first, here&#8217;s a little context for you before we get to the meat of this blog.</p><h1><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">Ba</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">ck</span><span data-color="#ffd966" style="color: rgb(255, 217, 102);">gr</span><span data-color="#b6d7a8" style="color: rgb(182, 215, 168);">ou</span><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">nd</span></h1><p><span>As with most Google products, Gemini and Antigravity have undergone a lot of transformations over the years, and please do not expect this diagram to be a fully accurate description of all that has happened in the last three years, just my perception and experience of it:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ttAz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ttAz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ttAz!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg" width="244" height="329.29945054945057" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:1965,&quot;width&quot;:1456,&quot;resizeWidth&quot;:244,&quot;bytes&quot;:834197,&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;:&quot;https://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ttAz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ttAz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2b2cc09-0df7-4383-8688-c84eae119ef9_2290x3090.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 aria-hidden="true" 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><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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Agn5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Agn5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 424w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 848w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Agn5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png" width="242" height="350.3665893271462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1248,&quot;width&quot;:862,&quot;resizeWidth&quot;:242,&quot;bytes&quot;:1567552,&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;:&quot;https://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Agn5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 424w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 848w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!Agn5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0819766-af21-4bee-bcfd-302826e2a8c1_862x1248.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 aria-hidden="true" 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><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>As you can see, it has been a long and winding road, even in the summary. And Antigravity as a concept ( a model and platform specifically designed for coding with all the add-ons that come with it) isn&#8217;t even a year old. Antigravity CLI is the successor to Gemini CLI which many people considered the best way to use the Gemini API, and honestly, it was. In my opinion, Antigravity CLI is a great successor and we&#8217;ll see why it and CLI tools in general should be used more by the general public (if they will or wont, we&#8217;ll see). The use case we will explore is similar to the one I used to make my timeline diagram above nicer, just a few more pieces.</p><h1><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">Ge</span><span data-color="#ffd966" style="color: rgb(255, 217, 102);">tti</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">ng</span> <span data-color="#00ff00" style="color: rgb(0, 255, 0);">St</span><span data-color="#ffd966" style="color: rgb(255, 217, 102);">ar</span><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">ted</span></h1><p><span>Let&#8217;s not dwell on the setup for too long, let&#8217;s just list out what you will need to make this work:</span></p><ul><li><p>Any computer with a CLI (any sort of terminal whatsoever).</p></li><li><p>A Google account (if you don&#8217;t have any AI Pro licenses or Google Cloud projects enabled they will train on your data)</p></li></ul><p><a href="https://antigravity.google/docs/cli/install?utm_campaign=deveco_gdemembers&amp;utm_source=deveco"><mark data-color="#1155cc" style="background-color: rgb(17, 85, 204); color: rgb(255, 255, 255);">You can find the installation instructions (which is literally one line) here</mark></a></p><h1><span data-color="#ffd966" style="color: rgb(255, 217, 102);">T</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">he</span> <span data-color="#00ff00" style="color: rgb(0, 255, 0);">St</span><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">art</span></h1><p>Here&#8217;s the repo (clever name, I know): <a href="https://github.com/ankurr0y/antigravity-cli-element-composer">https://github.com/ankurr0y/antigravity-cli-element-composer</a></p><p>It&#8217;s literally just a sample corporation, we&#8217;re not overcomplicating this, we&#8217;re going to let the AI figure out a lot of this.</p><p>In this exercise we will be using the CLI &#8220;raw&#8221; without asking about any skills, but I would highly recommend for many tasks to have specialized skills and I would also highly recommend this skills repository (very helpful): <a href="https://github.com/sickn33/agentic-awesome-skills">https://github.com/sickn33/agentic-awesome-skills</a></p><p>But again, we are going to let the CLI do the work now, so lets not even clone the repo, lets let the Antigravity CLI do it for you.</p><p>First type in <code>agy </code>in the command line of your choice:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!41eI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!41eI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 424w, https://substackcdn.com/image/fetch/$s_!41eI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 848w, https://substackcdn.com/image/fetch/$s_!41eI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 1272w, https://substackcdn.com/image/fetch/$s_!41eI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!41eI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png" width="706" height="190" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:190,&quot;width&quot;:706,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17193,&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://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.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_!41eI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 424w, https://substackcdn.com/image/fetch/$s_!41eI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 848w, https://substackcdn.com/image/fetch/$s_!41eI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 1272w, https://substackcdn.com/image/fetch/$s_!41eI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3112d604-032d-4ac0-97bb-f52ac7296efc_706x190.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You&#8217;ll get something similar to this if you&#8217;re configured with your Google account, otherwise do the step in the docs I presented to get there.</p><p>Now type the following command:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;0567e557-7c70-48eb-a9fc-339b7ec70470&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Clone this repo: https://github.com/ankurr0y/antigravity-cli-element-composer</code></pre></div><p>You&#8217;ll begin getting prompts like this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kqSm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kqSm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 424w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 848w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 1272w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kqSm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png" width="1406" height="186" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:186,&quot;width&quot;:1406,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38050,&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://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.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_!kqSm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 424w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 848w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 1272w, https://substackcdn.com/image/fetch/$s_!kqSm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040c96cf-9a3a-41c7-8f00-ff84079594db_1406x186.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>That&#8217;s because 1. it knows how to clone a repo and 2. it will ask you permission every time to run a command instead of running it itself. You can skip this if you just open Antigravity with this setting:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;5328870f-0397-4b3b-92a5-2b352066ed2b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">agy --dangerously-skip-permissions</code></pre></div><p>But that&#8217;s at your own risk. And how you do it here is not important to the end result since, and here&#8217;s the kicker: <em>your results will be completely different from mine, even with the same prompt. </em>Especially on something like this, if its a result you can live with, that&#8217;s what you take with AI (and those are the use cases where you should use it).</p><p>The next prompt:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;b9686d0e-bba3-402d-a45f-b9ea08a15a0b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Make a presentation about Sample Co in powerpoint, 
use the company logo in the jpeg on every slide. Make the presentation as professional as possible</code></pre></div><p>Now in  my case, it wrote a script in Python to read from the doc and put it into a powerpoint. And it worked quite well, takes 10 seconds approximately if you&#8217;re using Gemini 3.5 Flash. It even created a transparent version of the company logo to use. But here&#8217;s the thing, something was wrong:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UBYZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UBYZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 424w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 848w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 1272w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UBYZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png" width="1434" height="789" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:789,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:217494,&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://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.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_!UBYZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 424w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 848w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.png 1272w, https://substackcdn.com/image/fetch/$s_!UBYZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b840905-4633-402f-991f-c150f5d8cdfb_1434x789.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 aria-hidden="true" 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><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>Cant have that in a slide. I can easily fix this, but lets let the AI have a crack at it, and in that spirit I uploaded this same screenshot into the folder and told it to improve on its design</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;0accecb9-d8c3-44da-9951-9d9dba51779e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Have posted a screenshot of a format mistake at iter1_error.png. Fix this formatting for all slides</code></pre></div><p>So lets see what happened then:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FQGw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FQGw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 424w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 848w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 1272w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FQGw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png" width="562" height="663" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:663,&quot;width&quot;:562,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91271,&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://ankurr.substack.com/i/206412919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.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_!FQGw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 424w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 848w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.png 1272w, https://substackcdn.com/image/fetch/$s_!FQGw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95b5a4e4-e402-4086-bf39-74f271559b59_562x663.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 aria-hidden="true" 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><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>Better than before, but lets give it one more go.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;081465ec-57ec-4261-ab33-dddf814619ae&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext"> I have now posted iter2_error.png for the next iteration, its better, but needs a little fixing</code></pre></div><p>And this final iteration I was happy with! You can find it and the rest of the assets produced on the other branch (result) of the repo (the CLI pushed it).</p><h1><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Co</span><span data-color="#4a86e8" style="color: rgb(74, 134, 232);">nc</span><span data-color="#ffd966" style="color: rgb(255, 217, 102);">lu</span><span data-color="#00ff00" style="color: rgb(0, 255, 0);">si</span><span data-color="#ff0000" style="color: rgb(255, 0, 0);">on</span></h1><p><span>This was perhaps not the most succinct way to describe the Antigravity CLI, nor the full showcase of its abilities (try it out on a bigger codebase or a larger creative project). But it does show off that it is a great tool to solve these minor problems for you. Now, of course you can say, why not just use the Claude or Gemini UIs? Well, those are on the Internet, you can run this locally, and with your repository or even you documents! And you may also say &#8220;isn&#8217;t iterating kind of time consumin?&#8221; to which I would say it consumes less time and significantly less of your energy than would have otherwise been put into the processing of this information. Now, of course, what&#8217;s written needs to be double-checked but that&#8217;s almost always the case.</span></p><p><span>I will say, for more critical things, this is not for critical things, this is for uncritical things that should be treated as such, not everything is at the same level of importance, and the more you can shut out the mundane the better (just make sure it is actually mundane). Or as our friends at the Sample Co Solutions company would say:</span></p><p><em>&#8220;Lower your standards. Embrace the boilerplate. Stop striving for the exceptional and sink comfortably into the warm, inviting embrace of the unremarkable.&#8221;</em></p><p>Often this is enough, do something cool with the time you save.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[The building blocks for a self-building RPG game using Google Agent Development Kit (ADK)]]></title><description><![CDATA[I know what you're thinking, that's pretty childish. But what does it mean to be an adult? Think about that.]]></description><link>https://blog.ankurr0y.com/p/the-building-blocks-for-a-self-building</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-building-blocks-for-a-self-building</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sun, 21 Dec 2025 20:50:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1gPM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the most important things that you should do with AI is have fun with it. I know, its serious stuff, don&#8217;t give it your personal data and all that. But sometimes, its good to have just some plain fun! That&#8217;s what we&#8217;re going to do with ADK today, we will try and make some dynamic RPG characters based on some prompts and try and add them to our own narrative to be spun in.</p><h1>The Architecture</h1><p>So here it is in it&#8217;s simplest form:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1gPM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1gPM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 424w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 848w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 1272w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1gPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png" width="1029" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:1029,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101540,&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;:&quot;https://ankurr.substack.com/i/182156542?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.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_!1gPM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 424w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 848w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.png 1272w, https://substackcdn.com/image/fetch/$s_!1gPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c05630e-a4a6-4d50-aad2-a8b5ea673cd8_1029x438.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 aria-hidden="true" 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><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>Quite easy to understand actually, <code>world_agent</code> builds and updates the world, <code>npc_agent</code> engages in dialogue, <code>character_reader_agent</code> reads the characters created by the <code>character_manager_agent</code> and updated by the <code>character_creator_agent</code>. This will create characters and then update them in a JSON document.</p><h1>Let&#8217;s try a narrative</h1><p>Here is some character creation:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!thyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!thyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 424w, https://substackcdn.com/image/fetch/$s_!thyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 848w, https://substackcdn.com/image/fetch/$s_!thyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 1272w, https://substackcdn.com/image/fetch/$s_!thyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!thyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png" width="1456" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75307,&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;:&quot;https://ankurr.substack.com/i/182156542?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.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_!thyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 424w, https://substackcdn.com/image/fetch/$s_!thyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 848w, https://substackcdn.com/image/fetch/$s_!thyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.png 1272w, https://substackcdn.com/image/fetch/$s_!thyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1dc3e5f5-371d-4d71-89cf-641e606a9090_1890x551.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 aria-hidden="true" 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><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>Which shows up as a JSON for the character:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D31Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D31Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 424w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 848w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 1272w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D31Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png" width="1072" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:1072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68031,&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://ankurr.substack.com/i/182156542?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.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_!D31Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 424w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 848w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.png 1272w, https://substackcdn.com/image/fetch/$s_!D31Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad168283-72a9-40f6-afb9-ca39fac506c6_1072x506.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 aria-hidden="true" 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><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>That can, again be updated by the update agent. Now, let&#8217;s spin a narrative for Herbert:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QI85!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QI85!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 424w, https://substackcdn.com/image/fetch/$s_!QI85!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 848w, https://substackcdn.com/image/fetch/$s_!QI85!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 1272w, https://substackcdn.com/image/fetch/$s_!QI85!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QI85!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png" width="1456" height="418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152156,&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://ankurr.substack.com/i/182156542?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.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_!QI85!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 424w, https://substackcdn.com/image/fetch/$s_!QI85!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 848w, https://substackcdn.com/image/fetch/$s_!QI85!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.png 1272w, https://substackcdn.com/image/fetch/$s_!QI85!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F698f8d58-ee48-420e-91cf-5765108f2b26_1875x538.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 aria-hidden="true" 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><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>And voila, all the details of the character, which can be updated over time.</p><h1>Conclusion</h1><p>In conclusion, agents and ADK are great for these dynamic narratives, and they can be used to make narratives that are a bit more non-linear and ever changing than the ones a singular person could make. This is essentially creating a world that is only slightly nudged by you but created entirely in the mind of the agent. Fascinating stuff!</p><p>Here is the repository if you would like to check it out: https://github.com/ankurr0y/Self-building-RPG-maker/tree/main </p>]]></content:encoded></item><item><title><![CDATA[Fun with agentic workflows in ADK and how to use them]]></title><description><![CDATA[ADK provides us with a number of different options for workflows and how to use them (in sequence, parallel and loops), it's like programming using the AI (or AIs?) as variables. Let's try it out!]]></description><link>https://blog.ankurr0y.com/p/fun-with-agentic-workflows-in-adk</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/fun-with-agentic-workflows-in-adk</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sun, 29 Jun 2025 07:38:04 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d51d3d0c-b6cb-4581-9e34-bd4144c2ce3c_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Agents, that&#8217;s the hot topic word, you&#8217;ve heard it everywhere right? What does that mean? In the simplest terms, its an AI which can perform an action on your behalf, this action usually being an API call, function call, or use of any similar tools.</p><p>Making these tools has been the biggest challenge for people historically, because even if they do it right once, it used to take a lot of different libraries to put it together, and then, of course, deploy it. Everyone had their own way, but that has been simplified now with ADK.</p><h1>What&#8217;s an ADK?</h1><p>ADK stands for Agent Development Kit. What is that? It&#8217;s a tool to develop agents. It simplifies the process to develop your first agent and has examples on how to develop agents in such a way as to reuse them in developing custom agents of your own. It also has a UI test environment and multiple ways to deploy your agent, including an Agent Egnine, Cloud Run and even Kubernetes. Basically, it can cover all the aspects of building an agent, from ideation to implementation and testing.</p><h1>Initial setup</h1><p>The initial setup for an ADK workload, even on your local machine is very simple. The AI part, however, does require that you have access either to Vertex AI or AI Studio. AI Studio, is the free option for development, with the ability to switch over to the paid AI Studio or Vertex AI for larger deployments.</p><p>The actual setup is not that difficult, you can do it from any command line, and you can serve it from any port. The quickstart will walk you through the process: </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://google.github.io/adk-docs/get-started/quickstart/&quot;,&quot;text&quot;:&quot;ADK quickstart setup&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://google.github.io/adk-docs/get-started/quickstart/"><span>ADK quickstart setup</span></a></p><h1>Agent workflow triggering</h1><p>We are going to try out three different agent workflow examples, each showing a different way to orchestrate agents and tools.</p><h2>Sequential</h2><p>Multiple agents often need to work in a sequence in order to produce a refined result. In this example, we will use three agents in sequence to rewrite a short story based on criticism. And here is the code:</p><pre><code>from google.adk.agents import LlmAgent, SequentialAgent

GEMINI_MODEL = "gemini-2.0-flash-001"

#Writer Agent
writer_agent = LlmAgent(
    name="WriterAgent",
    model=GEMINI_MODEL,
    instruction="""You are a story writer.
Based on the user's prompt, write a short story around 1000 words.
Output *only* the text from the story. 
""",
    description="Writes a short story based on user input.",
    output_key="story_text"
)

#Editor Agent
editor_agent = LlmAgent(
    name="EditorAgent",
    model=GEMINI_MODEL,
    instruction="""You are an experienced literary editor with a keen eye for storytelling.
Your task is to provide constructive feedback on the provided short story.

**Story to Review:**
{story_text}

**Review Criteria:**
1.  **Plot and Pacing:** Is the story engaging? Does the plot unfold at a good pace? Are there any plot holes or inconsistencies?
2.  **Character Development:** Are the characters compelling and believable? Are their motivations clear and consistent?
3.  **Prose and Style:** Is the writing clear, vivid, and evocative? Are there issues with grammar, spelling, or punctuation?
4.  **Dialogue:** Does the dialogue sound natural for the characters? Does it effectively reveal character and advance the plot?
5.  **Theme and Tone:** Is there a central theme? Is the tone consistent and effective for the story being told?

**Output:**
Provide your feedback as a concise, bulleted list. Focus on the most important points for improvement, offering specific examples from the text where possible.
If the story is excellent and requires no major changes, simply state: "An excellent story with no major issues found."
Output *only* the review comments or the "no major issues" statement.

""",
    description="Edits the story and provides feedback",
    output_key="review_comments",
)

#Rewriter Agent
rewriter_agent = LlmAgent(
    name="RewriterAgent",
    model=GEMINI_MODEL,
    instruction="""You are a creative writing AI.
Your goal is to improve the given short story based on the provided editorial comments.

**Original Story:**
{story_text}

**Editorial Comments:**
{review_comments}

**Task:**
Carefully apply the suggestions from the comments to rewrite the original story.
If the comments state "An excellent story with no major issues found," return the original story unchanged.
Preserve the core plot and characters while improving the prose, pacing, and dialogue as suggested.

**Output:**
Output *only* the final, rewritten story.
Do not add any other text before or after the story.

""",
    description="Rewritten story based on feedback",
    output_key="rewritten_story",
)

writing_process_agent = SequentialAgent(
    name="WritingProcessAgent",
    sub_agents=[writer_agent, editor_agent, rewriter_agent],
    description="Executes a sequence of writing, editing, and rewriting.",
)

root_agent = writing_process_agent</code></pre><p>The code executes in the form of writer&#8594;editor&#8594;rewriter. And here&#8217;s an example of the criticism it produces:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EM_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EM_4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 424w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 848w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 1272w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EM_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png" width="1074" height="550" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:550,&quot;width&quot;:1074,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:171158,&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://ankurr.substack.com/i/166931519?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.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_!EM_4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 424w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 848w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.png 1272w, https://substackcdn.com/image/fetch/$s_!EM_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F954c9e00-98bb-4d17-9f70-6a0d51aaf157_1074x550.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 aria-hidden="true" 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><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>And when you feed that edited story back into the editor agent:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uB_y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uB_y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 424w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 848w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 1272w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uB_y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png" width="928" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:928,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44567,&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://ankurr.substack.com/i/166931519?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.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_!uB_y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 424w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 848w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 1272w, https://substackcdn.com/image/fetch/$s_!uB_y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479d24bc-eb92-44a0-83db-61461a2978b6_928x200.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>So, it sticks to it&#8217;s guns! Excellent. But what happens when you try to execute multiple agents at the same time?</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>Parallel</h2><p>This example will show an agent running two other agents (for a topic and against) and then passing that information to another agent in order to produce a summary.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i9Ub!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i9Ub!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 424w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 848w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 1272w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i9Ub!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png" width="615" height="148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:148,&quot;width&quot;:615,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13933,&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://ankurr.substack.com/i/166931519?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.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_!i9Ub!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 424w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 848w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 1272w, https://substackcdn.com/image/fetch/$s_!i9Ub!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0deada2e-49ad-4ec7-9b06-21cb37e7bc8c_615x148.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Here is the code for the agent:</p><pre><code>from google.adk.agents import LlmAgent, ParallelAgent, SequentialAgent

GEMINI_MODEL = "gemini-2.0-flash-001"

#For Agent
for_agent = LlmAgent(
    name="ForAgent",
    model=GEMINI_MODEL,
    instruction="""You are very in favor of the topic suggested.
Based on the user's prompt, write a paragraph that is in favor of the topic.
Output *only* the text. 
""",
    description="Writes a text in favor of the topic.",
    output_key="for_text"
)

#Against Agent
against_agent = LlmAgent(
    name="AgainstAgent",
    model=GEMINI_MODEL,
    instruction="""You are very against of the topic suggested.
Based on the user's prompt, write a paragraph that is against the topic.
Output *only* the text. 
""",
    description="Writes a text against the topic.",
    output_key="against_text"
)

parallel_argument_agent = ParallelAgent(
     name="ParallelArgumentAgent",
     sub_agents=[for_agent, against_agent],
     description="Runs multiple agents in parallel to gather information."
 )

#Compilation Agent
compilation_agent = LlmAgent(
    name="CompilationAgent",
    model=GEMINI_MODEL,
    instruction="""
    Compile the information from {for_text} and {against_text} and compare the two.
 Produce a neutral conclusion along with a summary of what each text discusses.
""",
    description="Produces a comparison of for and against texts.",
    output_key="compilation",
)

display_agent = SequentialAgent(
    name="DisplayAgent",
    sub_agents=[parallel_argument_agent, compilation_agent],
    description="Produces a final display of comparisons",
)

root_agent = display_agent</code></pre><p>And it works quite well. The topic I gave it was tea, and here is the result:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!40r4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!40r4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 424w, https://substackcdn.com/image/fetch/$s_!40r4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 848w, https://substackcdn.com/image/fetch/$s_!40r4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 1272w, https://substackcdn.com/image/fetch/$s_!40r4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!40r4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png" width="1074" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:1074,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102155,&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://ankurr.substack.com/i/166931519?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.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_!40r4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 424w, https://substackcdn.com/image/fetch/$s_!40r4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 848w, https://substackcdn.com/image/fetch/$s_!40r4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.png 1272w, https://substackcdn.com/image/fetch/$s_!40r4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc69d732-ad68-4544-a3f3-1aea509dace2_1074x385.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 aria-hidden="true" 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><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>Good work, exactly what you&#8217;d want. And since there is no influence in between the two for and against, it creates very good reportage.</p><h2>Loop</h2><p>Loop are meant to automate in a way in which you can do one tedious task as many times as you need to as long as its consistent. You know what&#8217;s tedious? Writing more code, so we&#8217;re going to recycle our sequential code for this one, putting the editor and rewriter in a loop after initial story writing.</p><pre><code>from google.adk.agents import LlmAgent, SequentialAgent, LoopAgent

GEMINI_MODEL = "gemini-2.0-flash-001"

#Writer Agent
writer_agent = LlmAgent(
    name="WriterAgent",
    model=GEMINI_MODEL,
    instruction="""You are a story writer.
Based on the user's prompt, write a short story around 1000 words.
Output *only* the text from the story. 
""",
    description="Writes a short story based on user input.",
    output_key="story_text"
)

#Editor Agent
editor_agent = LlmAgent(
    name="EditorAgent",
    model=GEMINI_MODEL,
    instruction="""You are an experienced literary editor with a keen eye for storytelling.
Your task is to provide constructive feedback on the provided short story.

**Story to Review:**
{story_text}

**Review Criteria:**
1.  **Plot and Pacing:** Is the story engaging? Does the plot unfold at a good pace? Are there any plot holes or inconsistencies?
2.  **Character Development:** Are the characters compelling and believable? Are their motivations clear and consistent?
3.  **Prose and Style:** Is the writing clear, vivid, and evocative? Are there issues with grammar, spelling, or punctuation?
4.  **Dialogue:** Does the dialogue sound natural for the characters? Does it effectively reveal character and advance the plot?
5.  **Theme and Tone:** Is there a central theme? Is the tone consistent and effective for the story being told?

**Output:**
Provide your feedback as a concise, bulleted list. Focus on the most important points for improvement, offering specific examples from the text where possible.
If the story is excellent and requires no major changes, simply state: "An excellent story with no major issues found."
Output *only* the review comments or the "no major issues" statement.

""",
    description="Edits the story and provides feedback",
    output_key="review_comments",
)

#Rewriter Agent
rewriter_agent = LlmAgent(
    name="RewriterAgent",
    model=GEMINI_MODEL,
    instruction="""You are a creative writing AI.
Your goal is to improve the given short story based on the provided editorial comments.

**Original Story:**
{story_text}

**Editorial Comments:**
{review_comments}

**Task:**
Carefully apply the suggestions from the comments to rewrite the original story.
If the comments state "An excellent story with no major issues found," return the original story unchanged.
Preserve the core plot and characters while improving the prose, pacing, and dialogue as suggested.

**Output:**
Output *only* the final, rewritten story.
Do not add any other text before or after the story.

""",
    description="Rewritten story based on feedback",
    output_key="story_text",
)

editor_loop_agent = LoopAgent(name="RefinementLoop",
    sub_agents=[
        editor_agent,
        rewriter_agent,
    ],
    max_iterations=5
)


writing_process_agent = SequentialAgent(
    name="WritingProcessAgent",
    sub_agents=[writer_agent, editor_loop_agent],
    description="Executes a sequence of writing, editing, and rewriting.",
)

root_agent = writing_process_agent</code></pre><p>You can see the code loop running on the request and response loop for criticizing the story:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ptIC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ptIC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 424w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 848w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 1272w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ptIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png" width="565" height="432" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b714847-b729-47d6-baca-67e0689a61e8_565x432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:432,&quot;width&quot;:565,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44941,&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://ankurr.substack.com/i/166931519?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.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_!ptIC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 424w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 848w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.png 1272w, https://substackcdn.com/image/fetch/$s_!ptIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b714847-b729-47d6-baca-67e0689a61e8_565x432.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 aria-hidden="true" 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><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 future improvements, an exit condition for the loop is recommended.</p><p>In conclusion, lots of fun ways to start your ADK journey. But don&#8217;t take my word for it, try it out yourself.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[Hur du får din AI att göra matematik bra, del 1 - enkel matematik]]></title><description><![CDATA[Jag tycker och tycker inte om matematik, det &#228;r en love-hate relationship, men maths med AI? 5/7 perfect score]]></description><link>https://blog.ankurr0y.com/p/hur-du-far-din-ai-att-gora-matematik</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/hur-du-far-din-ai-att-gora-matematik</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Wed, 26 Feb 2025 19:11:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0d442324-8067-472d-a785-2f202d240438_92x92.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Matematik med gemensam AI kan vara sv&#229;rt. Flest av oss har f&#246;rs&#246;kt det. P&#229; de enklaste termerna: en LLM funkar och &#228;r tr&#228;nade med ordet och inte med numrerar. S&#229; f&#246;r det, numrerar och ordet &#228;r inte olik. D&#228;remot kan ni ocks&#229; &#8220;gaslight&#8221; en AI att ge dig fel svar p&#229; matematikfr&#229;gor. S&#229; fr&#229;gan &#228;r: Hur kan vi skapa en LLM-interaktion d&#228;r vi har ett konsekvent svar f&#246;r matematikfr&#229;gor? Svaren &#228;r enkla: vi riktar fr&#229;gorna fl&#246;den till grundl&#228;ggande funktioner. N&#228;sta fr&#229;ga &#228;r, hur? Ska vi ser nu.</p><h1>Kr&#228;vs f&#246;re starta</h1><ul><li><p>En Google Cloud konto med ett projekt med Vertex AI API: er aktiverade</p></li><li><p>En instans av gcloud command line tool (funkar i CloudShell)</p></li><li><p>Tillg&#229;ng till n&#229;gon typ av Jupyter notebook (Colab, Colab Enterprise, s&#229; vidare) med google-cloud-aiplatform installerat</p></li></ul><h1>Initiera och importera libraries</h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vi2o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vi2o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 424w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 848w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 1272w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vi2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png" width="1135" height="126" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:126,&quot;width&quot;:1135,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12751,&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;:&quot;https://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.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_!Vi2o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 424w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 848w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 1272w, https://substackcdn.com/image/fetch/$s_!Vi2o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8175eba6-a3c1-4409-8194-5f7ac8836853_1135x126.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E1_z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E1_z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 424w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 848w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 1272w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E1_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png" width="835" height="195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:195,&quot;width&quot;:835,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19063,&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;:&quot;https://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.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_!E1_z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 424w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 848w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 1272w, https://substackcdn.com/image/fetch/$s_!E1_z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96270e36-e490-4a1d-a5d5-f914a8c91af9_835x195.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KZ8Z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 424w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 848w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 1272w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png" width="835" height="195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:195,&quot;width&quot;:835,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14845,&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;:&quot;https://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.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_!KZ8Z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 424w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 848w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 1272w, https://substackcdn.com/image/fetch/$s_!KZ8Z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7e95c4fc-fc9a-42a5-8b09-d1b56fb71485_835x195.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Skriv funktioner f&#246;r addition och multiplikation och beskriv dem f&#246;r AI-anv&#228;ndning</h1><p>V&#228;ldigt enkel, Programming 101 och 102.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bLIG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bLIG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 424w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 848w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 1272w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bLIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png" width="649" height="607" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:649,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48661,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.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_!bLIG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 424w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 848w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.png 1272w, https://substackcdn.com/image/fetch/$s_!bLIG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3d212d-5fea-4fe9-a017-ba60dda6345e_649x607.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 aria-hidden="true" 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><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>Efter, l&#228;gg dem till Tool library.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TYH5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TYH5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 424w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 848w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 1272w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TYH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png" width="431" height="162" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:162,&quot;width&quot;:431,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5625,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.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_!TYH5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 424w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 848w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 1272w, https://substackcdn.com/image/fetch/$s_!TYH5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25adf9e6-a6a5-4af8-a882-1044bf9e4d7f_431x162.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>Initiera AI-modell</h1><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dOwm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dOwm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 424w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 848w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 1272w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dOwm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png" width="1215" height="302" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b978b2f9-607c-46b9-87b5-a63349985155_1215x302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:302,&quot;width&quot;:1215,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48646,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.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_!dOwm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 424w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 848w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 1272w, https://substackcdn.com/image/fetch/$s_!dOwm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb978b2f9-607c-46b9-87b5-a63349985155_1215x302.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Ni kan ge det instruktioner s&#229; &#228;r det n&#228;stan till svar att du vill. Och skriva en funktion f&#246;r extrakt.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iTPf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iTPf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 424w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 848w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 1272w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iTPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png" width="1158" height="249" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:249,&quot;width&quot;:1158,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59558,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.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_!iTPf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 424w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 848w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 1272w, https://substackcdn.com/image/fetch/$s_!iTPf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ead1a08-cbf2-4765-a145-0d63be72944e_1158x249.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>H&#228;ndla prompt</h1><pre><code>def handle_response(response):
    if response.candidates[0].function_calls:
        function_call = response.candidates[0].function_calls[0]
        print(function_call)
    else:
        print(response.text)
        return

    if function_call.name == "add":
        arguments = dict(function_call.args)
        sum_of = add_two(arguments['a'],arguments['b'])
        response = chat.send_message( Part.from_function_response(
                name="handle_response",
                response={
                    "content": function_call.args,
                },
            ),
        )
        return handle_response(response)

    elif function_call.name == "multiply":
        arguments = dict(function_call.args)
        product_of = multiply_two(arguments['a'],arguments['b'])
        response = chat.send_message( Part.from_function_response(
                name="handle_response",
                response={
                    "content": function_call.args,
                },
            ),
        )
        return handle_response(response)

    else:
        print(function_call)</code></pre><p>Det ska hj&#228;lpa oss att sortera mellan addition och multiplikation.</p><h1>Exempelsvar</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s5hm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s5hm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 424w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 848w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 1272w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s5hm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png" width="1124" height="529" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3363618b-1353-44da-849b-ab85739c5f35_1124x529.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1124,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56143,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.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_!s5hm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 424w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 848w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.png 1272w, https://substackcdn.com/image/fetch/$s_!s5hm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3363618b-1353-44da-849b-ab85739c5f35_1124x529.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 aria-hidden="true" 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><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>Det kan fattar kontext.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4pIO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4pIO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 424w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 848w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 1272w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4pIO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png" width="1329" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:1329,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58225,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.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_!4pIO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 424w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 848w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.png 1272w, https://substackcdn.com/image/fetch/$s_!4pIO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85de8380-9ec3-4339-8c28-36f97cb8db3b_1329x506.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 aria-hidden="true" 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><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>Det kan fattar gemensam spr&#229;k.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yr-Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yr-Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 424w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 848w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 1272w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yr-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png" width="1329" height="541" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:541,&quot;width&quot;:1329,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55247,&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://ankurr.substack.com/i/156362125?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.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_!yr-Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 424w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 848w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.png 1272w, https://substackcdn.com/image/fetch/$s_!yr-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52162f5-6ce4-4b5b-a803-ebddd97d15be_1329x541.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 aria-hidden="true" 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><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><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[👍]]></title><description><![CDATA[Where to begin &#8230;.]]></description><link>https://blog.ankurr0y.com/p/24f</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/24f</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sun, 29 Dec 2024 21:59:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/56db46b5-c871-4ae6-86e5-6f5fdd7e8de1_2048x2048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is not the hardest thing I've had to write this year, but it has taken quite a bit of effort just to start. Not because of any great sorrow or impediment, but because it's a lot to process, and I mean a lot. It&#8217;s not something where I can just go back through my calendar and find everything that I did. This year has felt like the sum of many years.</p><p> I don&#8217;t think there is some great insight that ties the whole of this year together for me, nor is there some sort of great goal in the future that I can look at and think &#8220;This is what I want, its what I will work towards.&#8221;, one thing I&#8217;ve come to realize in this year is that maybe I&#8217;ve never had that. And that maybe I&#8217;m better off for it, because while it does convey a distinct lack of focus (something I&#8217;ve always struggled with), the opportunities it provides and has already provided have made me look at my life in a different perspective.</p><p>I could go on and on about how my perspective, my life and many other things have changed over the course of the year, I could write many texts on the subject, but I&#8217;m going to limit myself to a few career highlights and a couple of personal insights.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Book</h1><p>This was a big thing for me from the middle of 2023 to early 2024. My first book! I was so excited. Still am, still jazzed, but the months and perspective have set in and in my mind, the writing of the book wasn&#8217;t just a great career highlight, it was also a great journey of self-discovery, it was a journey that permanently reinforced and set my skills and my confidence in them, and I will always be grateful to it for that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ygma!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ygma!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ygma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Chapter 1: Introducing DevOps Principles - Hands-On Python for DevOps [Book]&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="Chapter 1: Introducing DevOps Principles - Hands-On Python for DevOps [Book]" title="Chapter 1: Introducing DevOps Principles - Hands-On Python for DevOps [Book]" srcset="https://substackcdn.com/image/fetch/$s_!Ygma!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!Ygma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b11996-588b-4fdd-886c-4c87d04249af_1200x630.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 aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>GDE, DevFests and travel</h1><p>I became a Google Developer Expert (and a Champion Innovator, but that came with the GDE) in Cloud. This, honestly, has been the opportunity of a lifetime. I have gotten opportunities to travel, to network and most importantly to share my knowledge on public forums and grow my platform and learn from others as well. </p><p>This year, according to my rough estimates, I have traveled 53398.29 kilometers by planes and rail (not counting other vehicles, and counting 19000 km of travel between Uppsala and Stockholm over the year since its a 128km round trip) and I can honestly say: I&#8217;m tired. It is quite exhausting to travel that much. However, it was incredibly rewarding, so I can&#8217;t complain. Here <a href="https://www.google.com/maps/d/u/0/edit?mid=14cTVxpCmmM32wVmdoigzFJcLjWHaiZo&amp;usp=sharing">a link</a> to my travels on the map app.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AoRi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AoRi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 424w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 848w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 1272w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AoRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png" width="784" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:784,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:378257,&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_!AoRi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 424w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 848w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.png 1272w, https://substackcdn.com/image/fetch/$s_!AoRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eeaeb64-b89d-4e94-80ba-355669a8fb4c_784x536.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 aria-hidden="true" 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><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Many other career highs</h1><p>Its a lot to take in, this last year, like I said, its felt like many years in one. But there are a few things that I am really proud of that I can only express in bullet points without turning this blog into a memoir or something:</p><ul><li><p>I did a mentorship program in AWS for a cohort of students in Nepal, it was great, met some great people with a bright future in the Nepal IT industry.</p></li><li><p>A book that I was the technical reviewer for (on data governance) was also published.</p></li><li><p>Online Partner as a company became a Great Place To Work certified company. It was my first full year there, so I&#8217;m really happy we accomplished that!</p></li></ul><p>And of course, there were projects that I am proud of, teams that I was happy to be in and friends made along the way, but that is a list that could take a life of its own.</p><h1>My takeaway</h1><p>This year has been a ride. Its been the best, most successful year of my life and the year that I finally &#8220;made it&#8221; in a way. A feeling disappeared over the course of the year, the feeling of inadequacy, the feeling that I hadn&#8217;t done anything with my life. Its completely gone. I have truly become successful at most things you are supposed to be successful at in life.</p><p>At the same time, I feel excited for newer challenges, challenges that provide the energy and drive to live life. This combined with a better understanding of myself as a person has brought me close to peace, not quiet, but a loud peace, a peace that rings and echoes and keeps you engaged and present. Doesn&#8217;t mean there are no difficulties, just that there is always the strength to face them.</p><h1>My 2025</h1><p>Oof, thinking about it, I have about 30 days worth of stuff set aside already for the year. And that has sort of been the challenge, having all my activities sorted and scheduled. But what I have learned is that one year is a very long time, with a lot of time to do the things that you want. So, I wont bother worrying about this.</p><p>What I will commit to is becoming more well-rounded. I have become successful, well-traveled, settled and educated, but now I need to grow into my own skin in a way. So that is going to be the goal of 2025, becoming more well-rounded, just better at living life. I&#8217;ve had a few exciting years the past few, I think a quiet reflective year this year is going to suit me.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[Lokaliserad AI för utbildning (Localized AI for Education)]]></title><description><![CDATA[Jag skriver den h&#228;r artikel i Svenska, men jag &#228;r inte mindre sarkastisk f&#246;r det.]]></description><link>https://blog.ankurr0y.com/p/lokaliserad-ai-for-utbildning-localized</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/lokaliserad-ai-for-utbildning-localized</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Mon, 30 Sep 2024 13:14:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/514423ba-902b-44d3-8f9d-185b5703b71c_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>S&#229; &#8230; AI, AI f&#246;r studenter. En intressant subjekt, men en subjekt att kommer att bli mer framtr&#228;dande i kommande &#229;r.  St&#246;rste koncern med AI f&#246;r studenter &#228;r deras potential p&#229; skriva sensitivt information i en LLM att skulle anv&#228;nd informationen f&#246;r tr&#228;ningsdata. Men t&#228;nk om det fanns en AI att du kan k&#246;r i en lokal dator utan koppling till n&#228;tet? En personlig AI f&#246;r varje student?  H&#228;r &#228;r det:</p><pre><code>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Din v&#228;nlig lokal AI&lt;/title&gt;
    &lt;script&gt;
        async function localFetch() {
            const promptInput = document.getElementById('promptInput').value; 
            const { available, defaultTemperature, defaultTopK, maxTopK } = await ai.assistant.capabilities();
            if (available !== "no") {
                const session = await ai.assistant.create();
                const resultDiv = document.getElementById('result');
                resultDiv.innerHTML = '';
                const result = await session.prompt(promptInput);
                let hasDisplayedResults = false;
                if (!hasDisplayedResults) {
                    resultDiv.innerHTML = result; 
                    hasDisplayedResults = true; 
                } else {
                    resultDiv.innerHTML += result;
                }
            }
        }
        document.addEventListener('DOMContentLoaded', function () {
            const promptInput = document.getElementById('promptInput');
            promptInput.addEventListener('keypress', function (event) {
                if (event.key === 'Enter') {
                    localFetch();
                }
            });
        });
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;label for="promptInput"&gt;Ange din prompt:&lt;/label&gt;
    &lt;input type="text" id="promptInput" placeholder="Skriv din prompt h&#228;r"&gt;
    &lt;button onclick="localFetch()"&gt;H&#228;mta poesi&lt;/button&gt;
    &lt;div id="result"&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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 klassisk och enkel HTML och JavaScript, vad kul. Om du anv&#228;nd det, du kan ringt en lokal API f&#246;r Gemini Nano vilken du kan anv&#228;nda i Google Chrome. Du m&#229;ste ladda ned Gemini Nano f&#246;rste i Chrome (du kan f&#246;lj <a href="https://github.com/ontaptom/gemini-nano-chrome/blob/main/README.md">den h&#228;r guide</a>). Men efter, du kan helt enkelt anv&#228;nd en HTML dokument med koden fr&#229;n ovan och ditt resultera ser ut som det:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vOj_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vOj_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 424w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 848w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 1272w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vOj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png" width="387" height="184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:184,&quot;width&quot;:387,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12687,&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_!vOj_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 424w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 848w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 1272w, https://substackcdn.com/image/fetch/$s_!vOj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd130b0e6-e91d-43f5-a7c2-b342b5f8847e_387x184.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jzYo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jzYo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 424w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 848w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 1272w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jzYo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png" width="428" height="179" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:179,&quot;width&quot;:428,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11524,&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_!jzYo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 424w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 848w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 1272w, https://substackcdn.com/image/fetch/$s_!jzYo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4eb3572-3372-4d17-9e41-d6ea0a44cd4e_428x179.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>Och nu du kan f&#246;lj trenden av &#8220;gaslighting AI&#8221; ocks&#229;!</p><p>Men om en allvarlig anteckning, om du vill skydda dina studenters data och ocks&#229; till&#229;ta de att anv&#228;nda och forska med AI, en lokal, mini-AI &#228;r en v&#228;lj att du kan leta efter i en snabb och enkel v&#228;g. </p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/lokaliserad-ai-for-utbildning-localized?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading The Field of Possibilities! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/lokaliserad-ai-for-utbildning-localized?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.ankurr0y.com/p/lokaliserad-ai-for-utbildning-localized?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Feature flags: Helps devs test on production (kinda) with AWS load balancer]]></title><description><![CDATA[The devs were going to do it regardless, this just makes it legal.]]></description><link>https://blog.ankurr0y.com/p/feature-flags-helps-devs-test-on</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/feature-flags-helps-devs-test-on</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sun, 18 Aug 2024 20:41:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EX21!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In recent times - and by recent times, I mean last month - we&#8217;ve had some incidents in the development world (Crowdstrike), where a feature has been launched without proper testing or with incomplete testing which has had some unforeseen consequences (like shutting down every flight in the world).</p><p>Testing is important, but it is merely one layer in a multi-layered approach that should be applied to applications on scale to ensure that something like Crowdstrike never happens. The layer we&#8217;re going to talk about today is feature flags. Now I have gone into even greater detail on the topic in my book (<em><a href="https://www.amazon.com/Hands-Python-DevOps-streamline-automation/dp/1835081169">insert shameless plug here</a></em>), but in this blog we can look at it through the eyes of a service that I initially learned the technique through: AWS Load Balancer.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>What is a load balancer?</h1><p>A load balancer essentially distributes web traffic between multiple different targets based on certain criterion. It could, for example, be the connection protocol (HTTP, HTTPS), location, cookies and many other factors. The motives behind it can be different as well (like with out case of feature flags) but the primary goal is the proper distribution of web traffic.</p><p>I discovered load balancer when I was a developer and DevOps guy as just a tool to be used to make sure your servers receive a balanced amount of traffic and that no server is overloaded. But, I discovered all of the other applications as well, including testing ones like A/B testing. However, the use of feature flags was the thing that really caught my eye. It was so simple, yet so ingenious, really.</p><h1>Feature flags with a load balancer</h1><p>I&#8217;ll just start by stating that this is probably the simplest way to create a feature flag, and probably not the most efficient. But, I wanted to showcase it, because it is a good way to get to know how feature flags operate. Here&#8217;s the scenario:</p><ul><li><p>There are two different forms of an application: one is for secure usage (HTTPS) and another is for non-secure usage (HTTP).</p></li><li><p>These applications must redirect to different target groups based on the HTTP and HTTPS criteria.</p></li></ul><p>In the AWS Console, go to AWS Load Balancer and from the <strong>Create Load Balancer </strong>button dropdown and select <strong>Application Load Balancer.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EX21!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EX21!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 424w, https://substackcdn.com/image/fetch/$s_!EX21!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 848w, https://substackcdn.com/image/fetch/$s_!EX21!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 1272w, https://substackcdn.com/image/fetch/$s_!EX21!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EX21!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png" width="1081" height="319" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:319,&quot;width&quot;:1081,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47806,&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_!EX21!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 424w, https://substackcdn.com/image/fetch/$s_!EX21!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 848w, https://substackcdn.com/image/fetch/$s_!EX21!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.png 1272w, https://substackcdn.com/image/fetch/$s_!EX21!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1d52cd6-ce6b-4c35-9f7b-0ff5cd385909_1081x319.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 aria-hidden="true" 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><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>Give the load balancer a name, and keep all the remaining settings the same until <strong>Listeners and routing. </strong>You&#8217;ll need two different target groups to route to. They can be empty.</p><p>The default has an HTTP route with an open 80 port which we can configure to have a target group like so:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZqAQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 424w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 848w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 1272w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png" width="1081" height="319" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:319,&quot;width&quot;:1081,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33460,&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_!ZqAQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 424w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 848w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.png 1272w, https://substackcdn.com/image/fetch/$s_!ZqAQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cc547a5-0c04-495e-8704-25fe1c94db03_1081x319.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 aria-hidden="true" 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><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>Then you can add the HTTPS listener and the appropriate target group.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ohSq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ohSq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 424w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 848w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 1272w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ohSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png" width="1099" height="211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:211,&quot;width&quot;:1099,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19143,&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_!ohSq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 424w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 848w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 1272w, https://substackcdn.com/image/fetch/$s_!ohSq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ebf630e-6649-4ab8-90c8-76f084aa9919_1099x211.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Keep everything else the same, they&#8217;re important, but not needed for this little exercise. Click the final button to create the load balancer.</p><h1>Conclusion</h1><p>The final load balancer will now route users based on the protocol they use to access the endpoint. You can see a resource map that looks something like this under <strong>Resource Map &#8594; Overview: </strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ih-5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ih-5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 424w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 848w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 1272w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ih-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png" width="1056" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49480,&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_!Ih-5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 424w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 848w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.png 1272w, https://substackcdn.com/image/fetch/$s_!Ih-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a4693ce-5df8-4a6e-875a-b37ca7974881_1056x398.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 aria-hidden="true" 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><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>It shows diagrammatically the routing of the resources based on protocols. And that&#8217;s what feature flags are. Really, its that simple. But it is quite effective. Try it out.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/feature-flags-helps-devs-test-on?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading The Field of Possibilities! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/feature-flags-helps-devs-test-on?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.ankurr0y.com/p/feature-flags-helps-devs-test-on?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Application Transactional Data Design (aka when to use points over currency)]]></title><description><![CDATA[I got the idea for this in an Irish pub. Go figure.]]></description><link>https://blog.ankurr0y.com/p/application-transactional-data-design</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/application-transactional-data-design</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sat, 10 Aug 2024 17:58:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ed40c5d3-c469-4463-b365-7ad970594045_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently discovered the website <a href="http://homeexchange.com">homeexchange.com</a>. The concept behind it is interesting, but also incredibly effective for what they are trying to achieve. I will go into that soon, but the other concept that really fascinated me about the site was the concept of GuestPoints (GP), which - along with the enforcement of the rest of these unwritten social rules - creates an intriguing dynamic.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>homeexchange.com and its GuestPoints system</h1><p>Here&#8217;s how it works. You go to the website and you tell someone, &#8220;I would like to exchange house keys with you, please.&#8221; You agree on the dates and the basic rules and stuff and you&#8217;re good to go. There&#8217;s ways, of course, to make sure that you are on your best behavior with someone else&#8217;s property. There are ratings that you get by the owner of the apartment regarding how well you took care of their apartment. You essentially depend on the respectfulness of strangers, but it turns out that this is a powerful force. Additionally, the temptation of a free vacation home does keep people in check. Really fascinating stuff.</p><p>But, there are ways other than a direct exchange by which you can get properties, and this is where the GuestPoints system comes in. Every day that someone stays in your home, you get a certain amount of GuestPoints and at some point, you can exchange your GuestPoints for stays at places instead of exchanging homes. You still have to be on your best behavior because the home owners can reject your offer, but that gives you the ability to rent out your home without taking one in return and vice versa. The points system further rewards good behavior since the better you&#8217;re rated, the more likely you are to get a home you want with your points.</p><p>But that left me with the question: &#8220;What made this so effective?&#8221;. And I realized the scenarios where this is effective and when it isn&#8217;t. Let&#8217;s explore that.</p><h1>C2C vs B2C or B2B systems for points</h1><p>In short, points as a primary system works perfectly when it is used on a platform between individual customers (Consumers to Consumers or C2C). It&#8217;s basically a more advanced form of cavemen from different tribes bartering for goods. A handshake deal, except now there is a ledger that makes sure it is known if you don&#8217;t keep your end of the deal. This works because of the same reason social media works: likes create visibility and other benefits.</p><p>However, the reason this does not work with businesses is that businesses require collateral or the exchange of assets. Basically, to get something from a business, you must give them something that they can then use in another trade, like money. An asset can be bought and sold between businesses and consumers over and over again, sometimes even bought with a different type of currency like reward points, but that is the cycle that those assets are in. This system is not possible with home exchange because the currency you are trading with each other is essentially your reputation, and you can&#8217;t just let anyone else use that, that never benefits you.</p><p>In conclusion. when designing an application where you want people to behave with each other or at least not be mean to each other, use points as a reward, or bans as a punishment like Discord does. For any venture that is larger or more complex, use money.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/application-transactional-data-design?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading The Field of Possibilities! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/application-transactional-data-design?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.ankurr0y.com/p/application-transactional-data-design?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Using a Looker Studio Extract Data as a data source for faster, filtered querying]]></title><description><![CDATA[I love finding obscure stuff, its my favorite kind of stuff.]]></description><link>https://blog.ankurr0y.com/p/using-a-looker-studio-extract-data</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/using-a-looker-studio-extract-data</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Thu, 01 Aug 2024 07:31:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c7305b3a-01e0-4a4f-964e-994e64d691a1_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Looker Studio is a member of Google Cloud&#8217;s Looker family. It is the smallest of the children, but that doesn&#8217;t mean it is without its uses. It connects to a large number of data sources and can pull data from all of them. It can even update live data. However, the tool is only half the equation when it comes to performing data operations. The other half comes from the data itself (more specifically, the nature of the data). </p><p>In many cases, a live updating data source is unnecessary, with a snapshot of the data in a certain state being preferred. For example, if you wanted a chart that had all of the sales data upto the 8th of July, but you still needed to update the sheet for subsequent sales, you&#8217;d need to make a separate data operations location for the data upto the 8th. This is where a little data connector called Extract Data comes in handy.</p><p>For today&#8217;s demonstration we will use this <a href="https://docs.google.com/spreadsheets/d/18xH9wcINAhjOQsyRswefaoHrsoCpKIR6XiYtuWnHAXU/edit?gid=1972685948#gid=1972685948">public sheet</a> which contains all of the data from the 2023-24 NFL season (I really like NFL football, go Texans). We will import and refine the dataset and then create a Extract Data from it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Extact Sheet Data</h1><p>Go to <a href="http://lookerstudio.google.com">lookerstudio.google.com</a> and create a new Data source.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sXIb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sXIb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 424w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 848w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 1272w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sXIb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png" width="265" height="285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:285,&quot;width&quot;:265,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:13622,&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_!sXIb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 424w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 848w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.png 1272w, https://substackcdn.com/image/fetch/$s_!sXIb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b3bc433-5458-4014-b7e8-dac09ce4d415_265x285.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 aria-hidden="true" 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><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 will be presented with a number of data source options. The two relevant ones for this are Google Sheets and Extract Data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3PQ3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3PQ3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 424w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 848w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 1272w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3PQ3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png" width="1337" height="616" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1337,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111934,&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_!3PQ3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 424w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 848w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.png 1272w, https://substackcdn.com/image/fetch/$s_!3PQ3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e809c6-4101-4f3f-91fa-bf442e3e0921_1337x616.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 aria-hidden="true" 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><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>Click on Google Sheets first and in the URL for the Select Connector option add the URL of the Google Sheet from before. You&#8217;ll get something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mMrB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mMrB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 424w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 848w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 1272w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mMrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png" width="1337" height="616" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:1337,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66980,&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_!mMrB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 424w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 848w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.png 1272w, https://substackcdn.com/image/fetch/$s_!mMrB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c7afb77-d77f-48c9-9f9a-c38cc65a0f34_1337x616.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 aria-hidden="true" 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><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>Change nothing else here. On the top right, you&#8217;ll see a <strong>Connect </strong>button, click on it to connect to and read this public sheet&#8217;s data. You&#8217;ll see data like this:</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_!dgj_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dgj_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 424w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 848w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 1272w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dgj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png" width="754" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:754,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65774,&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_!dgj_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 424w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 848w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.png 1272w, https://substackcdn.com/image/fetch/$s_!dgj_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdc8e920-095d-4d9a-b580-1d8208fcba24_754x786.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 aria-hidden="true" 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><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 have 30 dimensions and most of them will be irrelevant to our diagram in Looker Studio, so we&#8217;ll remove them in Extract Data. For now, lets keep everything. In Looker Studio, we&#8217;ll find a data source with the name of the sheet that we took the data from.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lZoc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lZoc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 424w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 848w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 1272w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lZoc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png" width="1456" height="56" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:56,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7292,&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_!lZoc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 424w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 848w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 1272w, https://substackcdn.com/image/fetch/$s_!lZoc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c84c887-13e5-49c7-86db-4715d0f036cc_1598x61.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h1>Use Extract Data</h1><p>Now, lets create a data source again, this time choosing Extract Data. Your data source will be in a list of selectable data sources. Select it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kMiB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kMiB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 424w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 848w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 1272w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kMiB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png" width="424" height="431" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/418468a1-c2aa-4bed-abeb-932052957e80_424x431.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:431,&quot;width&quot;:424,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30847,&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_!kMiB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 424w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 848w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.png 1272w, https://substackcdn.com/image/fetch/$s_!kMiB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F418468a1-c2aa-4bed-abeb-932052957e80_424x431.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 aria-hidden="true" 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><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 simplicity, add Game Winner, Game Loser, Home Team and Away Team as the Dimensions to be extracted, that is all we&#8217;ll use. Click Save and Extract on the right. Then, click Create Report on the top right of your screen.</p><p>This will create Looker Studio view with a pre-populated table like so:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!quW3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!quW3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 424w, https://substackcdn.com/image/fetch/$s_!quW3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 848w, https://substackcdn.com/image/fetch/$s_!quW3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 1272w, https://substackcdn.com/image/fetch/$s_!quW3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!quW3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png" width="1456" height="526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:526,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102521,&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_!quW3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 424w, https://substackcdn.com/image/fetch/$s_!quW3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 848w, https://substackcdn.com/image/fetch/$s_!quW3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.png 1272w, https://substackcdn.com/image/fetch/$s_!quW3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d413b3b-78df-4be3-b237-73a64bba39be_1914x692.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 aria-hidden="true" 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><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>Very clear, concise, and useful. This is great for data that needs to remain static, or data that you know will not be updated. This is, of course, the simplest of methods and functions, but you can get as complex with it as your imagination allows. You can use Extract Data on other data sources as well as long as they can be extracted to Looker Studio.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/using-a-looker-studio-extract-data?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thank you for reading The Field of Possibilities. This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/p/using-a-looker-studio-extract-data?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.ankurr0y.com/p/using-a-looker-studio-extract-data?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Writing my book part three: The final draft and beyond]]></title><description><![CDATA[It's been a while on this series, but now that I have renewed the journey towards a new book, it felt like the time to finish it.]]></description><link>https://blog.ankurr0y.com/p/writing-my-book-part-three-the-final</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/writing-my-book-part-three-the-final</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Tue, 16 Jul 2024 13:55:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e87619a0-93ae-405d-9275-fb9b46655737_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So, what are the steps that go into making a book draft into a full-on published book? Turns out, a lot. In the time between the last blog in this series and now, I have talked to a lot of other writers, very talented writers and the one thing that all of us could relate on was the publishing process. Everyone has their own style, but the process of actual distribution is very similar amongst them and a good talking point but I digress. I will now get into the final steps I had to take with regards to the publishing and distribution of my first book.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Final draft</h1><p>But, in short, a lot of the work involved the correction of grammatical errors and spelling errors by copywriters (and with how I write, I leave a few of those behind), finishing up all of the reviews from the technical reviewers, and approving the general layout for the book. After achieving all of this, the only thing left was to wait a few weeks for the release. However, the journey with this book didn&#8217;t end there.</p><h1>Post-publishing</h1><p>When a book is published, its just that moment, one second it is unpublished and the next it is published. I loved the feeling of having a published book, but now I lived in a world where the book had already been published. So, I had to get to work, promoting the book and asking some of my contacts to review it. That work continues to this day, but the biggest thing it did for me was that it gave me insight into the process of how to take a product that you can call your own and distribute it to people who want it.</p><p>After the book was published, I got a lot of messages from people telling me that they had really liked the book and that they were using it for some of their work-related tasks. That gave me a sense of accomplishment that was very unique in terms of feeling (I cannot describe it, I just know I hadn&#8217;t felt it before). But it also made me very grateful for the network of people involved in the publication of the book and the network that I had who were willing to review it.</p><p>The overall reception for the book itself has been great. It has been so good, that I have now started writing another one! It will take us a while, this one will be a longer publication, but I am excited. And that is why I am leaving you with this one concluding thought: Write. Seriously, writing helps with a lot of things, not just professionally, but personally, emotionally, its a great outlet and a great way to keep yourself focused. I recommend it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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[Reviewing "Mastering AWS Security" by Laurent Mathieu]]></title><description><![CDATA[Excellent book, great for all cloud professionals who are looking to deep dive into AWS Security.]]></description><link>https://blog.ankurr0y.com/p/reviewing-mastering-aws-security</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/reviewing-mastering-aws-security</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Fri, 28 Jun 2024 19:21:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b8155066-9f9d-48d5-b406-dc5baa6b1f8d_200x247.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I became an author, it was a pleasure to see my name on the cover of a book, but it also reinforced my respect and appreciation of other authors and how much effort they put into their works. When I was asked to review the book Mastering AWS Security, I did so knowing the great effort the author had put into it and knowing the challenges of security, especially in a cloud environment with critical infrastructure. But Laurent Mathieu&#8217;s book serves excellently in this regard.</p><p>I decided to read through the book with an open mind: the mind of someone who hadn&#8217;t ever seriously considered the topic of security in AWS or was a novice in the field and wanted to improve themselves in this regard. And I must say, for someone like that, this book is a perfect escalation from the most basic of security concepts into advanced security strategies with explanations on how to implement them included.</p><p>The book itself is divided into three sections, the first of which deals with AWS&#8217; security model, security services and other basic concepts, setting the foundation for security-based learning. The next section deals with deploying actual workloads in AWS that follow these practices and the book has quite a few examples on how to implement everything you learn in a pragmatic approach that can be copied over into any workload the reader may be thinking about implementing. The final section deals with the maintenance, update and automation of security practices and features which provides faster threat response times and easier threat detection. An excellent layout with great content.</p><p>I whole-heartedly recommend this book. It is an excellent read for people who want to have a guide for their AWS Security journey. I believe that if you really want to learn about security in AWS, this book would be a good investment.</p>]]></content:encoded></item><item><title><![CDATA[The Big Small BigQuery Guide - Basics Part Two Point Three - Basic SDK operations ]]></title><description><![CDATA[SDK operations for a cloud environment ... an interesting concept. Not because code is bad, it's just really weird, y'know? Like wiping while standing up (or sitting down for you maniacs out there).]]></description><link>https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-fad</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-fad</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Thu, 20 Jun 2024 14:50:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/644b8d99-c65d-4b4c-9426-ead4bea86a99_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So far, we&#8217;ve covered two ways to use the functionality of BigQuery (<a href="https://ankurr.substack.com/p/the-big-small-bigquery-guide-basics-141">here</a> and <a href="https://ankurr.substack.com/p/the-big-small-bigquery-guide-basics-605">here</a>) and they have - both of them - given us different perspectives on the BigQuery service. There is now a third and final perspective that we must understand to fully cover the basics of BigQuery: SDKs. Using code and SDKs to operate on BigQuery can be a preference for a lot of people who come from that background. It is also very useful for API integrations with BigQuery, of which there are many.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Introduction</h1><p>If you are a software developer or, at least, someone who likes to write code, you can more than likely find the way to install and use BigQuery in your programming language right <a href="https://cloud.google.com/bigquery/docs/reference/libraries">here</a>. I&#8217;m not bogging you down with these details, this is going to be a short blog. All you need to run a BigQuery API (as I will in Python) is the query that you are about to run and a few lines of code.</p><h1>Code</h1><p>Let&#8217;s reuse the code that we used for the &#8220;Select All&#8221; query from <a href="https://ankurr.substack.com/p/the-big-small-bigquery-guide-basics">the very first blog</a>. Simply put that query in the query slot and you&#8217;ll receive the exact same result.</p><pre><code>from google.cloud import bigquery

client = bigquery.Client()

query = """
    SELECT * FROM `bigquery-public-data.google_trends.top_terms` LIMIT 1000
"""
rows = client.query_and_wait(query) .

print("The query data:")
for row in rows:
    print(row)
</code></pre><p>And that&#8217;s what you get. You may manipulate the data in any way you like. This can be useful for things like custom machine learning algorithms and training said algorithms (though you may find there are easier ways to do this in BigQuery itself).</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4tMQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4tMQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 424w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 848w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 1272w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4tMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png" width="1456" height="278" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:278,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162802,&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_!4tMQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 424w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 848w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 1272w, https://substackcdn.com/image/fetch/$s_!4tMQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bf9e898-eb69-4e42-8765-58bc757200ce_1891x361.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><h1>Conclusion</h1><p>SDKs are useful for a lot of things. Not just in BigQuery, but with most services. The use case for them in BigQuery in particular depends on your creativity. Big, useful concepts like IaC were born from people using this kind of thinking. So, to conclude, I would like to encourage you to be creative and start from a blank canvas. More pearls of wisdom next time.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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[Writing my book part two: The First Draft]]></title><description><![CDATA[I don't mean like an NFL or NBA draft, or draft beer. Now that I think about it, why is it called a draft?]]></description><link>https://blog.ankurr0y.com/p/writing-my-book-part-two-the-first</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/writing-my-book-part-two-the-first</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sat, 25 May 2024 09:25:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/efe4645e-480b-4f37-a258-9686f30fc746_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Once again, we&#8217;re starting with the shameless plug, <a href="https://ankurr.substack.com/p/writing-my-book-part-one-the-beginning">now with better linking</a>. </p><p>So, the first draft, that all-important initial completion of your book. That feeling of, &#8220;Okay, I said that I&#8217;m gonna do this thing and I did the thing&#8221;. Now getting to this point when you have all the things that you want to write already planned out and ready should be a piece of cake, right? Well, that is just not the case.</p><p>Like I have said before, it has been a difficult journey writing this book. Perhaps difficult is not the word, challenging is a better description. The challenge that I faced was that I was doing all of this while moving to a new country, finding a new job, going through all my grad school stuff and essentially starting a new chapter in my life (I cover some of it in the book). But these weren&#8217;t the only challenges. We&#8217;re going to take a close look at the process of writing each chapter and how I had to manage the whole writing process and juggle my entire life at the same time.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>The chapter-by-chapter process</h1><p>Here&#8217;s how writing a chapter works when you&#8217;re writing a technical book:</p><ul><li><p>Submit initial chapter draft.</p></li><li><p>Have it looked through by the editor. They will judge the flow of the chapter and try to make it better (this was really helpful).</p></li><li><p>Submit the review corrections, if there is something that hasn&#8217;t been addressed, it will come back to you and you keep doing this until all the comments have been addressed.</p></li><li><p>The draft is then submitted for technical review where a couple of your peers will look through it and give their opinions in a questionnaire.</p></li><li><p>You then get all this information and make corrections where necessary.</p></li><li><p>Then a final edit by copy editing people.</p></li><li><p>Then a final print version is created with graphics and all the bells and whistles.</p></li></ul><p>So that&#8217;s how we do that. And you&#8217;ll notice that I have used bullet points here. That&#8217;s an effective technique for technical books in terms of dividing information. Pro tip. But this is the technical aspect of my techno-philosophical book. So you may be wondering about the human aspect, the aspect of me. Well that&#8217;s what I&#8217;m going to tell you. </p><p><em>(My editor encouraged these little paragraph ending sentences, as he said they helped transition topics very well. He was right, it made the writing flow incredibly well, made me a better writer.)</em></p><h1>The author&#8217;s journey</h1><p>This book project has been on the same journey as me. It came from Nepal to Sweden with me and I have written it through the vast changes in my life that occured during my time writing it. For a while, it was the most consistent thing in my life. And mentality-wise, having that consistent thread when you are essentially starting a new life was very important to me in my initial months here in Sweden. In a way the book helped me settle down. It was an interesting topic to be brought up in conversation as well, which helped break a lot of ice.</p><p>I wrote much of the book indoors during the harsh Swedish winter when temperatures could get as low as -30 degrees Celsius. I think the journey of writing the book itself and all of the challenges that came about, all of the changes I had to make on the original vision, all of the things that I had to change in collaboration, helped make me a better author and a more determined person. In doing so, I made a great many connections and I re-enforced what I believed and what I wanted to share with the world.</p><h1>Conclusion</h1><p>We&#8217;re in the final stretch folks. I haven&#8217;t gone into the technical details of the book, because if you want those: read the book. But I hope this blog has helped you understand the technique and the human side behind the book writing process. The final part of this blog series will focus on the final stretch of the writing process and everything that came out of it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[The Big Small BigQuery Guide - Basics Part Two Point Two - Basic CLI operations]]></title><description><![CDATA[I'm just copying the title over and changing them slightly. Why have I created such a confusing naming system?]]></description><link>https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-605</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-605</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Sun, 19 May 2024 18:09:30 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c709c534-e112-45f7-a3c2-2fbaf45353a1_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Okay, this is where perhaps a section of the readers will diverge. I will say that there are advantages to each of the three approaches (CLI, UI, SDK) and that you should consider all of them for thorough understanding of BigQuery. But, usually, one will suffice for you use case. As I mentioned in my <a href="https://ankurr.substack.com/p/the-big-small-bigquery-guide-basics-141">previous article</a> these are just a drop in the bucket, and the approach mostly comes down to your personal preference.</p><p>The crux of the CLI commands for BigQuery is the BigQuery command line tool bq which is used to execute BogQuery commands from the command line. Another big piece of this is the Cloud Shell environment in GCP which gives you a terminal with the command line tools pre-installed in the GCP UI. So let&#8217;s dive into the tool and a few simple operations we can do with it.</p><h1>The <em>bq </em>CLI tool</h1><p>The <code>bq </code>command line tool is part of the <code>gcloud </code>set of command line tools. Why is it not the same starting command as the rest of Google Cloud? No clue. But it makes the specific documentation for BigQuery easy to look for. You can find the reference page <a href="https://cloud.google.com/bigquery/docs/reference/bq-cli-reference">here.</a></p><p>Installing the tool is a matter of finding a way to install <code>gcloud </code>on your favorite command line. But, the Cloud Shell in GCP comes pre-installed with these tools and pre-configured with the project that you are using. Quite convenient. So that is where we are going to start.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EWZR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EWZR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 424w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 848w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 1272w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EWZR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png" width="903" height="148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:148,&quot;width&quot;:903,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17035,&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_!EWZR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 424w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 848w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 1272w, https://substackcdn.com/image/fetch/$s_!EWZR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09157fb-f4da-429d-9d31-7d262ab1bd0f_903x148.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Basic Commands</h1><p>We&#8217;ll take a look at a few basic commands to get you started. Not much else, just a few commands.</p><h2>Read all datasets</h2><p>The following command reads and lists out the BigQuery datasets:</p><pre><code>bq ls</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Ck2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Ck2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 424w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 848w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 1272w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Ck2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png" width="652" height="134" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:134,&quot;width&quot;:652,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15739,&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_!8Ck2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 424w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 848w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 1272w, https://substackcdn.com/image/fetch/$s_!8Ck2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42134d80-74da-4204-a0d7-fe79832a6c59_652x134.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And there is the BigQuery dataset we created in the last blog. Now, lets create one for this blog.</p><h2>Create a dataset</h2><p>Now, we will use the CLI tool to create a new dataset:</p><pre><code>bq --location=US mk -d \
    --description "From the command line." \
    bigbigsmallsmallqueryquery</code></pre><p>Yes, I know my naming convention is silly, but it entertains me. And you get this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NEqH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NEqH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 424w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 848w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 1272w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NEqH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png" width="632" height="84" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:84,&quot;width&quot;:632,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11545,&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_!NEqH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 424w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 848w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 1272w, https://substackcdn.com/image/fetch/$s_!NEqH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2062b03f-b2d0-4fd3-beae-04895a98bdba_632x84.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Now for the final basic act, we&#8217;re going to import some CSV data into the dataset.</p><h2>Import data</h2><p>This will import data from a file into a BigQuery table of your choice in a dataset. For example:</p><pre><code> bq insert bigbigsmallsmallqueryquery.&lt;TABLE_NAME&gt; &lt;FILE_NAME&gt;.csv</code></pre><p>This will create a table of whatever you name it with whatever the name of the CSV you just inserted in there is. But make sure, its an actual CSV.</p><h1>Conclusion</h1><p>The CLI tool is pretty neat. And you can pretty much do all of the stuff you want in BigQuery, so if you would like to deep dive into it yourself, I&#8217;d say the documentation is quite thorough. The next blog will involve the use of SDKs for the same function.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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[Writing My Book - Part One: The Beginning]]></title><description><![CDATA[That's right, a blog on writing. I can do that now that I'm a professional writer. Please ignore the obvious faux pas' (?) that I will be committing.]]></description><link>https://blog.ankurr0y.com/p/writing-my-book-part-one-the-beginning</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/writing-my-book-part-one-the-beginning</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Wed, 01 May 2024 19:57:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1deef8f3-72cb-4b8b-bd8a-9e0dc0681d6d_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Well, here&#8217;s a blog. Here&#8217;s a blog on writing. And to start it off, shameless plug: https://www.packtpub.com/product/hands-on-python-for-devops/9781835081167 . And that&#8217;s how you do that.</p><p>But, getting a little more serious (and I mean a little), the experience of writing a book has been quite interesting for me. It has helped me grow as a person and has fulfilled a great ambition that I held in my life. It has taught me how to manage my time, how to adapt to situations, how to better receive feedback and many other things. It has been as much a journey of learning as it has been of sharing my own knowledge.</p><p>But share my knowledge I did, and in doing so I discovered the world and something about myself as well. I was challenged creatively, temporally and mentally at times. But the end product is something I can be proud of.</p><p>But before I get to the end, I must go to the beginning. I will - in this blog - show you the start of my journey into the world of authorship and give you some insight on how we got to this point.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>How do you know what to write and how to write it?</h1><p>Short answer is: I didn&#8217;t. I knew I had a lot of knowledge, I knew I had a lot of things to say, I also knew that I wanted to write. That&#8217;s all I knew. That&#8217;s all I had planned. If anyone tells you otherwise about endeavors such as this, that they had it all planned out from the beginning to the end: they are lying. That is not how this works.</p><p>It works like this: you have a vague idea of what you want to do and then you adapt yourself to the rest. That&#8217;s what happened with this book. My publisher, Packt, and I discussed several book ideas before we landed on one that worked for both of us. And honestly, it  was for the best. A lot of my initial book ideas probably wouldn&#8217;t have resulted in as good a product as we got.</p><p>I contacted my publisher through a different book that they had published which had a link on it for where to go to apply to be an author. In fact, here it is: authors.packtpub.com , go ahead, give it your best shot. They contacted me a few days later and that&#8217;s where we began.</p><h1>What it means to write a book</h1><p>What it means is that it&#8217;s a lot of work. That&#8217;s even before the writing starts. Before you write a technical book, you need to have a gameplan on what you will be writing. It may not full reflect the final product that you produce, but it needs to be something you can follow in your writing. Then, of course, you have your team which includes: the project manager, the editor, the technical reviewers, proofreaders and the marketing team. All of them were integral in getting the book to where it is now.</p><p>It&#8217;s a team effort and it was great working in that team. But that required respect and an understanding from everyone of the deadlines for the book and the agreed contract for the book. Like I said, its a lot of effort. But this was only the beginning.</p><h1>Getting started</h1><p>I had a tough time ironing out the first chapter and what it had to say about the overall book, but that was probably the most fun I had had writing something up to that point. It was something that was completely mine and also something that would be reviewed and seen by professionals and serious people in general. So naturally, it is full of jokes and insider references.</p><p>But that first chapter set the tone in how I would work on the book along with everyone on the project and it helped us get into the groove regarding how we wanted to proceed with Python in DevOps. It still wasn&#8217;t smooth sailing from there though, there are always obstacles, but we will discuss them and how they made the book better later.</p><h1>Conclusion</h1><p>It is said that during an opening in chess, you have to be a robot. Do the right things that you have done thousands of times before in order to put yourself in the position to win. And that does apply to writing as well. Figuring out your team, setting the tone, all of this helps. But that doesn&#8217;t stop the challenges from coming and come they did. I will discuss the middle in the next installment of this blog.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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 Big Small BigQuery Guide - Basics Part Two Point One - Basic UI operations]]></title><description><![CDATA[Confusing title theme (and yes, I will be writing them out non-numerically) continues, but so does the cool content. So take them as they are. :)]]></description><link>https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-141</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics-141</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Fri, 26 Apr 2024 14:38:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/726ef987-2bbc-4b86-8051-54edb7d8500e_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Alright, in my <a href="https://ankurr.substack.com/p/the-big-small-bigquery-guide-basics">previous post</a> I gave you a nice rundown, a flittering glance if you will, on BigQuery and all of the big things that it can do. But that was just a glance, a drop in the bucket. This article will also just be a drop, but two drops is double the knowledge, so, good for you. </p><p>I&#8217;m going to do a three article mini-series within this article series to describe the methods of interaction with BigQuery. Namely, the three primary ways one performs actions on BigQuery: UI (User Interface), CLI (Command Line Interface) and SDKs (Software Development Kits). We&#8217;ll start with the UI in this article.</p><p>The User Interface for any cloud is probably the part of the cloud that has the least thought put into it (barring some exceptions). They&#8217;re all meant to be bare bones, simple, to the point, some might even say ugly. That is because most of the work in the cloud is done under the surface, through API calls to servers and such. But that doesn&#8217;t mean that the UI is useless, nor does it mean that it should be ignored. Especially in a data service like BigQuery, where the visualization of data can play such a significant role.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>The BigQuery console</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UfcB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UfcB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 424w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 848w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 1272w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UfcB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png" width="573" height="245.96497252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1456,&quot;resizeWidth&quot;:573,&quot;bytes&quot;:146380,&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_!UfcB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 424w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 848w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.png 1272w, https://substackcdn.com/image/fetch/$s_!UfcB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4d496dc-674b-478a-9ff0-4c1799a786b4_1892x812.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 aria-hidden="true" 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><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 console is meant to replicate similar UI consoles that you would have in a database software like SQL Workbench. It brings familiarity with people who have used such consoles in the past. Let&#8217;s start with the most basic operation, which would be creating a dataset ( a task that is probably the easiest in this interface).</p><h1>Creating a dataset</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8kq-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8kq-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 424w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 848w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 1272w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8kq-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png" width="424" height="268.07246376811594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:349,&quot;width&quot;:552,&quot;resizeWidth&quot;:424,&quot;bytes&quot;:40679,&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_!8kq-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 424w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 848w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.png 1272w, https://substackcdn.com/image/fetch/$s_!8kq-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5c03438-133d-4243-af8a-b0a390fa1d51_552x349.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 aria-hidden="true" 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><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>Hit those three dots and click the button to create the dataset. Give it a recognizable name and create your empty dataset.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ZKZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 424w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 848w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png" width="348" height="408.4633204633205" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:518,&quot;resizeWidth&quot;:348,&quot;bytes&quot;:41880,&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_!5ZKZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 424w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 848w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.png 1272w, https://substackcdn.com/image/fetch/$s_!5ZKZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F036a5292-730c-45c6-9177-79dc9eda56b5_518x608.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 aria-hidden="true" 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><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 will then see the details of the dataset along with permissions, the option to create a table, and the option to copy and delete the dataset if needed. It&#8217;s overwhelming, I know. That&#8217;s why this blog series is going to be massive.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rgz6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rgz6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 424w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 848w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 1272w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rgz6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png" width="563" height="240.3775582215949" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:605,&quot;width&quot;:1417,&quot;resizeWidth&quot;:563,&quot;bytes&quot;:54639,&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_!Rgz6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 424w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 848w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.png 1272w, https://substackcdn.com/image/fetch/$s_!Rgz6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb90c2f82-c6a2-4db1-bffc-42dda3e10321_1417x605.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 aria-hidden="true" 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><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>Let us now create a table. There are literally a thousand different iterations on how you can do it. I will do it with a fairly simple use case: the CSV import. It is a favorite of data scientists.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZLJL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZLJL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 424w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 848w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 1272w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZLJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png" width="489" height="399.62214411247805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:930,&quot;width&quot;:1138,&quot;resizeWidth&quot;:489,&quot;bytes&quot;:69618,&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_!ZLJL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 424w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 848w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.png 1272w, https://substackcdn.com/image/fetch/$s_!ZLJL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fc8b3ba-39a3-42f7-85d8-5aeb8d7366e4_1138x930.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 aria-hidden="true" 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><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>And there is another massive block of information. I&#8217;ve simplified it and used a mock CSV that I had along with an auto-detect for schemas (useful if you&#8217;re not a control freak). We then get the details of the table, I&#8217;ve put it on the preview tab to show how it displays the data:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kdBT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kdBT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 424w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 848w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 1272w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kdBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png" width="507" height="293.109375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:592,&quot;width&quot;:1024,&quot;resizeWidth&quot;:507,&quot;bytes&quot;:90558,&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_!kdBT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 424w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 848w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.png 1272w, https://substackcdn.com/image/fetch/$s_!kdBT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632c6d7d-dff3-468d-bcb3-143495bcbcd4_1024x592.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 aria-hidden="true" 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><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> And &#8230; that&#8217;s it. That&#8217;s it for creating a simple table for now. But when we get back to the UI, there will be more. But for now, this is the first step. This is a little abrupt, but, again, think of this as just a drop in the ocean.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[The Big Small BigQuery Guide - Basics Part One]]></title><description><![CDATA[I love organizational nomenclature that I make up on the spot that will have consequences for future articles which I probably should have put more thought into.]]></description><link>https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-big-small-bigquery-guide-basics</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Tue, 26 Mar 2024 08:25:24 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a2272f1a-a276-44d8-bc32-b73a03f2d0a6_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>BigQuery, huh? What a thing it is. But you may be asking, what is it? And that is a good question. You see, I am writing these first few sentences in slightly confusing prose because &#8230; some people do get confused about BigQuery, and the extent of its abilities. That&#8217;s why this series is going to be as long as it can be (which is code for &#8220;I have no idea how long this is going to go&#8221;).</p><p>But, putting all that aside, let&#8217;s have a more concrete picture of what BigQuery is. BigQuery is a top of the line data warehousing and querying service which is queried and functions using an SQL-based language. You can query and import just about any form of structured or sem-structured data into BogQuery that you would want. You can do it with practically every service in the Google ecosystem and most services in data hungry ecosystems like Microsoft, Oracle, AWS and all other platforms that hold data.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>BigQuery can act as a centralized repository system for your data, a storage system for archival data that may need to quickly be queried and even a way to create machine learning models from your data. And all of that will come with time, but for now we will attempt the most basic of BigQuery operations: reading data.</p><p>Before we begin, you should have a Google Cloud account with a project created with it. You should also have the BigQuery API enabled on that project. All of that is free, it just needs a card to activate.</p><h1>A simple walk to a SELECT * call</h1><p>First off, SELECT * is usually a bad idea. That&#8217;s not what you&#8217;re supposed to do, you just do it because you&#8217;re lazy. That being said, I am a bit lethargic. But I will give the steps for a simple, sustainable SELECT * call just to take a look at it. </p><p>The first question would be: how do you get to the console? You can use the panel to the left that has BigQuery on it. But, if you&#8217;re in the landing page of a project, just look right in front of you:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YchU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YchU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 424w, https://substackcdn.com/image/fetch/$s_!YchU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 848w, https://substackcdn.com/image/fetch/$s_!YchU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YchU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YchU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png" width="827" height="80" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0303c111-06fa-45f1-9896-417a83525fd2_827x80.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:80,&quot;width&quot;:827,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8238,&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_!YchU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 424w, https://substackcdn.com/image/fetch/$s_!YchU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 848w, https://substackcdn.com/image/fetch/$s_!YchU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 1272w, https://substackcdn.com/image/fetch/$s_!YchU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0303c111-06fa-45f1-9896-417a83525fd2_827x80.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>They push it as one of their Big 4 services on Google Cloud, if you will. So, when you click on the button that says BigQuery, you get to the console:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4_sW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4_sW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 424w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 848w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 1272w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4_sW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png" width="1403" height="805" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:805,&quot;width&quot;:1403,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98144,&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_!4_sW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 424w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 848w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.png 1272w, https://substackcdn.com/image/fetch/$s_!4_sW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a455ebc-d185-47a5-8b3b-5bb462075b15_1403x805.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 aria-hidden="true" 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><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>Let&#8217;s let the console hold our hand for now. Let&#8217;s use that Google Trends Demo Query that is so prominently displayed and click OPEN THIS QUERY.  Which will open a tab with this query:</p><pre><code>-- This query shows a list of the daily top Google Search terms.
SELECT
   refresh_date AS Day,
   term AS Top_Term,
       -- These search terms are in the top 25 in the US each day.
   rank,
FROM `bigquery-public-data.google_trends.top_terms`
WHERE
   rank = 1
       -- Choose only the top term each day.
   AND refresh_date &gt;= DATE_SUB(CURRENT_DATE(), INTERVAL 2 WEEK)
       -- Filter to the last 2 weeks.
GROUP BY Day, Top_Term, rank
ORDER BY Day DESC
   -- Show the days in reverse chronological order.</code></pre><p>A great query, with all the spice and mustard you could ask for. Also descriptive comments. If you want to write a query, this one is a great example. But I did promise you a SELECT * didn&#8217;t I?</p><p>In the explorer bar of the table, hit the three dots and select the <code>Query </code>option.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zRYA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zRYA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 424w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 848w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 1272w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zRYA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png" width="341" height="397" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:397,&quot;width&quot;:341,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17601,&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_!zRYA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 424w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 848w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.png 1272w, https://substackcdn.com/image/fetch/$s_!zRYA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3af9df1b-83fb-4020-9c23-2984c4b89710_341x397.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 aria-hidden="true" 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><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>Let&#8217;s now see what that query is:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SHIx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SHIx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 424w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 848w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 1272w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SHIx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png" width="1420" height="91" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:91,&quot;width&quot;:1420,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21633,&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_!SHIx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 424w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 848w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 1272w, https://substackcdn.com/image/fetch/$s_!SHIx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc06ec85-5ea4-48fb-bf2a-4b848136d171_1420x91.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And if you can&#8217;t see that:</p><pre><code>SELECT FROM `bigquery-public-data.google_trends.top_terms` WHERE refresh_date = "2024-03-26" LIMIT 1000</code></pre><p>Just take out the WHERE and bring in the * and we get:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iqYr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iqYr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 424w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 848w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 1272w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iqYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png" width="1420" height="246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:246,&quot;width&quot;:1420,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48542,&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_!iqYr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 424w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 848w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 1272w, https://substackcdn.com/image/fetch/$s_!iqYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23dcfffc-6434-4293-a751-352ce72f8e1a_1420x246.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Beautiful, that&#8217;s what we wanted. And that LIMIT keeps it in check. Awesome, right? </p><h1>What&#8217;s Next?</h1><p>This was just the beginning. As you saw with all those fancy buttons and tabs, there is a thousand things to do in BigQuery and we will attempt to do most of them in this blog series. UI, CLI, API, FBI, whatever way you want to we will figure this out. With that being said, explore some stuff yourself, it is incredibly fascinating in its depth.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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[Webhooks for dummies]]></title><description><![CDATA[Dummies, remember, don't put the hooks in your mouths.]]></description><link>https://blog.ankurr0y.com/p/webhooks-for-dummies</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/webhooks-for-dummies</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Fri, 08 Mar 2024 10:44:53 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/634ad5b6-4698-4785-91a6-615cceafa5ae_1024x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Webhooks are curious concepts and ones that I had a hard time figuring out at first. It&#8217;s a big leap - sort of like walking backwards - but its one that can be useful because it turns the entire conceptual workflow of a solution on its head. Instead of you calling an API, someone calls your API. And there are a lot of uses for this, so we&#8217;re going to dive right in &#8230;.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>API calls</h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tqqQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tqqQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tqqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png" width="627" height="352.6875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:627,&quot;bytes&quot;:268186,&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_!tqqQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!tqqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e9a55e-e3ab-4bbe-94e7-1e475d2c7b51_1920x1080.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 aria-hidden="true" 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><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 is how most API calls happen, you call an API that you want information from. This happens across networks and within a program or operating system too. &#8220;You&#8221; can be you, the user or whatever scripts have been written in whatever program. This is  the same concept from the lowest to the highest levels of scripting.</p><p>However, at the highest level, a new concept has emerged based on the event of the API being called itself.</p><h1>APIs on APIs on APIs (Webhooks)</h1><p>Let us consider what an event is in this context. An event is an API being called or triggered. When that occurs, something happens behind the API that logs that such a call has occurred and what exactly has been called. That log can also trigger an event, which can then be used to trigger another API if it can reach that API. And that&#8217;s pretty much how it works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wQhK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wQhK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wQhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:372754,&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_!wQhK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!wQhK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf83085-3120-4206-a4fd-7af20bd2bc55_1920x1080.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 aria-hidden="true" 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><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>And diagrammatically here, you can already see an advantage of webhooks. If you are collecting data or events from multiple sources, you can set up multiple webhooks on one API and handle them that way. The other advantage is, as I mentioned, the reverse flow. If you need something to call your API instead of you having to call that API you can easily achieve this with webhooks.</p><h1>Small example case</h1><p>We&#8217;re now going to look at the webhook for the project management app ClickUp. The API call to use the webhook looks like this:</p><blockquote><p>{</p><p>  "endpoint": "https://yourdomain.com/webhook",</p><p>  "events": [</p><p>    "taskCreated",</p><p>    "taskUpdated",&#8230;.</p><p>  ],</p><p>  "space_id": 1234,</p><p>  "folder_id": 5678,</p><p>  "list_id": 9876,</p><p>  "task_id": "abc1234"</p><p>}</p></blockquote><p>The endpoint is the API that the webhook will call, and the events are the events that will trigger the webhook to call that event and the other IDs specify locations. You need the API key for ClickUp to make this call, but that is easily found and the documentation (found <a href="https://clickup.com/api/clickupreference/operation/CreateWebhook/">here</a>) will give you instructions on how to do it in a number of languages (Notion and Jira work similarly as well, I believe). Then you need to setup your API to handle the incoming event and you will have configured a proper webhook. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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>]]></content:encoded></item><item><title><![CDATA[The only way you should ever execute a Google Workflow]]></title><description><![CDATA[The answer might shock you (it wont). If you came to this blog because you ran into this problem and Googled it, you are not alone.]]></description><link>https://blog.ankurr0y.com/p/the-only-way-you-should-ever-execute</link><guid isPermaLink="false">https://blog.ankurr0y.com/p/the-only-way-you-should-ever-execute</guid><dc:creator><![CDATA[Ankur Roy]]></dc:creator><pubDate>Thu, 29 Feb 2024 14:39:14 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c6656df1-ebbb-4c74-8874-c95745ecd40b_270x270.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A Google Workflow is an oft underused tool that offers a lot of automation potential. The API integrations into it are entirely code-based which scares some people compared to some other similar services which use more visual editors. There are visual editing tools to make Workflows fun, but that&#8217;s not the part I will focus on today. You see, I&#8217;ve had a massive challenge on how to run workflows: and that&#8217;s how to run them (just hit the play button right, how hard can it be?).</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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><h1>Workflows</h1><p>Well, a typical Google Workflow (as in the default example) comes about like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LSsj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LSsj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 424w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 848w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 1272w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LSsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161563,&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_!LSsj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 424w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 848w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.png 1272w, https://substackcdn.com/image/fetch/$s_!LSsj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78f39a43-3aa6-4554-955a-526a9ebfa74b_1654x891.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 aria-hidden="true" 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><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 one will pretty much just extract some keywords from Wikipedia and bring them out. When you deploy this workflow and execute it - which you can do from the console to test it - you&#8217;ll get something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qfbg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qfbg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 424w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 848w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 1272w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qfbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png" width="1252" height="829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cde1994e-6535-4b65-80b6-f63633508524_1252x829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:1252,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77336,&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_!Qfbg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 424w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 848w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.png 1272w, https://substackcdn.com/image/fetch/$s_!Qfbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcde1994e-6535-4b65-80b6-f63633508524_1252x829.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 aria-hidden="true" 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><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>But that&#8217;s again a closed loop, to interact with it, you need to trigger the Workflow. I was going to put down a list of triggers, but that would ruin the SEO of this article with its length. So, look it up yourself, but remember to have nothing else planned for the day.</p><h1>Trigger Workflow with Pub/Sub</h1><p>Do this. I&#8217;m not putting anything else in this blog. I&#8217;m cutting through everything and I&#8217;ll just tell you this is the right choice for 99% of Workflow triggers. That&#8217;s not saying it <em>should </em>be the only way, I&#8217;m saying for a lot of things it <em>is </em>the only way. Here&#8217;s the other things I tried:</p><ul><li><p>SDKs: Parameters are only available in NodeJS and Java versions (very random) and the documentation is a little wonky. As in the code there doesn&#8217;t work unless you deploy it from the command line from the sample repositories.</p></li><li><p>API endpoints: This one takes a lot of effort. You need OAuth2 authorization on an application and that doesn&#8217;t always work when your application is an internal solution or a solution that can&#8217;t use these authorizations.</p></li></ul><p>What can you do? Pub/Sub, it&#8217;s simple and pushed by every cloud provider, you can attach your Pub/Sub as a trigger to execute a workflow whenever it needs to be used. And you can trigger the Pub/Sub pretty much with any sort of API call/SDK/SMS/phone call/Instagram post you want.</p><p>Just edit your workflow and add EventArc as a trigger (also remember to have appropriate service account permissions everywhere):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5wOf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5wOf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 424w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 848w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 1272w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5wOf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png" width="602" height="899" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:899,&quot;width&quot;:602,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72774,&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_!5wOf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 424w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 848w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.png 1272w, https://substackcdn.com/image/fetch/$s_!5wOf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fc01c7-7247-480d-875d-4fd2c28ac51c_602x899.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 aria-hidden="true" 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><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>Now, create the trigger using the publishing of a message to a Pub/Sub topic:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iEKp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iEKp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 424w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 848w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 1272w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iEKp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png" width="562" height="607" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:607,&quot;width&quot;:562,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46078,&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_!iEKp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 424w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 848w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.png 1272w, https://substackcdn.com/image/fetch/$s_!iEKp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e9a5bcd-333b-4788-a498-9c5589b7baa9_562x607.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 aria-hidden="true" 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><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>Notice the creatie trigger name there. It will create a topic for you if you haven&#8217;t done so yourself. After that, whenever you publish a message into that topic, it will trigger the workflow. Adjust both according to the JSON data and you&#8217;ll do just fine.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.ankurr0y.com/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">Thanks for reading The Field of Possibilities! Subscribe for free to receive new posts and support my work.</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></channel></rss>