<?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[Perspective by Ankit Agarwal]]></title><description><![CDATA[Curated content send out as a digest every fortnight with my summary and inferences. Topics can include Technology, Startups, AI, Philosophy and many more..  ]]></description><link>https://ankitag9.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!LV97!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png</url><title>Perspective by Ankit Agarwal</title><link>https://ankitag9.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 11 Apr 2026 06:03:13 GMT</lastBuildDate><atom:link href="https://ankitag9.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Ankit Agarwal]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ankitag9@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ankitag9@substack.com]]></itunes:email><itunes:name><![CDATA[Ankit]]></itunes:name></itunes:owner><itunes:author><![CDATA[Ankit]]></itunes:author><googleplay:owner><![CDATA[ankitag9@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ankitag9@substack.com]]></googleplay:email><googleplay:author><![CDATA[Ankit]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[8.8.8.8]]></title><description><![CDATA[Why does Google own DNS, Chrome and Google Analytics]]></description><link>https://ankitag9.substack.com/p/8888</link><guid isPermaLink="false">https://ankitag9.substack.com/p/8888</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Sat, 30 Sep 2023 06:57:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rVHI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Imagine that you have just created the best possible tool to let people find information in the large mess of information freely floating around(Read Google). You have a deep feeling of satisfaction and feel you have created something substantial that all the people need and has immense value. It is true as well but then the stark reality of the world hits you in the face. You realize that despite having millions of users (maybe growing like 2-3x every quarter), the company will fail. Why you ask yourself? Well the simple reason being you are not making money and it is a costly affair to manage all that information and serve people&#8217;s queries. But you can&#8217;t ask people for money as despite being so valuable people won&#8217;t pay for it because of multiple reasons -</p><ol><li><p>It is still the early years of the internet and most people won&#8217;t be comfortable paying for it. The whole concept of subscriptions doesn&#8217;t really exist</p></li><li><p>People find it useful to search for information using your tool but it would be very difficult to put a value on its utility.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rVHI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rVHI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rVHI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png" width="398" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:398,&quot;bytes&quot;:1149144,&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_!rVHI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rVHI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120dfdde-7238-427f-814c-90c310401e7a_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So now what do you do? You see that Ads is a good way of making money. Your competitors are doing it and so should you. But to be better at serving ads, you need more and more context. While you have the information on which link the user clicked, you don&#8217;t know about users who directly go to the websites. Also, you don&#8217;t know what they are doing on the website, how much time they spend and whether their interaction was meaningful or not. So to do that, you create a free analytics tool that can be integrated in the websites for free and help other businesses understand their customer behavior (Read Google Analytics). You give it for free because it is far more valuable to you that billions of websites use this tool rather than something else so that you have access to the data (not all data but key parameters).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>The data collected through Google Analytics helps Google refine its advertising services, target audiences more effectively, and provide valuable insights to website owners. This indirectly supports Google's advertising business.</p><p>Now you have access to two sets of data - people going through your search results and people using your analytics tool. You can now serve your users better as you have more context. However, there are billions of other websites not using your analytics tool and people are going to those websites directly or through other feeds. What do you do? You create a tool which anyone has to use to visit a website (Read Chrome). How do you do it? Well, you are already making billions so you create a new team, get some people from FOSS projects (Read Firefox) and ask them to create the best browser possible. Then using your marketing muscle, make it so popular that the first thing people do is download your browser. Slowly and steadily your market share increases and you have access to more data.</p><p>Google Chrome, while not directly generating revenue, plays a strategic role in Google's ecosystem. Chrome helps Google gather browsing data, which can be used to improve search results, enhance user experience, and refine advertising targeting. Additionally, Chrome encourages users to engage with Google services like search, Gmail, Google Docs, and more. While the browser itself may not generate direct revenue, it serves as a gateway to other Google services, which can contribute to Google's overall revenue.</p><p>Still there is a set of data not accessible to you - People not going through your search, not using your browser and browsing websites not using Google Analytics. So now what do you do? You create a DNS service, everyone uses DNS even other websites and browsers. So more data. By processing a significant portion of global DNS queries, Google can gather data on internet usage patterns and potentially improve its services. Additionally, offering a reliable DNS service enhances Google's image as a provider of valuable and trustworthy internet services.</p><p>The reason I believe in this narrative is simple - Google is a for profit, listed company. It has be to capital efficient. It cannot spend money on activities that are not making profit in some way or the other. Chrome, DNS, Google Analytics all are cost centers for Google and would make sense only if they are feeding into some of their Profit making businesses.</p><p>A validation to this hypothesis is the recent change by Chrome which will in a way allow them to share your browsing history and other details to advertisers. More details<a href="https://theconversation.com/google-chrome-just-rolled-out-a-new-way-to-track-you-and-serve-ads-heres-what-you-need-to-know-213150"> here</a>. Similar changes will happen in future too as they now dominate the browser as well as Mobile internet market, so they can go ahead and make these changes and developers will have no option but to adjust as the end users are using Chrome and Android.</p><p>By providing these tools for free, Google not only maintains its position as a trusted internet companion but also gains access to invaluable user data. This data, in turn, fuels the refinement of its advertising services, making Google's core business even more profitable. It's a carefully orchestrated dance between providing value to users and capitalizing on the digital breadcrumbs they leave behind.</p><p>As Google continues to evolve and adapt to the changing tech landscape, we can expect further innovations and strategic moves. The recent changes to Chrome's data sharing policies may just be the beginning of a new era in advertising.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/p/8888?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/p/8888?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Exploring Practical Design Patterns: Connecting Theory to the Real World]]></title><description><![CDATA[Introduction]]></description><link>https://ankitag9.substack.com/p/exploring-practical-design-patterns</link><guid isPermaLink="false">https://ankitag9.substack.com/p/exploring-practical-design-patterns</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Wed, 30 Aug 2023 07:53:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PM1y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>Introduction</h3><p>Design patterns serve as reusable solutions to recurring software design problems, fostering maintainable, scalable, and efficient code. In this blog post, we'll delve into three design patterns, discussing their real-world connections and providing examples to illustrate their practical utility.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PM1y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PM1y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PM1y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg" width="500" height="340" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:340,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40239,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PM1y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PM1y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e13d5f-6d1e-49f9-b32c-e27a5dacbc06_500x340.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Singleton Pattern</strong></h3><p>The Singleton pattern ensures a class has only one instance and offers a global point of access to that instance. This is handy when managing a shared resource or maintaining a consistent configuration across an application.</p><p>Real-world Connection: Database Connection Pooling</p><p>Suppose you're developing a web app that needs database connectivity. Creating new database connections with every request can be wasteful. By implementing the Singleton pattern, you can establish a single instance of a database connection pool that's shared throughout the app, minimizing connection overhead.</p><p>Example:</p><pre><code>class DatabaseConnectionPool:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
            # Initialize connection pool
        return cls._instance

# Usage
connection_pool_1 = DatabaseConnectionPool()
connection_pool_2 = DatabaseConnectionPool()

print(connection_pool_1 is connection_pool_2)  # Outputs: True
</code></pre><h3>Observer Pattern</h3><p>The Observer pattern creates a one-to-many relationship between objects, allowing changes in one object (subject) to update all its dependents (observers). This is invaluable when various parts of a system must respond coherently to changes.</p><p>Real-world Connection: Event Handling in GUI Applications</p><p>Imagine a GUI app where different UI elements react to user interactions or data updates. The Observer pattern can help ensure changes in one part of the interface are swiftly reflected in other parts without tightly coupling them.</p><p>Most of the commonly used frameworks on the UI side use this pattern extensively. </p><p>Example:</p><pre><code>class Subject:
    def __init__(self):
        self._observers = []

    def attach(self, observer):
        self._observers.append(observer)

    def notify(self, message):
        for observer in self._observers:
            observer.update(message)

class Observer:
    def update(self, message):
        # Update UI element with the new message
        pass

# Usage
button = UIElement()
textbox = UIElement()

subject = Subject()
subject.attach(button)
subject.attach(textbox)

# When subject's state changes
subject.notify("New data arrived")
</code></pre><h3>Strategy Pattern</h3><p>The Strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. This enables clients to select an algorithm from the family at runtime, without altering the code that uses the algorithm.</p><p>Real-world Connection: Payment Processing</p><p>Suppose you're building an e-commerce platform with multiple payment methods. Using the Strategy pattern, you can encapsulate each payment method as a strategy. This allows you to easily switch between payment methods without altering the core codebase.</p><p>Similar use cases can exist in integrating multiple Email/SMS third parties or using different AI models to get inference. </p><p>Example:</p><pre><code>class PaymentStrategy:
    def process_payment(self, amount):
        raise NotImplementedError

class CreditCardPayment(PaymentStrategy):
    def process_payment(self, amount):
        # Process payment using credit card
        pass

class PayPalPayment(PaymentStrategy):
    def process_payment(self, amount):
        # Process payment using PayPal
        pass

# Usage
payment_method = CreditCardPayment()
order = Order(100.0)

order.process_order(payment_method)
</code></pre><h3>Conclusion</h3><p>Design patterns act as guides for addressing common software design challenges. Singleton, Observer, and Strategy patterns are just a few of many available.  Incorporating these patterns into your development process can result in more effective and flexible applications. I am currently reading a book on design patterns - <a href="https://www.amazon.in/Design-Patterns-Explained-Perspective-Object-Oriented/dp/8131700844/ref=sr_1_1?crid=IX3QH33I95CF&amp;keywords=design+patterns+explained+alan&amp;qid=1693372031&amp;sprefix=design+patterns+explained+alan%2Caps%2C207&amp;sr=8-1">Design Patterns Explained by Alan Shalloway</a>. Will share more such reads in future. Subscribe to receive the updates. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Ending with a quote - </p><p><em>We are what we repeatedly do. Excellence, then, is not an act, but a habit</em> - <strong>Aristotle</strong></p>]]></content:encoded></item><item><title><![CDATA[Cloud Security Essentials for startups: Part 1]]></title><description><![CDATA[A low effort high impact guide for securing your infra]]></description><link>https://ankitag9.substack.com/p/cloud-security-essentials-for-startups</link><guid isPermaLink="false">https://ankitag9.substack.com/p/cloud-security-essentials-for-startups</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Tue, 01 Aug 2023 14:55:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pAYr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I understood the importance of security about 3 years ago when I was running my AI startup and woke up one day to see all our S3 data was gone. Somehow our AWS S3 credentials got leaked and we had not put in place a robust policy to prevent our data in such a scenario. We realized that security is something that should not be taken lightly and started working on it. However, we wanted to ensure that we don&#8217;t compromise on development speed and developer productivity due to it, especially in the early phases of our startup, where speed is critical and the only advantage you have over others.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pAYr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pAYr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pAYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png" width="462" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:462,&quot;bytes&quot;:1745831,&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_!pAYr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pAYr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0245e70-bf91-4a26-b7a7-07245918e666_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Writing this post to cover some the low hanging fruits what every team can use to ensure safety against attacks. The important point to note is - <strong>security is all about layers</strong> i.e. how many layers does a malicious actor has to crack to affect your system.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>1. IP addresses in AWS keys</strong></p><p>A very simple yet effective way to secure your AWS credentials is to specify the IP ranges which can access the AWS services. This does not require any code change as well. More details here - <a href="https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html">https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html</a></p><pre><code>{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            },
            "Bool": {"aws:ViaAWSService": "false"}
        }
    }
}</code></pre><p>What is helps in is, even if the credentails get leaked, they cannot be used outside the production server. So there are two layers of protection - Credentials and Your server&#8217;s SSH keys. </p><p><strong>Layers of security</strong> - 2 (S3 credentials + Server access)</p><p><strong>2. No delete permission</strong></p><p>Most of the times, we don&#8217;t delete data that is uploaded to S3. What it means is your can have two set of credentials - one with Put/Get permission and other one with delete. Rarely, if ever, we require bucket delete permission. So the idea is here to not use * in Action key, but specify the required permissions. This requires some code changes but since s3 operations are generally done through util functions, this change can be easily done.  </p><p><strong>Layers of security</strong> - 3  (S3 credentials + Server access + No deletion)</p><p><strong>3. S3 bucket versioning</strong></p><p>A great feature, which ensures that data is not deleted by mistake or by malicious attack. </p><pre><code><code>Versioning-enabled buckets can help you recover objects from accidental deletion or overwrite. For example, if you delete an object, Amazon S3 inserts a delete marker instead of removing the object permanently. The delete marker becomes the current object version. If you overwrite an object, it results in a new object version in the bucket.</code></code></pre><p>Versioning is unfortunately disabled by default and must be enabled in each bucket separately. But once done, it <strong>also prevents programmatic deletion of buckets.</strong> </p><p><strong>Layers of security</strong> - 3  (S3 credentials + Server access + Versioning)</p><p><strong>3. AWS backup for S3</strong></p><p>AWS provides a great functionality to create automated backups for S3. </p><pre><code><code>The AWS Backup vault is a logical container that stores and manages your encrypted backups. When creating a backup vault, you must specify the AWS Key Management Service (AWS KMS) encryption key that encrypts the backups placed in this vault. All copied backups are encrypted with the key of the target vault. </code></code></pre><p>The biggest advantage of AWS backup is, even if your account is compromised, these backups are <strong>read only and cannot be deleted even by root user</strong>. The only way to delete is to delete the complete account itself. </p><p><strong>Layers of security</strong> - &#8734; ( as you cannot delete these backups)</p><p><strong>5. Separate Virtual Network for Production deployments and No direct access</strong></p><p>Our development environment is the most exposed and used most frequently. The chances of SSH key of development server being leaked are high. It is best to separate the production deployments on separate Virtual network and accessible only through VPN. This should include queues, databases, cache servers, main application servers etc. </p><p><strong>Layers of security</strong> - 3  (S3 credentials + Server access + VPN)</p><p><strong>6. Database protection</strong> </p><p>We generally create users with all permissions and no restrictions on IP addresses. In order to add another layer to your database, we can specify IP ranges to users we create. That way, even if credentials get leaked, there is an additional layer of security.</p><pre><code>CREATE USER 'david'@'198.51.100.44/24';</code></pre><p>More details here - <a href="https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/account-names.html">https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/account-names.html</a> </p><p><strong>Layers of security</strong> - 3  (DB credentials + Server access + VPN)</p><p><strong>7. 2FA for cloud login</strong></p><p>While analyzing security layers at different steps, We realized that cloud login is single layer of protection and anyone can login if the password is leaked. This can be dangerous as root login in cloud console has lot of access. The best way is to have separate users for different uses like Databases, Logs, etc and each user must have MFA enabled. </p><p><strong>8. Using a Secret manager</strong></p><p>We all know that we should not have access keys in our code, that they should not be part of git and that they should be stored in some Vault. AWS Secret Manager or Hashicorp Vault provide easy to use interfaces for the same. </p><p>As mentioned earlier, in terms of security, <strong>think in layers and keep on adding layers</strong> . No system can be 100% secure, but with small efforts we can make it safe from standard hacks. The above points cover some of the aspects but the list is longer. We took other actions to secure our APIs, token and servers further. Will be discussing them in a separate post. </p><div><hr></div><p>Ending with a quote - </p><blockquote><p><strong>Security is the lowest priority till it becomes the highest.</strong> </p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/p/cloud-security-essentials-for-startups?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/p/cloud-security-essentials-for-startups?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Good function definitions or why interfaces matter]]></title><description><![CDATA[Why thinking about others makes you a better programmer]]></description><link>https://ankitag9.substack.com/p/good-function-definitions-or-why</link><guid isPermaLink="false">https://ankitag9.substack.com/p/good-function-definitions-or-why</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Sat, 08 Jul 2023 11:16:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>College education misses out on one very fundamental part of programming - it is a <strong>team exercise</strong>. Rarely, if any, individual project exist. The implications of this are manifold, primary being - just writing code is not the job, it should be easy to understand so that team can review it and reuse it. </p><p>Once you take into account this, everything we do in coding changes. We cannot have variables name like a,b,x. We cannot have a single function with 1000 lines and we cannot have a single file with all the code. </p><p>Contracts become important too. You are bound by those as other team members start using those contracts to build their services. </p><p>The current post covers a simple yet important aspect - Functions </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.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">We will be diving in these nuances of programming. Subscribe to receive new posts.</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>Consider this function - </p><pre><code>def process(self, channel, method, properties, body):
   data = json.loads(body.decode('utf-8'))

   for d in data:
       ...</code></pre><p>Just by looking at this function definition, it is hard to tell what does body contains. It can be a string, a number, an object or like in the above case - an array. The function get weirder as we go further as data is not just an array, it is an array of Objects. Now, if anyone wants to use this function, he will have to first read the code to see what is the object structure and what all keys are mandatory/optional. </p><p>Having <strong>proper data types and object definitions</strong> helps in understanding the function definition better. There are some other things to keep in mind while writing functions - </p><ol><li><p>Function ideally <strong>should not take more than 5-6 arguments</strong>. If there are more than 5-6 arguments, it would be doing more than one thing thus breaking the Single Responsibility Principle</p></li><li><p><strong>Include a comment</strong> explaining the expected behaviour of the function</p></li><li><p><strong>Break it down if it is becoming too long or complex or doing multiple things</strong>. The writer <a href="https://able.bio/rhett/python-functions-and-best-practices--78aclaa">here</a> explain this using a beautiful example -<em> For example, say that you want to write some code that does three things:&nbsp;fetch a web page, extract data from the page and print the data out to the terminal. You wouldn't write a function that extracts the data from the web page AND prints the results out to the terminal, because perhaps one day you might need to change your code to save those results to a file instead or push them to an API.</em></p><p><em>If you try to handle all three of these output cases in your function, you'd probably end up having to add another parameter to specify which output to use, and then add that argument&nbsp;to every place in your code that calls the function. Then what about specifying a filename for when saving the results to a file? Or the URL and access credentials for pushing the results to an API? You can see how breaking&nbsp;your code down into smaller reusable functions prevents it from becoming exponentially more complicated and keeps it flexible for reusing around your codebase.</em></p></li></ol><p>A basic principle that has helped me taking the right decisions is to look at the code after completing. When you are in the zone, it becomes difficult to think about how the overall code is panning out. It is only after a break when you look at the code again, you can evaluate if the overall structure makes sense to you and would it be clear to others. Remember two things while reviewing your code - <strong>it is a team exercise</strong> and <strong>reading code is harder than writing</strong>. So make extra effort for your team - it helps.</p><div><hr></div><p>Ending with Linus&#8217;s Law - &#8220;<strong>Given enough eyeballs, all bugs are shallow</strong>&#8221;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/p/good-function-definitions-or-why/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/p/good-function-definitions-or-why/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Perspective Newsletter # 3]]></title><description><![CDATA[I curate good content from the internet and send it out as a digest every fortnight with my summary and inferences. This fortnight's topic is Generative AI.]]></description><link>https://ankitag9.substack.com/p/perspective-newsletter-3</link><guid isPermaLink="false">https://ankitag9.substack.com/p/perspective-newsletter-3</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Mon, 19 Jun 2023 14:30:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_bGi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>ChatGPT, GenerativeAI, LLMs, OpenAI are some of the buzzwords one gets to hear everywhere nowadays and if you browse LinkedIn&#8217;s feed by mistake, it seems the world has already crossed singularity and any company or professional not using AI is doomed. Just to be clear, I am not a pessimist, I believe that LLMs are powerful and will change a lot in the world but I am definitely a pessimist in the short run. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>Currently we are in the peak of GenerativeAI Hype. I have seen a similar hype around Deep Learning in 2015-16 (time when we started our AI startup, which closed in 2020). Everyone thought self driving cars, chat bots, computer vision would bring in paradigm change. They did, but the impact was way less than expected. It is generally true as well, we humans are either too optimistic or too pessimistic (be it Stock market, Real estate or personal relationships). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_bGi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_bGi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 424w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 848w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 1272w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_bGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png" width="520" height="391.68831168831167" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:928,&quot;width&quot;:1232,&quot;resizeWidth&quot;:520,&quot;bytes&quot;:969998,&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_!_bGi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 424w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 848w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 1272w, https://substackcdn.com/image/fetch/$s_!_bGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ba143e-2d4d-4e9b-80da-e3f935a30a68_1232x928.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let me take you back to 2015, Deep learning(DL) has just made its mark on the world and everyone was trying to find applications where DL could bring disruption.  GenerativeAI, where we were able to create 28*28 low quality useless images, was not even considered a serious contender. The front runners were self-driving cars, Chat bots, sentiment analysis, speech to text, AI assistants (Siri, Alexa and Google Assistant), automated diagnosis. Deepmind broke the internet when their AI became the <strong><a href="https://www.theguardian.com/technology/2016/mar/15/googles-alphago-seals-4-1-victory-over-grandmaster-lee-sedol">best in Go</a></strong>. Now, at the time of writing this i.e. 2023, AI assistants are used to play music or ask for weather or set reminders, Self-driving cars are struggling to say the least and Chat bots generally end up handing over conversations to human agents and are no less irritating as they were in 2016 and let&#8217;s not even discuss the automation of diagnosis claims. So if you see, all the promises were hyped and success came from an underdog - GenerativeAI. </p><p>It is difficult to predict future even in a small domain and even more difficult is to predict the impact of something so new. All great inventions took decades to actually bring an impact in the world. </p><p>And the good thing is, Sam Altman, CEO of OpenAI, knows this. He himself said this <strong><a href="https://www.youtube.com/watch?v=AiE7FsdRzz8">here</a></strong> and this is the reason he is traveling around the world and marketing the shit out of this hype. He knows that this is once in a lifetime opportunity and he should do whatever he can to leverage the hype and cover as much mental space as possible. The impact is, every CEO would be asking his/her executives, what is our AI/GPT strategy. This in turn will bring in business to OpenAI. </p><p>Slowly, people will realize the limitations of LLMs. That is when the reality hits. I myself have seen ChatGPT give wrong answers to simple API integration questions and the reason is simple, it is a generative model and not a fact checker. A very simple example is <strong><a href="https://www.thehindu.com/sci-tech/technology/lawyer-uses-chatgpt-for-research-cites-non-existent-cases/article66906968.ece">here</a></strong> - it created non-existent cases and citations. </p><p>What I think will happen is LLMs will become infrastructure building blocks similar to virtual machines or containers or cloud in general.  Since each model is costly to train, requires highly skilled people and huge amount of data, very few companies will actually be doing this. Instead, they will open up their platforms and make it easy for developers to fine tune models and make production ready applications. This is the reason we are <strong><a href="https://techcrunch.com/2023/05/15/ai-weak-investments/">not seeing investments increasing in AI</a></strong> space - investors are not clear on where the moats are. A good piece on the same and how the ecosystem might unfold is written by a16z <strong><a href="https://a16z.com/2023/01/19/who-owns-the-generative-ai-platform/">here</a></strong>. </p><p>I find this piece by Benedict Evans - <strong><a href="https://www.ben-evans.com/benedictevans/2015/1/11/resetting-the-score">On Disruption</a></strong> particularly interesting in seeing the impact of disrupting changes and how they can play out. </p><p>A few places where I see LLMs having a big impact are - 1. Chat bots fine tuned on the required context, 2. Content creation ( especially text and images - I created the logo for this newsletter using Midjourney) and 3. Education (<strong><a href="https://betonit.substack.com/p/how-ai-will-change-higher-education">take home assignments become a joke</a></strong>). Slowly, they will creep into each and everything just like Cloud or Docker. </p><p>Now lets cover some of the remaining worth reading posts I have come across in the last few months around GenerativeAI - </p><p><strong><a href="https://www.ben-evans.com/benedictevans/2022/12/14/ChatGPT-imagenet">ChatGPT and the Imagenet moment</a></strong></p><p><em>If I ask for &#8216;the chest burster scheme in Alien as directed by Wes Anderson&#8217; and get a 92% accurate output, no-one will complain that Sigourney Weaver had a different hair style. But if I ask for some JavaScript, or a contract, I&nbsp;might get a &#8216;98% accurate&#8217; result that looks a lot like the JavaScript I asked for, but the 2% error might break the whole thing. To put this another way, some kinds of request&nbsp;don&#8217;t really&nbsp;have wrong answers, some can be roughly right, and some can only be precisely right or wrong, and cannot be &#8216;98% correct&#8217;.</em>&nbsp;</p><p>Read full text <strong><a href="https://www.ben-evans.com/benedictevans/2022/12/14/ChatGPT-imagenet">here</a></strong></p><p><strong><a href="https://platform.openai.com/docs/guides/gpt-best-practices">OpenAI Prompt Guide</a></strong></p><p>We all are trying to figure out the best prompts for getting something from LLMs. This official guide makes it a little easier. (It made me think about Google Search Guide that I went through a long time back to understand the best way of searching. Times are changing)</p><p>Read full text <strong><a href="https://platform.openai.com/docs/guides/gpt-best-practices">here</a></strong></p><p><strong><a href="https://www.ted.com/talks/sal_khan_how_ai_could_save_not_destroy_education/c">How AI could save (not destroy) education</a></strong></p><p>A good short video on possibility GenerativeAI brings in education. Made me wonder that education might not be the same in the next 20 years. </p><p>Watch <strong><a href="https://www.ted.com/talks/sal_khan_how_ai_could_save_not_destroy_education/c">here</a></strong></p><div><hr></div><p>Ending with a quote:</p><blockquote><p><em>The biggest generator of long term results is learning to do things when you don't feel like doing them.&nbsp;Discipline is more reliable than motivation.</em></p></blockquote><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/p/perspective-newsletter-3?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/p/perspective-newsletter-3?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item><item><title><![CDATA[Perspective Newsletter # 2]]></title><description><![CDATA[Curated content across Tech, Product, Leadership and Startups.]]></description><link>https://ankitag9.substack.com/p/perspective-newsletter-2</link><guid isPermaLink="false">https://ankitag9.substack.com/p/perspective-newsletter-2</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Sat, 27 May 2023 14:44:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LV97!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4><a href="https://stratechery.com/2023/the-unified-content-business-model/">The Unified Content Business model</a></h4><p>Here Ben Thompson highlights a few key aspects of the Content Economy that has grown exponentially in the last few years. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><ul><li><p><strong>Content cost</strong> - Economies of scale or a moat - more subscribers means average content cost per subscriber is very low and margins are good which in turn create cash flows for future content creation. This is the reason why Mr. Beast is spending more and more in making each of his videos, he knows that no one else can do this(no one has that scale). Thus creating a moat in otherwise a no-moat world of content creators. </p></li><li><p><strong>Attention is the ultimate currency and there is a hard upper limit to it. After that everything is a zero sum game.</strong> Till now, internet companies have been growing without really competing. But now since they have covered all our idle time, it reduces to a zero sum game. Tiktok&#8217;s gain will be Instagram&#8217;s loss. (though we still have a huge chunk of world population to cover, but economic realities make that difficult and out of control of the internet companies). </p></li><li><p>Another key questions that he highlights here is - <em>&#8220;Publishers need to answer the most fundamental question required of any enterprise: are they a niche or scale business? </em></p><ul><li><p><em>Niche businesses make money by maximizing revenue per user on a (relatively) small user base or </em></p></li><li><p><em>Scale businesses make money by maximizing the number of users they reach&#8221;</em></p></li></ul></li><li><p>A unified model is emerging where is you have a freemium strategy for your content - Watch for free but pay indirectly by watching ads or Pay for subscription. </p></li></ul><div><hr></div><h4><a href="https://www.vidartop.no/uploads/9/4/6/7/9467257/harnessing_the_science_of_persuasion.pdf">The Science of persuasion</a></h4><p>Here the writer talks about the fundamental challenge of Leadership - Getting things done through others. He talks about the science behind getting to this and highlights six key parameters - </p><ol><li><p><strong>Liking</strong>&nbsp; (<em>Uncover real similarities and offer genuine praise)</em></p></li><li><p><strong>Reciprocity</strong> (<em>Give what you want to receive)</em></p></li><li><p><strong>Social Proof</strong> (<em>Use peer power whenever it&#8217;s available)</em></p></li><li><p><strong>Consistency</strong> (<em>Make their commitments active, public, and voluntary)</em></p></li><li><p><strong>Authority</strong> (<em>Expose your expertise; don&#8217;t assume it&#8217;s self-evident)</em></p></li><li><p><strong>Scarcity</strong> (<em>Highlight unique benefits and exclusive information)</em></p></li></ol><p>Two parameters that I feel are really powerful in motivating others and getting things done that are not covered in this essay - </p><ol><li><p>Understand what motivates them and <strong>align the task with their motivation</strong>. A hustler should be given ownership of tasks/projects that involve out of box thinking and iterative approach. On the other hand, another person might more be interested in complex problems that require very deep thought. </p></li><li><p><strong>Purpose</strong> or potential impact - Show what the task can do. Your belief in a project can be translated to their energy and passion. Key point is to reiterate why a certain project is important and what it can change. </p></li></ol><div><hr></div><h4><a href="https://www.linkedin.com/pulse/basic-org-design-models-pros-cons-mitigations-mark-tsimelzon/">Function or Domain - Basic Org Design</a></h4><p>Here the author talks about the trade-off between the <strong>two fundamentals ways</strong> of organization structuring - <strong>Function</strong> i.e. Android team, iOS team, Back-end team and so on and <strong>Domain</strong> - Search team, Checkout team etc. He compares the two models on 5 parameters </p><ul><li><p><strong>Ownership &amp; Agility - </strong>Here the domain model shines for obvious reasons. Functional model can work if we create virtual domain teams </p></li><li><p><strong>Engineer Happiness &amp; Growth - </strong>Domain based teams lack in this but this can be mitigated by creating secondary structures for knowledge sharing and mentorship. </p></li><li><p><strong>Quality and Consistency - </strong>Again Domain based teams fall behind in this but overall quality is more of a function of Company&#8217;s culture rather than specific org model.</p></li><li><p><strong>Elasticity - </strong>Again Domain based theme suffer because not all features require the same team structure and it becomes difficult to optimize for efficiency. </p></li><li><p><strong>Alignment with cross-functional (non-eng) orgs - </strong>This is where Domain based teams shine as they are independent and can take decisions. He says, &#8220;<em>This is perhaps the ultimate reason why domain-based models became so popular recently.</em>&#8221;</p></li></ul><div><hr></div><h4><a href="https://www.linkedin.com/posts/ted-merz-cfa-b711257_bloombergs-most-valuable-application-wasn-activity-7061715289536684032-II3-">Bloomberg&#8217;s Most Valuable Application</a></h4><ul><li><p>Simple but remarkable. I think this is what is missed as companies grow. Most of the products are an outcome a small team motivated to solve a very specific problem they are facing and then they discover that they were not alone. </p></li><li><p>Another highlight was how conviction is important in aligning and convincing people. Something that should be evaluated during interviews especially in Product Managers and by Investors in founders. </p></li></ul><div class="pullquote"><p>Ending with a quote:</p><p>One sign that determination matters more than talent: there are lots of talented people who never achieve anything, but not that many determined people who don't. - <strong>Paul Graham</strong></p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/p/perspective-newsletter-2?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/p/perspective-newsletter-2?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Perspective Newsletter # 1]]></title><description><![CDATA[Curated content across Tech, Product and Startups.]]></description><link>https://ankitag9.substack.com/p/perspective-newsletter-1</link><guid isPermaLink="false">https://ankitag9.substack.com/p/perspective-newsletter-1</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Sat, 06 May 2023 10:33:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LV97!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4><strong><a href="https://sahillavingia.com/work">Work - Sahil Lavinga</a></strong><a href="https://sahillavingia.com/work"> </a></h4><p>A really breath taking, high impact piece. Sahil is the <strong>founder of Gumroad</strong> and here he talks about his approach to work and running Gumroad with a small team that too working part-time. </p><ul><li><p>This <strong>challenges the general idea of growth</strong> but more than that, in my opinion, it challenges that startups need not focus on building feature after features. That engineering is the main cost center for majority of startups and <strong>most are stuck in build traps.</strong> It might make sense for companies to invest in new features once they have a certain market but before achieving that scale, one should not grow teams. <strong>A team of 10 might be 10x more productive than a team of 100 on per person basis.</strong> Also, overall output might be more, but overall outcome might not be so different, because <strong>with increased bandwidth, good to have/low impact items start getting picked.</strong> </p></li><li><p>Also with increased sizes, <strong>communication and process overheads impact productivity</strong>. Having a linear output growth with manpower is a difficult feat to achieve.  </p></li></ul><div><hr></div><h4><a href="https://podcasts.apple.com/us/podcast/shreyas-doshi-on-pre-mortems-the-lno-framework-the/id1627920305?i=1000565522145">Lenny&#8217;s Podcast - Shreyas Doshi</a></h4><p>Shreyas Doshi talks about his approach to Product Management in this podcast with Lenny. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.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 Perspective by Ankit Agarwal! 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><ul><li><p><strong>Pre-morterms</strong> &#8594; Good way to think about what could go wrong, especially in big projects. A way to give a safe space for people to talk about situations that won&#8217;t be generally discussed. One highlight is the prompt to start discussion &#8594; Imagine we are 6 months in future and this project failed miserably, what would be the reasons? </p></li><li><p>LNO framework - <strong>Leverage, Neutral and Overhead tasks</strong>. A simple way of thinking about where to put in the most effort at this moment based on your productivity. If you are feeling most productive, work on highest leverage tasks. </p></li><li><p><strong>Three levels of Product work - Execution, Impact, Optics.</strong> All three are important depending on the context. Be clear on what you are working on and what other people are evaluating you on. </p></li><li><p>Prioritization - don't just think about RoI i.e. Impact to effort ratio, also think of <strong>opportunity cost</strong>, things we are not doing.</p></li></ul><div><hr></div><h4><a href="https://www.eugenewei.com/blog/2020/9/18/seeing-like-an-algorithm">Seeing Like an Algorithm </a></h4><p>Eugene Wei writes about Tiktok from the perspective of algorithm and UI </p><ul><li><p><strong>Removing friction - the clear center of UI philosophy for the last 2 decades. This article makes an argument to add another dimension to this i.e. algorithm.</strong> By making choices that give very clear signal to the algorithm at the cost of increasing friction little bit is a tradeoff one should always consider. </p></li><li><p>Think about Tiktok - a simple change in UI - The entire screen is filled with one video. Just one. It is displayed fullscreen, in vertical orientation. This is not a scrolling feed. <strong>It&#8217;s paginated</strong>, effectively. The video autoplays almost immediately. <strong>This design puts the user to an immediate question: how do you feel about this short video and this short video alone?</strong> Everything you do from the moment&nbsp; the video begins playing is signal as to your sentiment towards that&nbsp; video. Do you swipe up to the next video before it has even finished&nbsp; playing? An implicit (though borderline explicit) signal of disinterest.&nbsp; </p></li><li><p>The default UI of our largest&nbsp; social networks today is the infinite vertically scrolling feed (I could&nbsp; have easily used a screenshot of Facebook above, for example). Instead&nbsp; of serving you one story at a time, these apps display multiple items on&nbsp; screen at once. As you scroll up and past many stories, the algorithm&nbsp; can&#8217;t &#8220;see&#8221; which story your eyes rest on. Even if it could, if the user&nbsp; doesn&#8217;t press any of the feedback buttons like the Like button, is&nbsp; their sentiment towards that story positive or negative? The signal of&nbsp; user sentiment isn&#8217;t clean.</p></li><li><p>TikTok doesn&#8217;t have an explicit&nbsp; downvote button, but by serving you just one video at a time, they can&nbsp; infer your lack of interest in any single video based on whether you&nbsp; churn out of that video quickly&nbsp; A quick swipe up&nbsp; before a video has completed is like swiping left on Tinder. </p></li><li><p>Algorithm-friendly design need not be user-hostile. It simply takes a&nbsp; different approach as to how to best serve the user&#8217;s interests.&nbsp; Pagination may insert some level of friction to the user, but in doing&nbsp; so, it may provide the algorithm with cleaner signal that safeguards the&nbsp; quality of the feed in the long run.</p></li><li><p>Minimizing friction is merely one means to a great user experience.&nbsp; <strong>The goal of any design is not to minimize friction, it&#8217;s to help the&nbsp; user achieve some end. Reducing friction is often consistent with that&nbsp; end, but not always</strong></p></li><li><p>Another key highlight from this is, <strong>a clear feedback helps in arresting the discontent drift as soon as it starts. If the algorithm isn&#8217;t "seeing" signals of a user&#8217;s growing&nbsp; disinterest, if only positive engagement is visible, some amount of&nbsp; divergence is unavoidable.</strong> You might see that a user is slowly losing&nbsp; interest, not liking as many items, not opening your app as often, but&nbsp; precisely which stories are driving them away may be unclear. By the&nbsp; time they're starting to exhibit those signs of churn, it's often too&nbsp; late to reverse the bleeding.</p></li></ul><div><hr></div><h4><a href="https://podcasts.apple.com/in/podcast/lennys-podcast-product-growth-career/id1627920305?i=1000584379480">Lenny&#8217;s Podcast - Building Substack</a></h4><p>Sachin Monga, Head of Product at Substack, talks about culture at substack and Product Management in general</p><ul><li><p>The best part of this talk was about the team size, Substack had <strong>4 PMs</strong> at the time of this podcast (Oct 2022). Looking at this, <strong>most companies feel so bloated and inefficient.</strong> </p></li><li><p>Another highlight is the point that Substack is a <strong>philosophically driven organization</strong> which means driving vision, strategy and other long term plans becomes easier. What I have seen is, very few companies are driven by philosophy and thus digress as soon as external pressure increases. <strong>Only companies with philosophy/long term vision can create great sustaining cultures in my opinion.</strong> </p></li></ul><div><hr></div><p>Ending with a quote for this week - </p><p>&#8220;<strong>In the short term, you are as good as your intensity. In the long term, you are only as good as your consistency.</strong>&#8221;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.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 Perspective by Ankit Agarwal! 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[We need to rethink tech hiring..]]></title><description><![CDATA[Is our process too influenced by FAANG]]></description><link>https://ankitag9.substack.com/p/we-need-to-rethink-tech-hiring</link><guid isPermaLink="false">https://ankitag9.substack.com/p/we-need-to-rethink-tech-hiring</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Wed, 04 Aug 2021 12:32:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LV97!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:20255175,&quot;url&quot;:&quot;https://alexw.substack.com/p/hire&quot;,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;Rational in the Fullness of Time&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Hire people who give a shit.&quot;,&quot;truncated_body_text&quot;:&quot;At Scale, we&#8217;ve hired more than 200 people. For a long time, I interviewed everyone we gave an offer to. I wrote this memo to the company more than a year ago before a period where we grew the team significantly (from roughly 75 to 150), and I wanted to share it with the broader community because I don&#8217;t think people do this enough.&quot;,&quot;date&quot;:&quot;2020-11-26T19:21:43.892Z&quot;,&quot;like_count&quot;:83,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:17270714,&quot;name&quot;:&quot;Alexandr Wang&quot;,&quot;photo_url&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0f42197e-80df-4ae2-951b-5970cd7273a5_512x512.jpeg&quot;,&quot;bio&quot;:&quot;ceo at @scale_ai. rational in the fullness of time&quot;,&quot;profile_set_up_at&quot;:&quot;2021-06-21T18:20:38.016Z&quot;,&quot;tos_accepted_at&quot;:&quot;2020-11-24T16:13:58.738Z&quot;,&quot;twitter_screen_name&quot;:&quot;alexandr_wang&quot;}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:null,&quot;language&quot;:&quot;en&quot;}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://alexw.substack.com/p/hire?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Rational in the Fullness of Time</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Hire people who give a shit.</div></div><div class="embedded-post-body">At Scale, we&#8217;ve hired more than 200 people. For a long time, I interviewed everyone we gave an offer to. I wrote this memo to the company more than a year ago before a period where we grew the team significantly (from roughly 75 to 150), and I wanted to share it with the broader community because I don&#8217;t think people do this enough&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 years ago &#183; 83 likes &#183; Alexandr Wang</div></a></div><p>Reading this made me think, are we really hiring in the right manner? From where did this practice of asking hard algorithmic questions came into being? (remember Max Howell&#8217;s inverting a binary tree incident at Google?). Is it useful or is it just a cultural phenomena which is now being blindly followed? How many times does a developer, during normal course of his/her work, has to write a sorting algorithm? </p><p>What I think is, it might make sense for FAANG and other big players to ask these questions as they might be looking for very precise skill sets ( or maybe just following the process) but does it make sense for a startup building a credit lending platform? It all boils down to context. </p><p>Hiring process has to be contextual. Hiring managers must ask the question, who I want to hire and what are the skills am I looking for? It might be an unpopular opinion, but I believe that passion, sincerity and dedication should be way higher in evaluation criteria than raw talent and skills. This is derived from yet another unpopular opinion - most of the work that we do on a day to day basis does not really require high amount of raw processing power. What it requires is dedicated effort over long durations of time. </p><p>And for challenging and complex problems, I have found that discussions are way better way of solving them than relying on a single person&#8217;s intelligence. This adds another dimension to the evaluation criteria - social skills and team work. </p><p>So next time you are hiring, don&#8217;t just think what you will ask.. also think why.. </p><p>Happy Hiring!!</p><p>PS - will soon share follow up article on my hiring strategy .. </p>]]></content:encoded></item><item><title><![CDATA[Our shopping problem]]></title><description><![CDATA[How challenging a minor assumption can possibly create a big domino effect]]></description><link>https://ankitag9.substack.com/p/our-shopping-problem</link><guid isPermaLink="false">https://ankitag9.substack.com/p/our-shopping-problem</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Tue, 23 Mar 2021 10:07:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ETcz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We love to shop, even those who hate it have to do it, be it shopping for groceries, cosmetics, clothes, mobile, electronics or some other item in millions that are sold. This is evident from the fact that more than 60% of world&#8217;s GDP is consumption based (It has to be otherwise what is the point of making things if no one is going to consume them, even the rest of the expenditure i.e. infrastructure etc is to make this possible). Here is how we spend our money - </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ETcz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ETcz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 424w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 848w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 1272w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ETcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png" width="417" height="517.8703241895262" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7822229b-e296-4902-9ed3-a83f24387f17_802x996.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:996,&quot;width&quot;:802,&quot;resizeWidth&quot;:417,&quot;bytes&quot;:62633,&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_!ETcz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 424w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 848w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 1272w, https://substackcdn.com/image/fetch/$s_!ETcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7822229b-e296-4902-9ed3-a83f24387f17_802x996.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image Source - <a href="https://www.ben-evans.com/benedictevans/2018/11/16/the-end-of-the-beginning">The End of the beginning by Benedict Evans</a></figcaption></figure></div><p>But this graph misses the nature and nuance of shopping or as they say, the devil lies in the details. How we buy a particular item depends a lot on its nature like its position on the need-want continuum, ticket size, frequency of purchase (inversely correlated to shelf life), experiential purchase,  etc. This is the reason there are more than 1 retailers and more than 1 e-commerce player even though both of them are scale businesses. They cannot cover all the nuances of all the items that have to be sold. Here are some of the nuances- </p><ul><li><p>Shelf life (from Milk on one end to Electronics like Refrigerator/Washing Machine on other hand). </p><ul><li><p>An extreme example that we can fit here is food delivery, very limited shelf life and thus a very different business. </p></li><li><p>Milkbasket in India is a good example of this. Using a highly perishable item (milk), they were able to get a foothold in the highly competitive space of grocery delivery.</p></li></ul></li><li><p>Frequency of purchase (correlated with Shelf life). </p></li><li><p>Experiential (like expensive watch, perfumes etc) </p></li><li><p>Ticket size (somewhat correlated to experiential given that we prefer to try before buying an expensive item)</p></li><li><p>Another aspect as pointed out by Benedict Evans <a href="https://www.ben-evans.com/benedictevans/2021/2/6/things-that-dont-scale">here</a> is whether we know what we want to buy vs we are exploring. Amazon is the default choice when we want to buy something we already know. </p></li><li><p>Position of the item on the need-want continuum. (this matters because the kind of message we want to communicate changes with this. If it is a need all we want to change is users&#8217; buying behaviour but in the latter case, we need to instil a new desire in users, a way harder thing to achieve)</p></li></ul><p>I am sure there would be hundreds of such factors, each having a varying degree of importance across industries, countries, age etc. The thought that I find interesting is as consumers, do we really think about these? Yes, I knew that milk is highly perishable and that I need to buy it everyday but did I ever think about the supply chain repercussions of the same? Or because it is such a need based product that the margins are really really low (similar to petrol/diesel)? </p><p>These are some of the implications on the market that come from the basic nature of the product. Now think what if something removes that limitation like homogenisation. The kind of effect it has on the whole ecosystem is mind boggling. Amazon is an example of such change. It basically removed the limitation of need of physical presence to sell products and we all can see the effects of it (of course having a great idea and building a growing business are two different aspects. Milkbasket even though had a great idea, is finding it difficult to grow as the landscape is very competitive and it has no defensibility. We will cover defensibility in another blog as it is a big topic to talk about here).</p><p>I think it is all about having that epiphany of some assumed limitation which changes things and creates new startups. Hope you find yours too :)</p><p></p>]]></content:encoded></item><item><title><![CDATA[Startup prerequisites: Part 1]]></title><description><![CDATA[Learning from my journey as an entrepreneur..]]></description><link>https://ankitag9.substack.com/p/startup-prerequisites-part-1</link><guid isPermaLink="false">https://ankitag9.substack.com/p/startup-prerequisites-part-1</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Mon, 19 Oct 2020 10:29:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eHgx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Disclaimer - most of these points come from my personal experience of running a startup for 5 years and hustling without much success, so in a way these are hard learned lessons and things I wish I knew before starting. These are in no way all the parameters that make a successful business nor it means that unless you think about them first, you cannot start. I am sure there would be very successful companies whose founders did not think about these parameters but I believe knowing about them makes one better prepared and these parameters can act as a framework for evaluating ideas.&nbsp;</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eHgx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eHgx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eHgx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg" width="594" height="297" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1200,&quot;resizeWidth&quot;:594,&quot;bytes&quot;:108364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eHgx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eHgx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4e567e1-809d-4f7a-af20-38540605bcbe_1200x600.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p><strong>Passion</strong> </p><p>The first and I think the most important question one should answer is motivation. Why this problem and not something else? How do you personally connect with that problem? Is it your own idea or someone else&#8217;s? The purpose of all these questions is to simply evaluate, what will make you stick to the problem when nothing is working, when the market is not giving the right signal, when you are not getting the conversation you wanted, when all the things in your little universe seem broken. I think that is what is very critical to any startup&#8217;s success. The question you need to think about is what will you do when &#8220;The going gets tough&#8221;. It is easier to say that you will try harder, we have been trained to say that but you have to be honest with yourself and that honesty cannot be judged by anyone else but you alone.&nbsp; </p><p>One kind of commitment comes from the effort you put in, but then there is another kind of commitment (which sometimes takes you to a dead end) that comes when you feel inspired, when you personally associate yourself with the problem. I am not saying that is healthy or the only way but I think that is way more critical than most people say it is. </p><p>Things will always become worse before they get better. This is true in life but truer in startups. Something is broken almost all the time in a startup and sometimes a lot many things and it is these tough times that test your conviction in your idea. You have to over commit to your idea and delude yourself into believing&nbsp;this is the most important thing the world needs.&nbsp; You have to feel inspired by the idea and it is this conviction and inspiration that keeps you going when the going gets tough. Something which keeps you on a path rather than starting exploring new paths.&nbsp;</p><p><strong>Plan</strong> </p><p>Where do you see your startup in 5 years? I know this seems like a typical interview question but it is far more important to think than that interview question. The purpose is to have a plan, howsoever flawed and rudimentary but a plan. It is easier to say that you want to dominate this market and make $100mn ARR in 5 years but go a few layers deeper. Can you list down possible features that your product will have in 5 years, can you say this is what you want to build and these are the 10 steps that will take you there. Of course the plan will change and as each step is executed, all the remaining steps will drastically change, but there will be a plan always in front of you.  I think plan is important especially if you are weak on Point 1. If you are really passionate about a problem then just take the jump and figure out everything later but if you are not then it is better to pause and think about it. As Graham says &#8220;Since a successful startup will consume at least 3-5 years of your life, a year's preparation would be a reasonable investment&#8221;. I think Mark Zuckerberg is somewhat to be blamed for this haste to jump the gun, but I am sure this is not what he meant when he said &#8220;Move fast and break things&#8221;. I think that is applicable once you take the jump, then you have to move at breakneck speed but not before that. Before that you have all the time in the world to make your mind because if you take the jump for wrong reasons, you are just going to end up in the abyss.&nbsp; </p><p>Also it is okay to just have a short term plan to dominate a particular market, make a small profitable business and then jump to a new product line, Most companies grow like that. Microsoft never had any idea that they were going to dominate OS market for PC, they had a very short term focus on building Basic, Google did not think of Gmail or Youtube for so long. But then they had a strong business dominance in one market before they entered and experimented in new market.&nbsp; </p><p>Having a plan also gives you two additional advantages, it gives you guiding principles to decide things (otherwise we can justify almost anything) and secondly it gives you hope(maybe delusion) that there is a path I can follow that will create something. </p><p>Plan becomes critical if you are in a market where iterations are going to be slow (eg hardware startups, or startups in manufacturing sector) as each and every step needs to be critically evaluated as iterations are really slow and some obvious mistakes can be prevented by having a clear cut strategy.&nbsp; </p><p><strong>Domain expertise&nbsp; </strong></p><p>This is important because if your idea depends a lot on domain knowledge, then someone with that knowledge is better suited for that idea, then you kind of fail in the question &#8220;Why are you the best person to do this?&#8221;. This also becomes an impediment in your ability to plan and your ability to think intuitively about the problem and more importantly it raises a very critical question, why on earth are you even doing this if you have not faced this problem personally or cannot associate with it. Without the right information/ exposure to the problem, if becomes very difficult to continue with the problem when you get negative feedback from the market. It becomes very difficult to actually understand market feedback as everything is new for you. Each and every feedback moves you to a different direction and you cannot evaluate which direction is right as you don&#8217;t have your gut with you, nor a plan and neither your passion.&nbsp; </p><p>You have to be an expert in whatever problem you are trying to solve. That expertise comes from facing the problem again and again. For eg - almost everyone is an expert in buying groceries, in driving, in&nbsp;emailing and so many other things we do, day in and day out.</p><p>As Graham has said <a href="http://www.paulgraham.com/startupideas.html">here</a> - </p><p><code>When searching for ideas, look in areas where you have some expertise. If you're a database expert, don't build a chat app for teenagers (unless you're also a teenager). Maybe it's a good idea, but you can't trust your judgment about that, so ignore it. There have to be other ideas that involve databases, and whose quality you can judge. Do you find it hard to come up with good ideas involving databases? That's because your expertise raises your standards. Your ideas about chat apps are just as bad, but you're giving yourself a Dunning-Kruger pass in that domain.</code></p><p>If you just open up and observe, you can see so many problems worth solving in our day to day lives. I really like what a startup called <a href="https://www.milkbasket.com/">Milkbasket</a> is doing.  India is a milk obsessed country and each morning millions of Indians go to a nearby shop to buy milk. Very few people like this responsibility. Milk (+highly perishable items like bread, eggs etc) are somewhat different from normal grocery which you can buy once a month. They need different supply chains and different consumer facing interface.&nbsp;These items are very low margin and stores keep them just to attract customers.  Milkbasket identified this problem. They just observed really well and identified a real problem. (whether the problem is solvable is a completely different question) </p><p>Other examples of good observations -</p><ul><li><p>Uber identified a similar problem with cabs. Everyone was hailing cabs day and night but no one really thought that cabs have a discovery problem on both side. That cab drivers and users both waste a lot of time searching for each other and very inefficiently (i.e. in visible vicinity) </p></li><li><p>Google sheets identified that each and every one of us was sharing files via email and managing multiple versions of each file and real time coordination was a problem that Microsoft office did not solve. </p></li><li><p>Substack identified that it was hard for each blogger to manage&nbsp;his/her newsletter&nbsp; </p></li></ul><p><strong>Scale Business / Unit economics </strong></p><p>A simple thought but a powerful one.  You must evaluate whether the business you are going into is a scale business or not, meaning can profitability be achieved at a certain scale only (like e-commerce). If not then focus on balancing growth and profitability and not just growth. </p><p>Defensibility is another important point to consider but I am not going to write about it as it has been discussed at length for so long now and really good content is available just a DuckDuckGo search away.  </p>]]></content:encoded></item><item><title><![CDATA[What is in the box? Ask Airpods..]]></title><description><![CDATA[what makes the new trend of Bluetooth earbuds/pods/earphones click..]]></description><link>https://ankitag9.substack.com/p/what-is-in-the-box-ask-airpods</link><guid isPermaLink="false">https://ankitag9.substack.com/p/what-is-in-the-box-ask-airpods</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Wed, 07 Oct 2020 06:54:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Lr_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What exactly changed in the last 15 years that made Airpods and the wider market of Bluetooth based earphones possible? Was it the tech? I still remember people using Bluetooth headsets in early 2000s with almost the same functionalities. </p><p></p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lr_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lr_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 424w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 848w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 1272w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lr_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png" width="256" height="263.52941176470586" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:816,&quot;resizeWidth&quot;:256,&quot;bytes&quot;:331914,&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_!Lr_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 424w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 848w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 1272w, https://substackcdn.com/image/fetch/$s_!Lr_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2dd7afe5-39c8-4178-9496-fd15d4c49c60_816x840.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p></p><p>Two things have changed from the above picture - they are used in both ears now and secondly and more importantly they have a case to be put in. </p><p></p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FKNb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FKNb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FKNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg" width="442" height="301.444" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:341,&quot;width&quot;:500,&quot;resizeWidth&quot;:442,&quot;bytes&quot;:12902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FKNb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FKNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F60036aa1-afaa-4673-9e18-09c6df7e5e2d_500x341.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p></p><p>I think this case is the innovation here, a simple, obvious innovation once you see it but incredibly hard to think or imagine the impact of. This case solved two critical problems that inflicted the first generation headsets&nbsp; </p><ul><li><p>Battery life </p></li><li><p>Portability/ability to carry them in pocket&nbsp; </p></li></ul><p>It is harder to argue which one was more important.&nbsp; </p><p>I feel these were the changes that made this product line possible and not improvements in battery and Bluetooth technologies as these improvements&nbsp;were just incremental in nature. </p><p>Of course Apple&#8217;s marketing and niche created a need in customers which might have been difficult for any other company (after all they sell hardware at software margin) and they have been handsomely rewarded for their innovation and marketing. Airpods alone did more than  <a href="https://9to5mac.com/2020/01/15/60-million-airpods-sold-in-2019/">$12 bn in revenue for Apple in 2019</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[General thoughts on product, startups and technology]]></title><description><![CDATA[Welcome to Perspective by Ankit Agarwal by me, Ankit.]]></description><link>https://ankitag9.substack.com/p/coming-soon</link><guid isPermaLink="false">https://ankitag9.substack.com/p/coming-soon</guid><dc:creator><![CDATA[Ankit]]></dc:creator><pubDate>Tue, 06 Oct 2020 18:07:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LV97!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8448c930-5ba0-4977-87f8-303747398eab_330x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to Perspective by Ankit Agarwal by me, Ankit. VP Engineering at Sunstone. Founder of a failed startup. Reader and most importantly a curator. </p><p>Sign up now so you don&#8217;t miss the first issue.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://ankitag9.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://ankitag9.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>In the meantime, <a href="https://ankitag9.substack.com/p/coming-soon?utm_source=substack&utm_medium=email&utm_content=share&action=share">tell your friends</a>!</p>]]></content:encoded></item></channel></rss>