<?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[Mini Thoughts]]></title><description><![CDATA[Daily news updates in big tech, indie development and SaaS.]]></description><link>https://paramaggarwal.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png</url><title>Mini Thoughts</title><link>https://paramaggarwal.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 18 Apr 2026 21:38:05 GMT</lastBuildDate><atom:link href="https://paramaggarwal.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Param Aggarwal]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[paramaggarwal@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[paramaggarwal@substack.com]]></itunes:email><itunes:name><![CDATA[Param Aggarwal]]></itunes:name></itunes:owner><itunes:author><![CDATA[Param Aggarwal]]></itunes:author><googleplay:owner><![CDATA[paramaggarwal@substack.com]]></googleplay:owner><googleplay:email><![CDATA[paramaggarwal@substack.com]]></googleplay:email><googleplay:author><![CDATA[Param Aggarwal]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Understanding Zero Shot Learning in Machine Learning]]></title><description><![CDATA[In recent years, a new branch of machine learning called zero-shot learning (ZSL) has emerged, which allows ML models to learn to recognize objects or concepts that they have never seen before.]]></description><link>https://paramaggarwal.substack.com/p/understanding-zero-shot-learning</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/understanding-zero-shot-learning</guid><pubDate>Fri, 28 Apr 2023 14:38:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Machine learning (ML) is a field of computer science where algorithms learn to identify patterns in data and make predictions or decisions without being explicitly programmed. In recent years, a new branch of machine learning called zero-shot learning (ZSL) has emerged, which allows ML models to learn to recognize objects or concepts that they have never seen before.</p><h2>What is Zero Shot Learning?</h2><p>Zero-shot learning is a technique in machine learning where a model is trained to recognize objects or concepts it has never seen before. Conventional machine learning models require a large amount of labeled data to train, which makes it difficult to recognize new objects or concepts that were not part of the training set. In contrast, zero-shot learning models can recognize new objects or concepts by leveraging prior knowledge about related objects or concepts.</p><p>In zero-shot learning, the model is trained to recognize a set of known classes or concepts, but it is also trained to understand the relationships between these classes. The model is then able to recognize new classes that are related to the known classes, even if it has never seen them before. Zero-shot learning is particularly useful in situations where it is difficult or impractical to obtain labeled data for new classes.</p><h2>How Does Zero Shot Learning Work?</h2><p>Zero-shot learning works by leveraging a technique called attribute-based classification. In attribute-based classification, an object or concept is described by a set of attributes, such as color, shape, size, texture, etc. Each attribute is assigned a score or weight that represents its importance in describing the object or concept. The model is then trained to recognize objects or concepts based on their attributes.</p><p>To recognize a new object or concept, the model first identifies its attributes and their scores. It then compares these attributes and scores to the attributes and scores of the known classes. The model selects the class that has the most similar set of attributes and scores as the new object or concept.</p><h2>Applications of Zero Shot Learning</h2><p>Zero-shot learning has many potential applications in various fields. Some of the most promising applications include:</p><h3>Image Recognition</h3><p>Zero-shot learning can be used to recognize objects in images, even if they have never been seen before. This has applications in fields such as autonomous vehicles, where the vehicle needs to recognize new objects on the road.</p><h3>Natural Language Processing</h3><p>Zero-shot learning can be used to understand and generate natural language text. This has applications in fields such as chatbots and virtual assistants, where the system needs to understand and respond to new user requests.</p><h3>Medical Diagnosis</h3><p>Zero-shot learning can be used to diagnose medical conditions based on symptoms, even if the condition has never been seen before. This has applications in fields such as telemedicine, where doctors need to diagnose patients remotely.</p><h2>Conclusion</h2><p>Zero-shot learning is a promising technique in machine learning that allows models to recognize new objects or concepts that were not part of the training set. By leveraging prior knowledge and understanding the relationships between classes, zero-shot learning models can recognize new classes with high accuracy. Zero-shot learning has many potential applications in various fields, including image recognition, natural language processing, and medical diagnosis. As the field of machine learning continues to evolve, zero-shot learning is likely to become an increasingly important technique for solving complex problems.</p><p><em>This article written by a large-language model.</em></p>]]></content:encoded></item><item><title><![CDATA[Shifting Our Perspective: Making Letting Go a Regular Part of Business]]></title><description><![CDATA[Is letting go of employees a taboo in your company? Let's explore the benefits of making it a regular occurrence for a more diverse and dynamic workforce.]]></description><link>https://paramaggarwal.substack.com/p/shifting-our-perspective-making-letting</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/shifting-our-perspective-making-letting</guid><pubDate>Wed, 26 Apr 2023 09:32:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we navigate the constantly evolving world of business, it's no secret that hiring and recruitment have become a standard part of any company's growth strategy. However, the topic of letting go of employees is often met with negativity and discomfort. But what if we shifted our perspective and made it a regular occurrence, just like hiring?</p><p>People are different, and while some may perform exceptionally well in one environment, they may struggle in another. Rather than viewing the act of letting go of employees as a failure, what if we looked at it as an opportunity for growth and development? By regularly changing teams and companies, we give employees the chance to try out new roles, explore different industries, and ultimately find their true calling.</p><p>Implementing a regular team/company change policy could also lead to a more diverse and dynamic workforce. By encouraging employees to work in different teams and departments, they can learn new skills and gain a better understanding of the company as a whole. This, in turn, can lead to increased collaboration, innovation, and ultimately, success.</p><p>According to a study by the Society for Human Resource Management (SHRM), the cost of a bad hire can be as much as five times their annual salary. Additionally, a Gallup study found that disengaged employees cost US companies up to $550 billion per year in lost productivity. These staggering numbers highlight the importance of ensuring that every employee is a good fit for their role and the company as a whole.</p><p>One real-world example of a company that embraces regular team and company changes is Amazon. The company has a policy called "pivot or perish," which encourages employees to move on to new roles and teams if they feel that they are no longer growing in their current position. This policy has been credited with helping Amazon maintain a culture of innovation and adaptability.</p><p>Another example is Zappos, which has a policy called "the offer." After completing their initial onboarding and training, new hires are offered a $2,000 bonus to quit if they feel that Zappos isn't the right fit for them. This policy ensures that every employee is fully committed to the company's values and culture.</p><p>By embracing regular team and company changes, we can also create a more inclusive and diverse workforce. For example, a study by McKinsey &amp; Company found that companies in the top quartile for gender diversity are 15% more likely to have financial returns above their respective national industry medians. Similarly, companies in the top quartile for racial and ethnic diversity are 35% more likely to have financial returns above their respective national industry medians.</p><p>In conclusion, making letting go a regular part of business is not only necessary but also beneficial for companies and employees alike. By creating a culture that values growth, development, and diversity, we can build stronger, more adaptable, and more successful organizations.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://paramaggarwal.substack.com/p/shifting-our-perspective-making-letting/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://paramaggarwal.substack.com/p/shifting-our-perspective-making-letting/comments"><span>Leave a comment</span></a></p><p><em>AI Writes is a newsletter entirely generated by ChatGPT &#8212; prompted with ideas by a human named Param Aggarwal (paramaggarwal.com)</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://paramaggarwal.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 AI Writes! 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[How to Clean Your Disk for Free Space]]></title><description><![CDATA[If you do iOS, Android and React Native development on your Mac, chances are you are easily using up your 256GB of storage space with various caches.]]></description><link>https://paramaggarwal.substack.com/p/how-to-clean-your-disk-for-free-space</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/how-to-clean-your-disk-for-free-space</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 08 Mar 2020 08:15:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zcqB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zcqB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 424w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 848w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 1272w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png" width="1396" height="572" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:572,&quot;width&quot;:1396,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 424w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 848w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.png 1272w, https://substackcdn.com/image/fetch/$s_!zcqB!,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%2F07fa93e5-1e74-44c8-b9cc-f30acac948a7_1396x572.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>If you work on a React Native based mobile app, you most likely are using a Mac to be able to test your app on iOS as well. This means that even though the SSD is very fast, it is either 128GB or 256GB. This can get easily filled up due to various caches that are made by various build systems.</p><p>This article will point you to the right places to help clear up the caches and rebuild only what is needed.</p><p>First, go to &#63743; &gt; About this Mac &gt; Storage and then choose &#8220;Manage&#8230;&#8221; on top right.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OJQ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 424w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 848w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 1272w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png" width="1456" height="1027" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/537f332f-36e5-4147-a067-afa234738047_1826x1288.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1027,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;: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_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 424w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 848w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 1272w, https://substackcdn.com/image/fetch/$s_!OJQ6!,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%2F537f332f-36e5-4147-a067-afa234738047_1826x1288.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Now choose &#8220;Review Files&#8221; on bottom left and then select the File Browser tab. At first glance, you will notice that in the left sidebar, it will show that majority of the disk space is consumed by the &#8220;Other&#8221; category.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MP43!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 424w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 848w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 1272w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png" width="1066" height="210" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ace1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:210,&quot;width&quot;:1066,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;: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_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 424w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 848w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 1272w, https://substackcdn.com/image/fetch/$s_!MP43!,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%2Face1546d-bd68-4b09-88a6-48ae821ee1d4_1066x210.png 1456w" sizes="100vw"></picture><div></div></div></a><p>This is because all the cache directories are in the home folder and are hidden folders starting with a dot in the name. This causes them to not be easily searchable.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Og5D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 424w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 848w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 1272w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png" width="1456" height="1027" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1027,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;: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_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 424w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 848w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 1272w, https://substackcdn.com/image/fetch/$s_!Og5D!,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%2F7f684cea-32d2-469a-8265-db268f193f40_1826x1288.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>The fix to getting the system to list all hidden folder as well is to press&nbsp;<code>CMD + SHIFT + .</code>&nbsp;&#8212; this will cause all the dot folders to also show up. Now it will begin calculating the size of each directory and updating the list.</p><p>You can safely get rid of the following directories by right clicking and selecting&nbsp;<code>Move to Bin</code>&nbsp;option:</p><ul><li><p><code>~/.npm</code>&nbsp;&#8212; npm cache</p></li><li><p><code>~/.yarn</code>&nbsp;and&nbsp;<code>~/Library/Caches/Yarn</code>&nbsp;&#8212; Yarn cache</p></li><li><p><code>~/.gradle</code>&nbsp;&#8212; Gradle cache</p></li><li><p><code>~/.m2</code>&nbsp;&#8212; Maven cache</p></li><li><p><code>~/.cocoapods</code>&nbsp;and&nbsp;<code>~/Library/Caches/CocoaPods</code>&nbsp;&#8212; CocoaPods cache</p></li><li><p><code>~/.nvm</code>&nbsp;&#8212; Node Version Manager cache</p></li><li><p><code>~/.android</code>&nbsp;&#8212; Android cache</p></li><li><p><code>~/Library/Caches/Homebrew/downloads</code>&nbsp;&#8212; Homebrew cache</p></li><li><p><code>~/Library/Developer/Xcode</code>&nbsp;&#8212; Xcode cache</p></li><li><p><code>~/Library/Developer/CoreSimulator</code>&nbsp;&#8212; iOS Simulator cache</p></li></ul><p>In addition to all of these, in your individual project repos, you can delete these folders of less used projects, they can be easily recreated if needed:</p><ul><li><p><code>node_modules</code>&nbsp;&#8212; Just run&nbsp;<code>npm install</code>&nbsp;again when needed</p></li><li><p><code>android/app/build</code>&nbsp;&#8212; Just rebuild the Android app when needed</p></li></ul><p>After deleting all the folders above, you should easily be able to reclaim around 100GB of free space. Make sure to run the following command in your primary project to rebuild the caches &#8212; this will take time the first time.</p><ul><li><p><code>npm install</code>&nbsp;or&nbsp;<code>yarn</code>&nbsp;in your primary projects</p></li><li><p><code>pod install</code>&nbsp;in your project&#8217;s iOS directory</p></li><li><p><code>.gradlew build</code>&nbsp;in your project&#8217;s Android</p></li></ul><p>With all of this done, you should have a lot of free space for many weeks before the caches begin to fill up again! Then you can come refer back to this guide to help free up disk space on your Mac laptop.</p>]]></content:encoded></item><item><title><![CDATA[Managing Thoughts]]></title><description><![CDATA[Emulate habits, not behaviours of successful people.]]></description><link>https://paramaggarwal.substack.com/p/managing-thoughts</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/managing-thoughts</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Wed, 04 Mar 2020 07:31:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Negative thoughts compound. The more you think of yourself as worthless, stupid, or ugly, the more you condition yourself to interpret life that way. You get trapped in a thought loop.</p></blockquote><h2>Why do we expect so much from ourselves?</h2><p>Often we feel that the most difficult part about improving is to figure out what to do. When we see someone successful we tell ourselves that we also want to be the same and then we try to copy the most superficial aspects of the person in order to attempt to replicate their success. This is why we set such unrealistic goals on ourselves. Also we fall into the trap of thinking that if we think it, it will be done.</p><h2><strong>Why do we then feel worthless when we fail to achieve these goals within a matter of few days?</strong></h2><p>Because it is easy find logic in our thoughts and ideas. As an example, it is easy to read an article that says that breathing slowly helps improve mindfulness and then we tell ourselves I am going to breathe slowly every day.</p><p>In that moment we feel we have made a sensible target and that now onwards we will change this aspect about ourselves. But actually we have defined nothing. Hence the next day it is easy to feel bad that we didn&#8217;t do anything about it. Actually we never defined what was to be done in the first place.</p><p>We only defined what we want, not how to get it.</p><h2><strong>Why do we then form a negative image of ourselves for not being able to accomplish things?</strong></h2><p>This I believe stems from an unreasonable expectation of plasticity from self. That is, that if I think I will do B instead of A every day then magically I will be able to stick to this thought process. But humans are creatures of habit and they will go back to doing A very quickly.</p><p>Hence once we do this deep thought exercise we realise that we should:</p><ol><li><p>Read a lot</p></li><li><p>Not fall into the trap of setting arbitrary goals of &#8220;I&#8217;ll become this different persons from now&#8221;</p></li><li><p>Not self-disrespect self and speak of self in third person. Be kind to self.</p></li><li><p>Focus on moments rather than end-of-day retrospects. What should I do right now? If you don&#8217;t have answer then build a habit plan and refer it when in doubt.</p></li></ol><p>With this foundational thought exercise, we should now read this again.</p><p>Negative thoughts compound. The more you think of yourself as worthless, stupid, or ugly, the more you condition yourself to interpret life that way. You get trapped in a thought loop.</p><p>On reading this the second time, we learn that we think of ourself as worthless, because we don&#8217;t see ourself as ourself. We see ourself as the person in front of us in that moment who we want to be like.</p><p>We feel stupid because we feel that converting a goal into actionable steps is trivial and anyone could do it.</p><p>We feel ugly because we are always looking at the best quality in the other person and grading ourself against that peak attribute of the other person.</p><h2><strong>You get trapped in a thought loop.</strong></h2><p>Now every time we look at someone, we are conditioned to think that there is a vast expanse between where I stand and where the other person stands and I will never be able to get there.</p><h2><strong>Why practice?</strong></h2><ul><li><p>Painting is a link from mind to brush.</p></li><li><p>Writing is a link from mind to words.</p></li><li><p>Driving is a link from mind to wheel.</p></li><li><p>Cooking is link from mind to pan.</p></li></ul><p><em><strong>Thinking and doing becomes one.</strong></em></p>]]></content:encoded></item><item><title><![CDATA[Did Android help Google?]]></title><description><![CDATA[Android, Inc.]]></description><link>https://paramaggarwal.substack.com/p/did-android-help-google</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/did-android-help-google</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 02 Jun 2019 10:32:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Android, Inc. was founded in 2003 by Andy Rubin and team. The early intentions of the company were to develop an advanced operating system for digital cameras. Though, when it was realized that the market for the devices was not large enough, the company diverted its efforts toward producing a smartphone operating system that would rival <a href="https://en.wikipedia.org/wiki/Symbian" title="Symbian">Symbian</a> and Microsoft <a href="https://en.wikipedia.org/wiki/Windows_Mobile" title="Windows Mobile">Windows Mobile</a>. Despite the past accomplishments of the founders and early employees, Android Inc. operated secretly, revealing only that it was working on software for mobile phones.</p><p>In July 2005, <a href="https://en.wikipedia.org/wiki/Google" title="Google">Google</a> acquired Android Inc. for at least $50 million. Not much was known about Android Inc. at the time, but many assumed that Google was planning to enter the mobile phone market with this move. At Google, the team led by Rubin developed a mobile device platform powered by the <a href="https://en.wikipedia.org/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a>. Google marketed the platform to handset makers and <a href="https://en.wikipedia.org/wiki/Mobile_network_operator" title="Mobile network operator">carriers</a> on the promise of providing a flexible, upgradable system. Google had lined up a series of hardware component and software partners and signaled to carriers that it was open to various degrees of cooperation on their part.</p><p>Speculation about Google&#8217;s intention to enter the mobile communications market continued to build through December 2006.<a href="https://en.wikipedia.org/wiki/Android_%28operating_system%29#cite_note-McKay-35">[33]</a> An earlier prototype codenamed &#8220;Sooner&#8221; had a closer resemblance to a <a href="https://en.wikipedia.org/wiki/BlackBerry" title="BlackBerry">BlackBerry</a> phone, with no touchscreen, and a physical, <a href="https://en.wikipedia.org/wiki/QWERTY" title="QWERTY">QWERTY</a> <a href="https://en.wikipedia.org/wiki/Computer_keyboard" title="Computer keyboard">keyboard</a>, but was later re-engineered to support a touchscreen, to compete with other announced devices such as the 2006 <a href="https://en.wikipedia.org/wiki/LG_Prada" title="LG Prada">LG Prada</a> and 2007 Apple <a href="https://en.wikipedia.org/wiki/IPhone" title="IPhone">iPhone</a>.</p><p>At <a href="https://en.wikipedia.org/wiki/Google_I/O" title="Google I/O">Google I/O</a> 2014, the company revealed that there were over one billion active monthly Android users, up from 538 million in June 2013. How many of them have the Play Store installed? How many of them can Google ship a software update to directly? Android is a platform, it has far too many variants to list.</p><p>Google bought Android, the company in 2006 &#8212; started by Andy Rubin.</p><p>Google bought Android in 2006. Android started out by cloning the then popular Blackberry. because Reason being they wanted control on mobile platforms, so that their services were not side tracked.</p><p>They quickly re-align strategy to copy iPhone instead by 2008. By 2012, they have spent more than 10 billion buying Motorola to have a patent portfolio and develop Android, still giving it away for free in *hope* of future profits.</p><p>Today, Android is great. But the two companies with a majority of the smartphone market are Apple and Samsung.</p><p>Samsung day-by-day threatens a move to another platform, or fork Android (like Kindle) with it&#8217;s own default apps, and a store for media and apps.</p><p>Apple on the other hand is still the platform where Google makes most of its money with advertising from the default search, in-game advertising, and dedicated native apps for most of its services.</p><p>So how did Android help Google?</p>]]></content:encoded></item><item><title><![CDATA[Fixing the Wrong Problems]]></title><description><![CDATA[Cities need to come to the people, not people going to the cities.]]></description><link>https://paramaggarwal.substack.com/p/fixing-the-wrong-problems</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/fixing-the-wrong-problems</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 02 Jun 2019 10:31:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Cities need to come to the people, not people going to the cities.</p><p>US citizenship is based on birth. So if companies are still picking immigrants to do the job, it is more a sign of the availability of skilled people.</p><p>US does not need to do manufacturing &#8212; they have moved on to doing high level design. Manufacturing is commoditized.</p><p>During this time of change, people who are on the gaining edge &#8212; the west and east coast of the US, which does fashion design, industrial design, software design &#8212; are all happy and see the prosperity that the US is gaining. They were fortunate to have education in the relevant areas that eventually made it big.</p><p>On the other hand, people in the center of the country, people into manufacturing, farming and other industries are hurt because over time due to work that the west and east coast people did, these tasks became commoditized and it was easier to import labour and do these things. In many cases, machinery and industrial automation (again a work of the coastal people) caused the central people to lose their livelihood.</p><p>Hence when it came time to vote, the media, the influencers and everybody jumped into it saying we need to focus on things like equality and making america more open. While the people in the center said &#8212; hey &#8212; just give our jobs back.</p><p>Now we know how that turned out &#8212; people on the coasts are less in numbers compared to the center &#8212; and if it was a voting game, the center had to win.</p><p>But the deeper problem is that we are attacking the symptom directly. Here is the chain of thought:</p><ol><li><p>I lost my job.</p></li><li><p>I want my job back.</p></li><li><p>This presidential candidate keeps saying he&#8217;ll get my job back.</p></li><li><p>Give me my job back.</p></li><li><p>Who took away my job? That immigrant!</p></li><li><p>They do not belong here, send them back.</p></li><li><p>Give me my job back!</p></li></ol><p>Now I don&#8217;t mean that in jest &#8212; someone losing their job is serious and I sympathesize with the situation, but again, we are attacking the symptom instead of solving the root of the problem.</p><p>Currently the proposed solution is to force companies to setup manufacturing bases back in the US. This sounds familiar &#8212; this is exactly what China got really good at in the past decade &#8212; competing with US for crude oil resources along the way. Have we come to a point that US political strategy is guided by what China has been doing over the past few years? Even India is heavily focused on bringing manufacturing into the country with the &#8220;Make in India&#8221; program.</p><p>So where does this leave the current state of the economy?</p><p>Most computer and vehicle manufacturers will setup a triplet of bases &#8212; US, India and China. For example, it is rumoured that the other two sites for Tesla&#8217;s battery megafactories will be China and India. I don&#8217;t think this will bring any economic benefit to the US. To really understand who gets the lion&#8217;s share of the value chain, we need to understand where the design is happening.</p><p>This is not because of the number of people design oriented jobs employ, but because the wave of manufacturing automation is going to be led by the industry that can pioneer automation.</p><p>If the United States is going to be distracted by bringing jobs back to the country by forcing manufacturing back into the country, they might lose their current status as design leads and eventual manufacturing automation pioneers &#8212; the challenge being that they would bring manufacturing back into the country, but run by robots instead of humans.</p>]]></content:encoded></item><item><title><![CDATA[A Day in the Old Era of 2017]]></title><description><![CDATA[Things weren&#8217;t always the way they are today.]]></description><link>https://paramaggarwal.substack.com/p/a-day-in-the-old-era-of-2017</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/a-day-in-the-old-era-of-2017</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 02 Jun 2019 10:31:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Things weren&#8217;t always the way they are today. So many things that we take for granted today actually were considered outright <em>wrong and</em> in some cases even outright illegal. People went to war over some ideas that today appear irrelevant and irrational.</p><p>Marijuana was considered illegal by most major countries and governments actively fought to educate the people about its supposed harmful effects and how they were protecting them.</p><p>People used to get very touchy on topics of racism especially in the white/black categorisation. Also women who called themselves feminists would get very touchy if someone made a comment that put classified women differently from men.</p><p>Censorship was at an all time because of how easy it was. All broadcast media like TV and music was subject to extensive censorship of words even though everyone knew what was being spoken. As if everyone was playing along in the game of acting like a few words did not exist.</p><p>Governments of different countries used to treat their own currencies as something unique and every other country was a separate distinct thing. You had to pay large fees to convert between these different debt certificates that the government would give you.</p><p>People used to walk into secure locations to press a button to give their vote to a representative who would then act on their behalf. At that time, such a system existed because it was believed that not everyone can actually participate in the decision making process of the government and hence would elect a chain of representatives</p><p>At its peak, the realty business for greedy and went bust. But it came back because governments were afraid of the chain reaction it might cause to let capitalism work they it is supposed to work. Hence the illness and virus continue to live for a few more years. But of course it was no longer important to get a restaurant in a prime location because people would generally simply order in. Even if they did eat out, it would be something closer to where they live.</p><p>People&#8217;s choice of where they live would no longer be a function of where they worked. Office was relegated to not being a place of work, but a place of collaboration &#8212; going to office meant that something was seriously wrong and everyone needed to get into a room to figure things out.</p><p>Offices stopped trying to fight for the most exotic tech spaces as it was not very important to have an office location.</p><p>Instead of people migrating onwards to the city centre, everyone started spreading out. Cities grew in area and smaller cities became larger. Population that traditionally used to concentrate towards dense areas started to instead radiate outwards into less dense areas &#8212; like a gas molecules diffusing into vacuum</p><div><hr></div><p><em>This essay is inspired by &#8220;What You Can&#8217;t Say&#8221; by Paul Graham. You can read it here:</em> <em><a href="http://www.paulgraham.com/say.html">http://www.paulgraham.com/say.html</a></em></p>]]></content:encoded></item><item><title><![CDATA[What if: WhatsApp as a foundation of Digital Governance]]></title><description><![CDATA[For the purpose of this article, we use WhatsApp as an example because of it being completely immersed in India sub-culture.]]></description><link>https://paramaggarwal.substack.com/p/what-if:-whatsapp-as-a-foundation-of-digital-governance</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/what-if:-whatsapp-as-a-foundation-of-digital-governance</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 02 Jun 2019 10:30:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For the purpose of this article, we use WhatsApp as an example because of it being completely immersed in India sub-culture.</p><h3>Identity</h3><p>Originally we had a name that was used to identify us. If we went to a shop or to a friend we would mention our name and they would be able to mentally pull up a backfground info about us. For example what kind of person we were, could they trust us and whether they are ok lending something to us. We added out family name to our first name to be able to extend this set of background data to our families. Because we grew up in closed knit communities, it was safe to assume that a child had very similar qualities to their parents. Our address was our messaging mechanism. We would communicate with bus</p><p>Skip forward to the internet and email became the means of identification as well as messaging. Plastic money called credit cards moved from the physical domain into electronic domain with PayPal continuing to use the concept of an email address as a means of payment.</p><p>Later with rise of mobile phone apps, it was much more easier to use the phone number as a means of auth. Today, my phone number has become my unique ID in this country. More than my Aadhaar number of my PAN number &#8212; my phone number has much more data about everything that I do. Messaging, banking, login to apps everything operates based on this 10 digit number. Losing access to this number in today&#8217;s age is serious &#8212; just like getting a house robbed in the olden days.</p><p>But a new layer of infra is coming up that is set to make the concept of a phone number irrelevant.</p><p>A lot of phone calls and text messaging is moving to the internet &#8212; with rise of messaging apps. These apps have their own identification and messaging constructs. Over time they have also added payments.</p><p>Let&#8217;s talk about INdia. Here WhatsApp is the most common app that one might have. Initially Whatsapp was just an alternative to SMS, and it extended the concept of a phone number by using it as your ID on WhatsApp (compared to the earlier days of AIM usernames and BBM pins).</p><p>Over time WhatsApp added phone calls and video calls. Carriers have tried to compete with this by introducing VoLTE calls &#8212; which are essentially phone calls over 4G using an open standard.</p><p>Now WhatApp has added payments as well and I think they are just one step away from becoming core infrastructure for everything we do.</p><p>WhatsApp login would be a way to login to apps using WhatsApp. Once you are logged in, you can manage payments and messaging with that business via WhatsApp.</p><p>Over time as India becomes more government controlled, there will be more and more surveillance of money spending via Aadhar and UPI. Also cash has been demonised as demonetised.</p><p>Hence I look forward to the surge of some other form of currency that can be used for under the table transactions and currently my mind is on crypto currency</p><p>Another trend I want to keep an eye on is the rise in importance of the phone number. It is almost a universal identifier for a person even more so that their e-mail ID. And it&#8217;s much more public than any other form of ID like Aadhar or PAN.</p><p>What I mean to say is that given my phone number, there is almost everything to be found about me and all online accounts can be controlled using OTP password reset.</p><p>This is not comfortable. I foresee a rise of some other form of auth mechanism. Similar to how phone took over from email ID.</p><p>Currently I am thinking it will be some sort of crypto based thing. The phone device will generate a random token and then use that for login to all services.</p><p>This is technically a phone number itself. It starts out as a random 10 digit number but slowly becomes a very important part of or life.</p><p>That means there is something that will occur on the phone number side of things. Especially because concept of cellular call switching is going away.</p><p>This is taking me in the direction of a WhatsApp based auth system. Imagine SMS OTP auth but over WhatsApp.</p><p>Like a cross between Facebook login and SMS based OTP.</p><p>This will be more secure with longer auth codes and no need for manual typing.</p><p>WhatsApp is currently tackling payments and based on above thinking they might tackle auth next. Especially if they dig into merchant payments.</p><p>WhatsApp OAuth</p>]]></content:encoded></item><item><title><![CDATA[How Websites Evolved Back to Static HTML/CSS/JS Files]]></title><description><![CDATA[Or, the JAM stack.]]></description><link>https://paramaggarwal.substack.com/p/how-websites-evolved-back-to-static-html-css-js-files-57ce549f81db</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/how-websites-evolved-back-to-static-html-css-js-files-57ce549f81db</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Tue, 28 May 2019 16:19:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oPsu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oPsu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oPsu!,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%2F1400863f-54c9-4898-83cd-c979c88f1460_1024x682.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Everyone likes to talk about the good old days of simply being able to create a new file with a .html extension and start making a website instead of how we do it today &#8212; setting up a highly complex build system to get anywhere near to a basic hello world project.</p><h3>The HTML Era</h3><p>HTML (Hyper-text Mark-up Language) itself was simply a way to <em>mark</em> text and specify the styling and treatment of text. You could technically publish text as is online. But you could really go places by <em>marking</em> up a specific part of your text as an <em>anchor </em>and then being able to click that and open another document!</p><p>We were not satisfied with the basic capabilities like <strong>bold </strong>and <em>italics </em>so we built CSS. Now, we wanted to modify some parts of the HTML/CSS in response to things like clicking things, so we implemented a scripting language to quickly specify such relations and have then run within the browser itself instead of a round trip to the server.</p><p>But the key point here is that the way we developed our site was still about having multiple files open and writing the HTML/CSS and JS separately. Even deployment extended further by simply hosting these files on a static file server like Apache.</p><h3>The PHP Era</h3><p>Overtime, we were still not happy with the ability to <em>markup</em> text (HTML), ability to style this markup (CSS) and even be able to script small behaviours to this (JS) &#8212; we wanted to serve a different HTML to different people!</p><p>And so was born PHP, it feels like a natural extension to HTML itself. You write your code between your HTML file itself and then be able to run those parts on the server, which further generate HTML and the final HTML gets send to the browser.</p><p>This was extremely powerful. We could serve completely different pages to different users even though all of them access the same URL like Facebook. We could use a database on a server and store some data there, then based on some conditions use this data to modify the generated HTML and technically have an infinite number of pages available to serve (e-commerce).</p><h3>The Dark Age</h3><p>Somewhere on this path to render pages on the fly (SSR) and render pages on the client (SPA) we forgot about the performance of our webpages. We were trying to build apps. But the web is about presenting content first and foremost!</p><p>We built large front-end frameworks to do everything on the client itself. But then we also ported those JS engines to the server so that we could run the same code on the server as well.</p><p>We built complex build and language transpilation tools to make sure that the differences of so many environments are abstracted away so that we can run the same code everywhere.</p><p>On the one hand we were stuck scaling these servers while on the other hand we were showing users blank white pages till all the JS had downloaded and they were ready to see the content.</p><p>To solve this, we decided to do both! We would render the page on the server first, then serve the JS, then the JS would take over and run on the client only. Nice! Congrats &#8212; you have now shipped your server-side code to each and every user for them to run it in their browser.</p><p>Even if a small part of your page is interactive, the logic to render the entire page is shipped to the client and any subsequent pages that would render.</p><h3><strong>The JAM Stack</strong></h3><p>Javascript, APIs and Markup &#8212; this stack is all about finding middleground from the chaos of SSR+SPA. It is about stepping back and asking yourself, what parts of my page change and what parts don&#8217;t change?</p><p>The parts that don&#8217;t change often are pre-rendered on the server and saved to static HTML files. Anything else is implemented in JS and run on the client using API calls.</p><p>This has the benefit of avoiding too much data transfer (like the hydration data for SSR) and finding a good tradeoff to shipping content on the web.</p><p>But even more importantly, this allows you to leverage the power and cost oF CDNs to effectively serve your content. And with serverless apps, your APIs will never need a server to SSH into and manage.</p><h3>Conclusion</h3><p>I find it fascinating that we are back to generating separate HTML/CSS and JS files and then putting them on a static file server &#8212; the CDN. It has been a decade long effort and as we come back to where we started, I feel like we are at a whole another level (a spiral?).</p><p>At the end of the day, the output remains the same, but we have much more sophisticated tooling similar to many other things in life. Imagine the complexity involved in converting your voice into bits and transmitting it over a combination of wires and air spectrum to reach the other person contrary to the past where we would just travel and meet people. Over time the outcome remains the same, but by introducing complexity and then effectively abstracting it away, we are able to accomplish things indistinguisable from magic.</p><p><em>I wrote this for my newsletter:</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://paramaggarwal.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Sign up now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://paramaggarwal.substack.com/subscribe?"><span>Sign up now</span></a></p>]]></content:encoded></item><item><title><![CDATA[How to be Right by Being Wrong]]></title><description><![CDATA[Photo by Jilbert Ebrahimi on Unsplash]]></description><link>https://paramaggarwal.substack.com/p/how-to-be-right-by-being-wrong-9fd26dca20b3</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/how-to-be-right-by-being-wrong-9fd26dca20b3</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 17 Dec 2017 08:21:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!d_Nx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d_Nx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d_Nx!,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%2F1128ab21-e473-456f-85a4-5aea830c5675_1024x442.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Photo by <a href="https://unsplash.com/photos/pVEcNabAg9o?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jilbert Ebrahimi</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p><h4>Being wrong is better than <em>staying shut in the pursuit of the right</em>.</h4><p>I take joy in being wrong sometimes &#8212; it&#8217;s my gateway to coming out as right eventually. By being wrong, I put myself in a vulnerable position and hence at the receiving end of a lot of information &#8212; more than I would be able to find if I had instead chosen to claim to be right from the start.</p><p>Intentionally saying something that I know has a high chance of being wrong allows others to immediately jump to correcting me and hence fill in the gaps in my understanding in the most efficient way possible. By being so visibly and obviously wrong, the amount of effort someone needs to correct me with the exact piece of missing information is trivial.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AyAu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AyAu!,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%2F427cbf97-613c-48d3-ab15-385fc83e8e41_664x906.jpeg 1456w" sizes="100vw"></picture><div></div></div></a><p>Assume you don&#8217;t know how to make the nose.</p><p>Let&#8217;s speak with a metaphor &#8212; say you are building a sculpture but you don&#8217;t know how to make a human nose on your otherwise beautiful sculpture.</p><p>You have two options:</p><ol><li><p>Not make a nose at all because you were busy asking for help.</p></li><li><p>Make it in the best way you can. But you can immediately see that it&#8217;s wrong.</p></li></ol><p>Now consider the difference between the two:</p><ol><li><p>In the first option you may reach out to the best sculptors on how to correctly make a nose and they get back to you saying they do not have time to help you.</p></li><li><p>In the second option, people like your sculpture but can&#8217;t bare to see the crooked nose and immediately offer tips on how to correct it or even offer to correct it for you.</p></li></ol><p>Human phsychology has a basic rule &#8212; it&#8217;s always easier to edit something than create something. This is why so many writers struggle with a blank piece of paper, artists struggle with a blank canvas and programmers struggle with a blank editor screen.</p><p>Extending from this basic concept, it is always easier for someone to correct you than actually answer your question from scratch.</p><p>It&#8217;s not that you are being sinister here. Asking a question is ineffective because the other person has no context of how much you understand &#8212; they need to lay out the context for you first. But by simply saying what you know, it is easy to point out which assumptions are wrong and will eventually help you be right.</p><p>Hence, while a lot of people out there are concerned with being always right and never wrong &#8212; I believe a meaningful approach is focussing on speaking what you know. Others will instinctively fill in the gaps for you.</p><p>It&#8217;s about starting from scratch vs. starting with a hypothesis. By always having something on the table you give others the option to shape the discussion and everyone learns.</p><p>Next time you are in a discussion, don&#8217;t be afraid of contributing the nose to the sculpture on the table &#8212;even if you immediately know you did it wrong, someone will fix it for you, but if you never contribute then it might never exist.</p><p>&lt;a href="https://medium.com/media/76db180fa6aefb00e9f9b0371c0f5ba8/href"&gt;https://medium.com/media/76db180fa6aefb00e9f9b0371c0f5ba8/href&lt;/a&gt;</p>]]></content:encoded></item><item><title><![CDATA[Try…]]></title><description><![CDATA[Try https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pc13.bin]]></description><link>https://paramaggarwal.substack.com/p/try-https-github-com-rogerclarkmelbourne-stm32duino-bootloader-blob-master-binaries-8f1ab0f2fa59</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/try-https-github-com-rogerclarkmelbourne-stm32duino-bootloader-blob-master-binaries-8f1ab0f2fa59</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Wed, 13 Dec 2017 23:40:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Try <a href="https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pc13.bin">https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/binaries/generic_boot20_pc13.bin</a></p>]]></content:encoded></item><item><title><![CDATA[The Era of Candidate Databases is Over]]></title><description><![CDATA[(source)]]></description><link>https://paramaggarwal.substack.com/p/the-era-of-candidate-databases-is-over-30f19c31e8c2</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/the-era-of-candidate-databases-is-over-30f19c31e8c2</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Fri, 20 Oct 2017 16:27:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3Ss8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Ss8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3Ss8!,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%2F0d62850c-ead0-4d12-af7c-1acc09ec72fb_1024x225.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>(<a href="https://unsplash.com/photos/iw7QgT1uv-4">source</a>)</p><h4>Scraping and aggregating millions of candidate resumes and profiles is a solved problem. Storage is free. It&#8217;s time to bring meaning to each profile.</h4><p>In the 90&#8217;s anyone could create a website. You could either use one of the free website creation tools, or you could create one by hand after learning some HTML/CSS if you were so inclined. You would still manage to get hosting for free using the many free hosting providers. It was suddenly possible for domain experts to build a community around themselves. Low-carb cooking, acrylic-on-glass painting, vintage motorcycle repair &#8212; you name it and you could build a community around it.</p><p>But with the proliferation of these islands of information, arose a new problem &#8212; how do you get to these people? Yahoo solved this by curating a database of these websites by category. Looking for info about that particular cooking recipe? Search the Yahoo Directory and you shall find it.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xe3Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 424w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 848w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 1272w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/45248732-8093-403e-bc1e-fc76137e21b3_800x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 424w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 848w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 1272w, https://substackcdn.com/image/fetch/$s_!Xe3Y!,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%2F45248732-8093-403e-bc1e-fc76137e21b3_800x598.png 1456w" sizes="100vw"></picture><div></div></div></a><p>The Yahoo Small Business directory.</p><p>As the number of sites in each category grew, we now had to find out which is the best of these? Everyone is claiming that they are a great cooking recipe website &#8212; but which is truly the best? Which one deserves your time?</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E-vO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 424w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 848w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 1272w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 424w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 848w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 1272w, https://substackcdn.com/image/fetch/$s_!E-vO!,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%2F08f39f63-493a-437b-bb2d-3fbb168916d6_580x407.png 1456w" sizes="100vw"></picture><div></div></div></a><p>The early days of Google.</p><p>Here comes Google and their PageRank algorithm. By ranking each page by the number of incoming links as well as scraping the site for content &#8212; Google was able to pair the claims of the website with the validation of other similar websites linking to them. It was the first verified index of interest groups on the web.</p><blockquote><p>The story is not so different for candidate resumes and the problem of hiring.</p></blockquote><p>Initially the resume was a closely guarded secret. If you were a recruiter I trust, I would share a hard copy of my resume with you, which was a history of my past companies and roles. This would still not contain details about my specific project experience and you would need to convince me for me to share those with you over phone.</p><p>Eventually the resume moved online, and you had the concept of a candidate profile online on multiple job boards. There are multiple online networks of candidates to tap into. Each candidate keeps their profile up to date and we can easily search by the kind of skill we are looking for. We quickly queue up a lot of candidates from these portals in our applicant tracking tool and then begins the arduous process of evaluating them.</p><p>To me, this sounds similar to having come across a large list of relevant sites and now visiting each of them to actually find the website that is most likely to answer my question.</p><blockquote><p>Is there a way to better validate candidates and really know who is the best &#8212; even before we start interviewing?</p></blockquote><p>The answer is that this too is a solved problem &#8212; but with a catch. Companies interview candidates, and keep an ongoing record of the good ones, even though they might not have an opening at that moment. Larger companies have larger records, but there is still no way to tap into this hidden secret. This is a closely guarded secret just like the resume was in the early days.</p><p>I believe it is a matter of time before we are able to tap into a validated pool of candidates &#8212; where we can jump straight to the interview process without needing a review or screening. This is possible by running machine learning on the feedback that an interviewer might post and building a profile of what the candidate is good at. The feedback remains private to the interviewer and the company, but the validation of the candidate&#8217;s skill can be tagged to the candidate profile.</p><blockquote><p>It&#8217;s time to move from a candidate database to a smart searchable pool of verified candidate profiles.</p></blockquote><p>Instead of having a candidate profile with ten different skills listed &#8212; and god forbid the all-too-common skill of being able to use Word and Excel &#8212; we have a resume of just three skills that the candidate is really good at &#8212; because they have already been interviewed on them and were positively rated.</p><p>In this world, when I am looking for candidates who are great at building websites, I instantly see the ten best candidates suites for the role, and I can skip the review or screening stages with confidence &#8212; and directly call them in for interviews!</p><p>Now, that definitely sounds like how hiring should be today!</p><p><em>We are building Caliber &#8212; a system that understands candidates and openings more deeply. You can try our first product today &#8212; a single gathering place of all ongoing evaluations for your team.</em></p><p><a href="https://www.caliberbox.com">Caliber</a></p><p><em>Sign up is free and takes just a single click. Try it out!</em></p><p>We are also on Product Hunt:</p><p>&lt;a href="https://medium.com/media/410f56d3a49e35c407ff1a2dbfb5fb86/href"&gt;https://medium.com/media/410f56d3a49e35c407ff1a2dbfb5fb86/href&lt;/a&gt;</p><div><hr></div><p><a href="https://medium.com/caliberbox/the-era-of-candidate-databases-is-over-30f19c31e8c2">The Era of Candidate Databases is Over</a> was originally published in <a href="https://medium.com/caliberbox">Caliber</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded></item><item><title><![CDATA[Two Flash Talks from 2013–14]]></title><description><![CDATA[Summarising two flash talks I did a few years ago, and how the ideas still continue to be open problems today in 2017!]]></description><link>https://paramaggarwal.substack.com/p/two-flash-talks-from-2013-14-53ed82538e66</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/two-flash-talks-from-2013-14-53ed82538e66</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 25 Jun 2017 14:24:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ddKf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Summarising two flash talks I did a few years ago, and how the ideas still continue to be open problems today in 2017!</h4><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ddKf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ddKf!,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%2F1b3bd70f-ea8e-4cb6-be1d-6e103bdcef60_1024x682.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>by <a href="https://www.flickr.com/photos/hasgeek/12793265184/">HasGeek</a></p><p>At JSFoo 2013, a Javascript conference in Bangalore &#8212; in a turn of events, I gave a small 5 minute flash talk with my friend <a href="https://medium.com/u/8d1a62a6ebbb">Chetan Agrawal</a>.</p><p>Today in a world of web-apps, everything runs in the browser, but that means that the web-app itself needs to load every time you access the site. How about the server render it the first time so that you can see the content straight-away?</p><p>&lt;a href="https://medium.com/media/45226a93e55704448e0e1a80a7f6fd6b/href"&gt;https://medium.com/media/45226a93e55704448e0e1a80a7f6fd6b/href&lt;/a&gt;</p><p>Head on to this <a href="https://youtu.be/ZvXuW3tyQF0?t=6m35s">YouTube video</a>. We are at the 6min 35sec spot.</p><p>At <a href="http://metarefresh.in">MetaRefresh 2014</a>, I gave a small 3min flash talk about a little project of mine. MetaRefresh is a conference for user interfaces on the web. It&#8217;s a yearly event in Bangalore.</p><p>Front-end engineers are in a position of power today. Node.js, browser-side frameworks like Angular/React, back-end services like Pusher/Parse/Firebase and mobile app platforms like PhoneGap &#8212; basically mean that a front-end engineer can build an entire app, make it realtime and also make it work on all mobile devices. This is insane!</p><p>Head over to <a href="https://www.youtube.com/watch?v=iG01gVs9Wpo">my little talk on YouTube</a>.</p><p>&lt;a href="https://medium.com/media/408bd7c72a8023243d377c679743d59e/href"&gt;https://medium.com/media/408bd7c72a8023243d377c679743d59e/href&lt;/a&gt;</p>]]></content:encoded></item><item><title><![CDATA[On Good Taste]]></title><description><![CDATA[Ira Glass gave an interview in 2009 about storytelling and happened to mention something that absolutely nobody tells beginners &#8212; without which many of them just quit.]]></description><link>https://paramaggarwal.substack.com/p/on-good-taste</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/on-good-taste</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sat, 25 Mar 2017 13:43:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xZ7P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xZ7P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xZ7P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xZ7P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*KZVF4BAaiJt61OIaMkvBvg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;([credit](https://unsplash.com/photos/Lnou48GrIWc))&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="([credit](https://unsplash.com/photos/Lnou48GrIWc))" title="([credit](https://unsplash.com/photos/Lnou48GrIWc))" srcset="https://substackcdn.com/image/fetch/$s_!xZ7P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xZ7P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*KZVF4BAaiJt61OIaMkvBvg.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><h2>Ira Glass gave an interview in 2009 about storytelling and happened to mention something that absolutely nobody tells beginners &#8212; without which many of them just quit.</h2><a class="image-link image2" target="_blank" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-attrs="{&quot;src&quot;:&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image to preserve aspect ratio of the iframe&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image to preserve aspect ratio of the iframe" title="image to preserve aspect ratio of the iframe" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"></picture><div></div></div></a><p>In 2011, <a href="https://vimeo.com/thedak">David Shiyang Liu</a> made this kinetic typography and it has one and half million views today. He made it as part of his 30 day creativity challenge, and he came up with this on Day 6 &#8212; after, having worked for three days on it.</p><p><strong><a href="http://zenpencils.com/comic/90-ira-glass-advice-for-beginners/" title="http://zenpencils.com/comic/90-ira-glass-advice-for-beginners/">ZEN PENCILS</a></strong></p><p><a href="http://zenpencils.com/comic/90-ira-glass-advice-for-beginners/" title="http://zenpencils.com/comic/90-ira-glass-advice-for-beginners/">_Ira Glass (1959-) is a radio broadcaster and host of the award-winning program and podcast This American Life . My&#8230;_zenpencils.com</a></p><p>In 2012, <a href="http://zenpencils.com/about/">Gavin Aung Than</a> of Zen Pencils made this beautiful cartoon. He mentions how the very thought of starting Zen Pencils after quitting his job took around having made 500 cartoons first.</p><a class="image-link image2" target="_blank" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-attrs="{&quot;src&quot;:&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image to preserve aspect ratio of the iframe&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image to preserve aspect ratio of the iframe" title="image to preserve aspect ratio of the iframe" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"></picture><div></div></div></a><p>In 2014, <a href="https://vimeo.com/frohlocke">Daniel Sax</a> made this beautiful adaptation and has garnered another one and a half million views. But success didn&#8217;t come easy &#8212; it took him a year to go from concept to upload.</p><a class="image-link image2" target="_blank" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-attrs="{&quot;src&quot;:&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image to preserve aspect ratio of the iframe&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image to preserve aspect ratio of the iframe" title="image to preserve aspect ratio of the iframe" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>In 2015, young creative motion graphics artist <a href="https://www.youtube.com/user/creaviteproductions/about">Saar Oz</a> made this a year after Daniel&#8217;s video. This one is going to touch a million views. But it is actually his 12th motion graphic video before he had this huge hit.</p><blockquote><p>You just have to fight your way through.</p></blockquote><p>The message that Ira makes is beautiful, but I love how the message shows in two ways in all the above works. One literally by what shows on screen, and one metaphorically by what is behind the work.</p><a class="image-link image2" target="_blank" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-attrs="{&quot;src&quot;:&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image to preserve aspect ratio of the iframe&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image to preserve aspect ratio of the iframe" title="image to preserve aspect ratio of the iframe" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>The original video is just one clip of a four part interview. Ira mentions that one needs to constantly keep doing till the really great things emerge. And yes, to come up with this little gem of advice, it took an entire twenty minutes speaking on the interview.</p><p><em>It takes time, so the best you can do, is to just do.</em></p><div><hr></div><p><em>If you enjoyed this little compendium, please hit</em> <em><strong>Recommend</strong> &#8212; it helps other people discover it on Medium.</em></p>]]></content:encoded></item><item><title><![CDATA[iPad Line-up and The New 10.5" Model]]></title><description><![CDATA[A gentler approach to how Apple might update the iPad line-up by the end of this year.]]></description><link>https://paramaggarwal.substack.com/p/ipad-line-up-and-the-new-10.5&quot;-model</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/ipad-line-up-and-the-new-10.5&quot;-model</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Tue, 21 Mar 2017 02:34:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fB9O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>A gentler approach to how Apple might update the iPad line-up by the end of this year.</h2><p>Today, John Gruber wrote <a href="http://daringfireball.net/2017/03/about_that_10_point_5_inch_ipad" title="Permanent link to &#8216;About That Purported 10.5-Inch iPad&#8217;">About That Purported 10.5-Inch iPad</a>, which makes good points against the rumors spreading. Here, I demonstrate how the line-up might evolve with pictures.</p><p>This month, we&#8217;ll see a silent update to the iPad line-up, without an announcement event. All iPads get a $100 price-cut as always.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fB9O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fB9O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 424w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 848w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 1272w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fB9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png" data-attrs="{&quot;src&quot;:&quot;/img/1*cd2jj2CXrpfbsgO3alPTyw.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;March 2017&nbsp;line-up&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="March 2017&nbsp;line-up" title="March 2017&nbsp;line-up" srcset="https://substackcdn.com/image/fetch/$s_!fB9O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 424w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 848w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 1272w, https://substackcdn.com/image/fetch/$s_!fB9O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*cd2jj2CXrpfbsgO3alPTyw.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><p>Notice the new $199 entry-point price for iPad is now possible with the iPad mini 2 capable of offering a great experience and might become the go-to tablet for kids instead of the iPod touch.</p><p>This would mean no new iPads for now, but the pricing across the line-up is very tempting. Notice the iPad Pro 9.7&#8221; sits in the sweet spot $499 price-point that iPad used to always be at. It is also the most capable device in the line-up.</p><p><strong>But, look at what happens next year:</strong></p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pq6o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pq6o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 424w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 848w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 1272w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pq6o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png" data-attrs="{&quot;src&quot;:&quot;/img/1*VkjfYwemg7jgPpUzUapYJQ.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;iPad line-up by this time next&nbsp;year&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="iPad line-up by this time next&nbsp;year" title="iPad line-up by this time next&nbsp;year" srcset="https://substackcdn.com/image/fetch/$s_!pq6o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 424w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 848w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 1272w, https://substackcdn.com/image/fetch/$s_!pq6o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*VkjfYwemg7jgPpUzUapYJQ.png 1456w" sizes="100vw"></picture><div></div></div></a><p>Apple introduces iPad Pro 10.5&#8221; in either October 2017 or March 2018. Now the iPad Pro 10.5&#8221; does to the iPad mini what the iPad Pro 12.9&#8221; did to the iPad Air. It takes the number of pixels and doubles them. Hence it is two iPad minis stacked side by side.</p><p>This means that the iPad Pro 12.9&#8221; and the iPad Pro 10.5&#8221; have the exact same resolution &#8212; just like the iPad Air and iPad mini have always had. Only the pixel densities are different.</p><p>The line-up has this sense of purpose now:</p><ol><li><p>Air/mini are the mainstream models with the ability to run <strong>one</strong> full size app at a time in portrait.</p></li><li><p>Pro models run <strong>two</strong> full size apps while in landscape, with support for Apple Pencil.</p></li></ol><p>In both cases, the difference in the device size is only a function of the pixel density and not the actual pixels.</p><div><hr></div><p><em>Do you agree? Does this seem like something Apple might do? Let me know in a response below, otherwise please hit Recommend!</em></p>]]></content:encoded></item><item><title><![CDATA[The Boy called Roy]]></title><description><![CDATA[A short story about focus and being observant &#8212; or what some people call: being obsessively compulsive.]]></description><link>https://paramaggarwal.substack.com/p/the-boy-called-roy</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/the-boy-called-roy</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 12 Mar 2017 09:27:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>A short story about focus and being observant &#8212; or what some people call: being obsessively compulsive.</h2><p>&#8220;Mr Wilstkirkson.&#8221;</p><p>&#8220;Oh, dear boy. Why don&#8217;t you call me by my shorter name, Willy, like everyone does?&#8221;</p><p>&#8220;Because it&#8217;s your name.&#8221;</p><p>&#8220;But, its so long. I use Willy everywhere possible.&#8221;</p><p>&#8220;Your tea is ready Mr. Wilstkirkson.&#8221; said Roy, as he didn&#8217;t find it a reasonable discussion.</p><p>&#8220;Ah, let it be, you will get bored someday. Please keep it on my study. I need to make a phone call.&#8221;</p><p>Roy kept the tea cup on the study. But not just keep it, he placed it. As in, meaningfully, at a certain spot on the table. He thought that placing it in the center didn&#8217;t look good. Placing it to the sides would risk the cup falling. So he placed it towards the right, but not near the edge, thinking that Mr. Wilstkirkson drinks his tea with his right hand so the placement was meaningful. He then went off to wash the dishes; the cup placed on the table like it was a still life photography subject or a museum artifact, but only steaming and live.</p><p>Roy had always been like this. He thought about everything, tried to find meaning in everything. He had been working with Mr. Wilstkirkson for a year now. He loved the job, as Mr. Wilstkirkson was mostly out of the house and had no family, there was not much to do and a good pay. It gave him time to think. And that&#8217;s what he did. He had reached the kitchen, and started washing the dishes.</p><p>He wondered why Mr. Wilstkirkson wasn&#8217;t drinking the tea while talking on the phone. He weighed in the benefits and the problems. He felt that it was better because it wouldn&#8217;t cool off. Also it would keep the throat wet while talking. The only issue he found with it was if he had to speak just after he took a sip. But he quickly dismissed this issue, by concluding that he could have a sip when the other person was talking.</p><p>Involuntarily, his mind had made note of the conclusion and he thought that he would tell Mr Wilstkirkson about it when possible.</p><p>As soon as he had finished washing his first dish, he heard Mr. Wilstkirkson speaking in the other room.</p><p>&#8220;It was really nice speaking to you, Mrs. Mirson. I am glad you took the time to address my concern. It has been so kind of you.&#8221;</p><p>Roy&#8217;s mind was racing again. He wondered what Mr. Wilstkirkson actually wanted to say out of all this. He felt that this was just not meaningful. It was not what Mr. Wilstkirkson really wanted to say. He was so sure about this, because Mr. Wilstkirkson was the landlord and Mrs. Mirson and her family had not payed their rent for three months now. He made a mental note to try to understand this from Mr. Wilstkirkson some time. He had to make sense of why people did what they did. Try to understand why things happened the way they happened. It had always been important to do so.</p><p>&#8220;Yes?&#8221;, said Mr. Wilstkirkson.</p><p>Roy realized that he had come out into the other room, where Mr. Wilstkirkson was talking on the phone. He thought why he was there. He tried remembering something he knew he had remembered to remember.</p><p>&#8220;Mr. Wilstkirkson,&#8221; he finally said after he was sure that he had just one important thing to ask. &#8220;Why do people have tea in a cup?&#8221;</p><p>Mr. Wilstkirkson was confused. &#8220;Oh, yes, my tea. Thanks for reminding. You kept it on my study right? Please get it here.&#8221; He was always astonished by these sudden weird questions that Roy put forward, but he had believed that he was just joking and never really paid attention. Roy had been a very loyal servant and he was happy to have him. He trusted him. Roy always seemed lost in his thoughts, but that had never been much of a problem. Except the time he burnt a precious shirt while ironing it. Or when he dropped the Egyptian tea cup thinking that he had handed it over. Or&#8230; But he was just fine.</p><p>Roy remembered the tea he had placed on the study and went off to get it, forgetting the question at hand. It was common with him. He had lots to think about, but never did he really remember any of it. it just came and went. Kept his mind busy. He never was idle. At least not mentally. Sitting at the bus stop, he noticed how people spoke on the phone, how they reacted when the bus arrived and how they passed time while they waited. He was busy. There was much to think about. He was proud of himself for this. He was a good observer and he noticed things. That was what was important to him.</p><div><hr></div><p><em>This story is a metaphor about focus, about being observant, about doing only what matters to you &#8212; and then doing all of those together, living each moment deeply and fully.</em></p>]]></content:encoded></item><item><title><![CDATA[Attempting to Visualize a Convolutional Neural Network in Realtime]]></title><description><![CDATA[While replicating the End-to-End Deep Learning approach for Self- Driving Cars, I was frustrated by the lack of visibility into what the network is seeing.]]></description><link>https://paramaggarwal.substack.com/p/attempting-to-visualize-a-convolutional-neural-network-in-realtime</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/attempting-to-visualize-a-convolutional-neural-network-in-realtime</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sun, 05 Mar 2017 10:55:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!H6Qh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H6Qh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H6Qh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 424w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 848w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 1272w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H6Qh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png" data-attrs="{&quot;src&quot;:&quot;/img/1*bjyz0mHGx9T98fYzWl62CA.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H6Qh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 424w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 848w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 1272w, https://substackcdn.com/image/fetch/$s_!H6Qh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*bjyz0mHGx9T98fYzWl62CA.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><h2>While replicating the End-to-End Deep Learning approach for Self- Driving Cars, I was frustrated by the lack of visibility into what the network is seeing. I built a tool to fix this.</h2><p>The simulator and the python script running the neural network communicate over a websocket connection. I decided to write a small browser app that would also connect to the python script over another websocket and collect some additional data that I can visualize.</p><p>Here is what I was able to come up with:</p><a class="image-link image2" target="_blank" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E" data-attrs="{&quot;src&quot;:&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;image to preserve aspect ratio of the iframe&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="image to preserve aspect ratio of the iframe" title="image to preserve aspect ratio of the iframe" srcset="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 424w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 848w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1272w, data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 undefined undefined'%3E%3C/svg%3E 1456w" sizes="100vw"></picture><div></div></div></a><p>On the right we have our Udacity Simulator running. On the left is my little React app that is visualizing all the outputs of the convolutional layers in my neural network.</p><p>As you can see, it runs in realtime along with controlling the car. It was a good exercise, but I have my doubts on the usefulness of this. It is still not clear how the network is making its decisions based on these.</p><p>You can find the code here:</p><p><strong><a href="https://github.com/paramaggarwal/CarND-Behavioral-Cloning-P3" title="https://github.com/paramaggarwal/CarND-Behavioral-Cloning-P3">paramaggarwal/CarND-Behavioral-Cloning-P3</a></strong></p><p><a href="https://github.com/paramaggarwal/CarND-Behavioral-Cloning-P3" title="https://github.com/paramaggarwal/CarND-Behavioral-Cloning-P3">_CarND-Behavioral-Cloning-P3 - Starting files for the CarND behavioral cloning project (P3)_github.com</a></p><p>This article is a work in progress on the overall goal of gaining better visibility into neural networks. Let me know your thoughts in the comments on what else I could try towards this goal!</p>]]></content:encoded></item><item><title><![CDATA[What’s Inside these $6 Wireless Earphones?]]></title><description><![CDATA[We open them up and look inside at some of the electronics and marvel at today&#8217;s age of ubiquitous wireless earphones!]]></description><link>https://paramaggarwal.substack.com/p/what&apos;s-inside-these-dollar6-wireless-earphones</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/what&apos;s-inside-these-dollar6-wireless-earphones</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Fri, 03 Feb 2017 12:58:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BuIa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BuIa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BuIa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BuIa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*HeKSYbktJs0lERPGrCIYzQ.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Just. Six.&nbsp;Bucks.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Just. Six.&nbsp;Bucks." title="Just. Six.&nbsp;Bucks." srcset="https://substackcdn.com/image/fetch/$s_!BuIa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 424w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 848w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!BuIa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*HeKSYbktJs0lERPGrCIYzQ.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><h2>We open them up and look inside at some of the electronics and marvel at today&#8217;s age of ubiquitous wireless earphones!</h2><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2ggu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2ggu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2ggu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*ewC88n6VGZSbMOOVUADn_g.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;: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_!2ggu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2ggu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ewC88n6VGZSbMOOVUADn_g.jpeg 1456w" sizes="100vw"></picture><div></div></div></a><p>I have been wanting to try some lightweight bluetooth earphones since a while, but they have always been in the $99 range and higher. Recently I came across these on AliExpress and they had really good ratings. So I gave them a shot.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RKl3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RKl3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RKl3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*Q07mWHpI80kiQdzvfQYOyg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;: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_!RKl3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RKl3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*Q07mWHpI80kiQdzvfQYOyg.jpeg 1456w" sizes="100vw"></picture><div></div></div></a><p>They were just $ 6, inclusive of shipping, so I ordered them. I&#8217;m glad I did! They are simply amazing. They do their job well and the audio is decent. My main take-away here was that I was looking at wireless earphones all wrong.</p><p>Till you try them out, our assumption is that wireless earphones will simply cut out the wires &#8212; so what? But it turns out that it makes a world of difference.</p><p>For example,</p><ol><li><p>I don&#8217;t need to think twice before standing up from the desk.</p></li><li><p>If I am watching something on the phone, I don&#8217;t have this cable dangling from the phone and I am able to hold my phone more comfortably.</p></li><li><p>I&#8217;m able to keep the phone aside for a bit without having to worry about yanking earphones out of my ear.</p></li></ol><p>It feels like we were tied to a leash and somebody just removed it!</p><p>Let&#8217;s look inside.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e56G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e56G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e56G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e56G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e56G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e56G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*dZgRjk8nVeUZJoxxUmyYjw.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e56G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 424w, https://substackcdn.com/image/fetch/$s_!e56G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 848w, https://substackcdn.com/image/fetch/$s_!e56G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!e56G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*dZgRjk8nVeUZJoxxUmyYjw.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>That&#8217;s it! Just one chip. Notice the fray wires going into the left and right earphones. The micro-usb port along with the tiny charging IC beside it. And the antenna on the bottom right for Bluetooth &#8212; etched right into the PCB itself for cost and simplicity!</p><p>Even the battery is really tiny, the size of this board itself. It boggles my mind about the size and cost of today&#8217;s electronics! Companies charging above $99 for such earphones are not doing so because of the cost of the parts, but because it is hard to make really great earphones!</p><p>Things like wireless performance, audio resonance and battery life are challenging problems. It is easy to put together a working wireless earphone today, but really hard to make great ones.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZKo0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZKo0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZKo0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg" data-attrs="{&quot;src&quot;:&quot;/img/1*ABcoskxiztNrPU9jgeusWg.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZKo0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZKo0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2F1*ABcoskxiztNrPU9jgeusWg.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>The back side of the PCB is just buttons and the tiny black microphone. Notice the cutout for the antenna on the other side. So much going on in so little space.</p><p>So there you have it! A quick look at where we are today in terms of Bluetooth earphones. Cheap, small and awesome!</p><div><hr></div><p><em>I would recommend getting</em> <em><a href="https://www.aliexpress.com/item/Newest-Sport-wireless-Bluetooth-4-1-headphones-earphone-headset-Auriculares-Bluetooth-for-outdoor-Sports-phones-computers/32556750497.html">these here</a></em> <em>and trying them out. It&#8217;s just $6 incl. of shipping on AliExpress.</em></p>]]></content:encoded></item><item><title><![CDATA[Intricacies of Traffic Sign Classification with TensorFlow]]></title><description><![CDATA[Diving into the technicalities of data pre-processing and visualization when classifying traffic sign images with convolutional neural networks.]]></description><link>https://paramaggarwal.substack.com/p/intricacies-of-traffic-sign-classification-with-tensorflow</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/intricacies-of-traffic-sign-classification-with-tensorflow</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Tue, 31 Jan 2017 09:36:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Diving into the technicalities of data pre-processing and visualization when classifying traffic sign images with convolutional neural networks. This gives upto 97.5% validation accuracy and 91.2% test accuracy.</h2><p><em>This technical post is the complete opposite of my</em> <em><a href="https://medium.com/@paramaggarwal/neural-network-tuning-with-tensorflow-cc14a23f132c">original philosophical post</a></em> <em>about my experience with this project.</em></p><h3>The Problem</h3><p>Given a dataset of 30,000 traffic sign images with dimensions of 32x32, we are supposed to build a model that can predict these among 43 different possible sign types. We&#8217;ll start from scratch with a directly connected model, slowly introducing hidden layers and then eventually use a Convolution Neural Network. We&#8217;ll visualize how each change will affect our accuracy rates.</p><h3>Data Pre-processing</h3><p>It is helpful to perform some mathematical operations on the input data to have it work well with the rest of the process.</p><h4>One-hot Encoding</h4><p>We generally encode the labels into an array with only one element set to <code>1</code>, this basically says that the probability of that occuring is 1, while others is <code>0</code>. We pair it with the <code>tf.nn.softmax_cross_entropy_with_logits()</code> method.</p><p>But, since TensorFlow 0.8, if we have a unique label for each label, then we can instead use <code>tf.nn.sparse_softmax_cross_entropy_with_logits()</code> which directly takes our labels array and is faster.</p><h4>Histogram Equalization</h4><p>A typical photo has the colours and brightness limited to a certain range. We can use this method to equalize the brightness levels of photos. I like to convert the image to grayscale and then apply a histogram normalization.</p><pre><code><code>import cv2 bw = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) equ = cv2.equalizeHist(bw) ```![Visualization of black and white and histogram equalized versions compared to original.](/img/1*pHyGGDIGjOryJFyHHAB9EQ.png) #### Normalisation Generally we normalize the input colour values down to -0.5 to +0.5 compared to the original of 0 to 255. Here, it is more important that the mean be around 0. It is ok to go from -1 to +1 also. Don&#8217;t do `x_train = (x_train&#8202;&#8212;&#8202;128.0) / 255.0`, as this is not as good as doing `(x_train / 255.0)&#8202;&#8212;&#8202;0.5`. Very subtle difference, but makes much more sense. You can even go ahead and do `(x_train&#8202;&#8212;&#8202;np.mean(x_train)) / 255.0` if you are feeling adventurous. With more trial and error, I saw best performance by letting the values run between -128 and +128. Hence, my solution simply does `x_train&#8202;&#8212;&#8202;np.mean(x_train)`to normalize the data. I believe this is related to losing fidelity because of forcing the input to lie in a very tiny range of -0.5 to 0.5. Let me know if you have experienced otherwise. I think the key is to have a mean close to 0. Regarding min and max values I have seen different people recommend different things so you should try some variations. ### Data Augmentation There are three reasons to generate more data by augmenting it. 1.  We want to have more data to train with, this always helps. 2.  We want data with variations on rotation and translation so that the model can generalize better and be agnostic to specific positioning of the sign. 3.  Also, certain classes are under-represented in the data, by augmenting and adding data, we can give more samples to these minorities. ![](/img/1*oHPth2wN-CJzbVwIPqKdSA.png)![We want to equalize the representation of classes in our data. \[Before/After\]](/img/1*X3waH4jxI6IFy-ChDoucjg.png) #### Translation I was initially translating the images within +-5 pixels which I later learned were too much for the capabilities of my model. We need much larger convolution layers if we want to make it very agnostic to position of the sign. Currently, the model expects a cropped version of the sign, so I only translate +-2 pixels, which is still quite a bit given image sizes of 32x32.</code></code></pre><p>scipy.ndimage.interpolation.shift(image, [random.randrange(-2, 2), random.randrange(-2, 2), 0])</p><pre><code><code>#### Rotation A similar realization struck me once I visualized my augmentations. I was rotating +-20 degrees, which is too much! I eventually reduced this to just be +-10 degrees.</code></code></pre><p>scipy.ndimage.interpolation.rotate(image, random.randrange(-10, 10), reshape=False)</p><pre><code><code>### Neural Network This is what we are here for! Let&#8217;s get to the main course. I logged the performance of my network for each change I made, now I get to share it with you! ![Before I corrected my over-augmentation of data, this is what I started&nbsp;with.](/img/1*5wypraMewwdNUOT39d7oeg.png) First let&#8217;s look at my experimentation with having a basic neural network with just a single hidden layer. As you can see above, even flattening and connecting the image data to output directly gives you are baseline of 70%! Once we add a hidden layer, we start overfitting&#8202;&#8212;&#8202;even a dropout doesn&#8217;t help. By continuously reducing the width of the hidden layer, we get good results at around 48 neurons. I brief experimentation with adding another layer also didn&#8217;t so much benefit. While I was doing this, I added visualisation to my augmented data and realized that I was translating and rotating them a bit too much. After being more conservative while augmenting the images, we begin our journey. ![After correcting the over-augmentation, we begin to see nice accuracy, with very basic networks!](/img/1*-vi19j9WZrFBV002nFhuVQ.jpeg) You can immediately see that the directly connected model jumps from 70% to 85% after being more conservative about augmenting the data. I quickly try the variation with a single hidden layer and we are already above 90%&#8202;&#8212;&#8202;this is going great! I also experiment with going overboard on the hidden layer, but keeping it in control with a dropout of 0.5&#8202;&#8212;&#8202;this also gives good results. But trying to add one more hidden layer wasn&#8217;t very helpful. At this point, we now look towards adding convolution layers to our model to try to move into the 95% territory. This is when I realized I stepped on burning coal. ![Trying to get the convolution layer depths&nbsp;right.](/img/1*EZVCrx26s-ImqNH3MwT2Pw.png) First I tried out different depths for the convolution layers. I noticed that smaller depths actually helped the network. ![Making the fully connected layers work&nbsp;right.](/img/1*G8sWDM_Hz2OTfuMpWEL3GA.png) Here again, I learned that smaller layer width actually helped the network. If the layer width gets too high, we could try to improve it by using dropouts, but a smaller network is probably going to generalize better than a large one with dropouts. ![I think I want to&nbsp;die.](/img/1*qQuPiqjLN3J7C6GrOxpApA.png) I went crazy by this point, nothing I would do would push me into the 90% range. I wanted to cry. A basic linearly connected model was giving me 85% and here I am using the latest hotness of convolution layers and not able to match. I took a nap. The next day, I approached this differently. I tried to run my network without my pre-processing and augmentation steps, and it did better on a standard LeNet model. I tweaked my normalization steps and realized that forcing input to be in -0.5 to +0.5 range was actually hurting it a lot! So I immediately made it only be in the -128 to 128 range and I was quickly friends with the 90% circle. Success! ![](/img/1*EnrXaMtun9m5Hv8zeqw3Gw.png) Here is my final model. I am surprised how tiny it is! A small amount of dropout adds redundancy to the fully connected layers making an interpretation of the input. Again, the widest this network goes is 128&#8202;&#8212;&#8202;that&#8217;s so awesome! ### Visualization Use matplotlib&#8217;s `subplot()` function to be able to render images side by side for comparison. This helped me a lot in being able to make grid&#8217;s of visualizations for comparing augmented versions of images. Also, visualize the confusion matrix on the test set. Notice that the model is weak at learning the classes in the 0 to 10 range. With this understanding, we can dig deeper and maybe add more training data in that dataset. ![](/img/1*4pQZhNJ7_NfkXXs2yQxFbw.png) Pick out some random images from your test set and visualize the output of the neural network. What we are looking for are singular peaks that say that the model is confident about a particular class. Unfortunately, our model can&#8217;t decide what it wants for lunch. In most cases, it is predicting upto 3 different classes for each input. Very indecisive. ![](/img/1*uHcYtfdi0lbMkk1IVTfmHg.png) While I haven&#8217;t tried it out yet, use of TensorBoard is recommended. I look forward to using it in a future project. This will help us visualize the weights while training as well as the convolution filters. Display the time taken for each Epoch to understand the complexity of your network. My network just takes 5 seconds on an AWS GPU and 35 seconds on my quad-core MacBook Pro. Use smaller epoch counts when tuning, as you can get a general idea of the performance within the first three epochs. ### Conclusion Made it alive on the other side of the burning coal. My feet hurt, but I am better prepared to face neural networks now. No fear. I have shared the code and model on GitHub: [**paramaggarwal/CarND-Traffic-Sign-Classifier-Project**   _CarND-Traffic-Sign-Classifier-Project - Classify Traffic Signs._github.com](https://github.com/paramaggarwal/CarND-Traffic-Sign-Classifier-Project "https://github.com/paramaggarwal/CarND-Traffic-Sign-Classifier-Project")[](https://github.com/paramaggarwal/CarND-Traffic-Sign-Classifier-Project) --- _Much thanks to_ [_Mehdi Sqalli_](https://medium.com/@MSqalli)_&#8217;s_ [_project code_](https://github.com/MehdiSv/TrafficSignsRecognition/blob/master/final_Traffic_Signs_Recognition.ipynb)_,_ [_Vivek Yadav_](https://medium.com/@vivek.yadav)_&#8217;s_ [_project code_](https://github.com/vxy10/p2-TrafficSigns/blob/master/Traffic_signs_Col_val_final2.ipynb) _and_ [_Jeremy Shannon_](https://medium.com/@jeremyeshannon)_&#8217;s_ [_project code_](https://github.com/jeremy-shannon/CarND-Traffic-Sign-Classifier-Project/blob/master/Traffic_Sign_Classifier.ipynb) _for this project that guided me to do better and inspired me to share my learnings like they did._ export const _frontmatter = {"title":"Intricacies of Traffic Sign Classification with TensorFlow","description":"This technical post is the complete opposite of my original philosophical post about my experience with this project. Given a dataset of 30,000 traffic sign images with dimensions of 32x32, we are&#8230;","date":"2017-01-31T09:36:39.833Z","categories":["Machine Learning","Neural Networks","Deep Learning","Artificial Intelligence","Self Driving Cars"],"published":true,"canonicalLink":"https://medium.com/computer-car/intricacies-of-traffic-sign-classification-with-tensorflow-8f994b1c8ba"}</code></code></pre>]]></content:encoded></item><item><title><![CDATA[Fix It Once]]></title><description><![CDATA[A person fixing issues is generally valued more than someone who is anticipating them before hand &#8212; or better &#8212; anticipating them early enough to not introduce them into the system itself.]]></description><link>https://paramaggarwal.substack.com/p/fix-it-once</link><guid isPermaLink="false">https://paramaggarwal.substack.com/p/fix-it-once</guid><dc:creator><![CDATA[Param Aggarwal]]></dc:creator><pubDate>Sat, 28 Jan 2017 13:05:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OF4t!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc133f07-d32a-4693-b903-fa5b9d043ae6_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A person fixing issues is generally valued more than someone who is anticipating them before hand &#8212; or better &#8212; anticipating them early enough to not introduce them into the system itself. It&#8217;s because the latter is very hard to measure.</p><p>That means me doing a lousy job at building something can pay someone else&#8217;s salary who later fixes it. My incentive in turn, is also to only fix issues and it is a vicious cycle. I&#8217;m not thinking of building solutions that make the problems irrelevant.</p><p>Is there a better way around, than actually fixing them? Yes, to disrupt the problem. To make it irrelevant.</p><p>Sounds familiar? Not in the domain of fixing a company&#8217;s software. Or maybe think again. Disruption redesigns systems. Only these systems are at a human level. They change society. They make entire industries irrelevant.</p><p>Similarly redesigning a company&#8217;s systems can disrupt the existing problems. A popup window being bug prone and having compatibility issues. But hey, does that popup window even need to be there?</p><p>Isn&#8217;t redesigning bad, you say? You wouldn&#8217;t redesign the wheel. But that&#8217;s where the misunderstanding lies. You would not reinvent the wheel, but you could redesign a particular aspect of your factory&#8217;s gear system.</p><p>Design is thinking. And when you think about something deeply, you ask questions. You think how. You think what. You even begin to question why.</p><p>Rethinking might not mean doing it all over again it means understanding what you already have and appreciating what works and what doesn&#8217;t. Then you attempt to amplify your understanding.</p><p>You improve the essentials and discard the inessential. Note, this is different from fixing issues, because fixing issues only involves the knowledge of the issue itself.</p><p>So next time you see a problem, wonder does the problem even deserve to exist. Fixing an issue in the system is like applying patches. Till when?</p>]]></content:encoded></item></channel></rss>